標籤:

矽谷之路6:Microservices 是自由貿易

這一期,我們談談 Microservices(微服務)。微服務是什麼?大家熟悉的Docker是一個具體的例子。企業軟體設計大拿Martin Fowler說微服務是一種為了整套的獨立可部署的服務而設計的架構 。Lightbend的CTO和聯合創始人Jonas Bonér提到微服務能夠像建立團隊一樣建立我們的系統。在團隊中,我們給員工分配不同的職責,保證他們能夠獨立自主的完成工作。馮沁原老師告訴我們Microservices是一群通過HTTP溝通的獨立自治的需求模塊。

具體來說,從開發的角度看,將各種服務放在一起,牽一髮而動全身的是胖服務,如左圖。右圖是微服務,每個服務相互獨立,這樣的優勢是能夠使用不同的語言開發。

從部署的角度看,每個機器里包含所有的服務;而在微服務里,我們可以把不同的服務部署在多個機器上,也可以把相同的服務部署在同一台機器上。

可以看出,獨立性是胖服務和微服務的一個重大的區別。從大的分類來看,Microservices不是一個新的概念,它是Service-oriented architecture(SOA)的一個子集。

既然微服務不是一個新的概念,那麼它火起來必然有一定的道理。下面,我們來說說微服務的七個趨勢,看看它為何如此受人矚目:

1.組件是服務

組件有兩個特點:獨立可替換的,獨立可升級的。比如電腦的內存條,可以替換成新的,也可以升級成更大容量。

實現組件有兩種方式,一種是基於庫。另一種就是基於服務,也就是組件即服務。舉個簡單的例子來說明獨立可升級的優點。比如某個庫升級後依賴於Java8,而其他庫需要Java7。如果基於庫很難實現這一要求。而利用docker部署上不同的Java版本則很容易。

2.基於需求模塊的團隊

團隊不再基於功能上的劃分,而是針對某個具體需求,如orders,shipping和類目。

3.弱化管道強調終端

將原先管道中的功能,如拆解消息等,放到每個單獨模塊上,從而將通信簡單化,弱化管道。

4.分散管理

與左側通過統一的方式(胖服務)訪問資料庫不同,微服務可以將各個資料庫單獨分開,不同的用戶通過不同的微服務訪問需要的數據。在這裡,不僅僅微服務在拆分,資料庫也在拆分。具體可看上集:矽谷之路 5 NoSQL就是把東西放在一起。

5.部署自動化

以docker為例,我們可以實現持續的在系統上部署我們的實例,部分升級這些實例。

6.為失敗設計

簡單的計算,如果每台機器成功率是0.99,那麼十台機器的成功率是0.90,而一百台機器只有0.37。因此,部署多機器,失敗在所難免。失敗是設計需要的考慮的重點之一。

7.進化的設計

因為微服務是相互獨立的,所以每個服務是可以進行獨立的進化。接下來,我們來進一步比較胖服務和微服務:

從上面的敘述,我們可以看出胖服務相當於一個中心控制的集權國家。在建國初期,控制系統的一切是很重要的。而在微服務就像自由貿易的市場經濟國家,它可以在中後期給國家注入新的活力。因此,微服務不是萬能的。早期的時候,我們仍然要使用胖服務,後期可以用微服務。

大家在面對這些層出不窮的新技術時,要了解其本源,知其優劣,不可盲從,巧用妙用。來一張圖:仰望星空,腳踏實地。

總結: Microservices是一群通過HTTP溝通的獨立自治的需求模塊

本文整理作者:Chen Tong,完整視頻國內:矽谷之路6—Microservices是自由貿易 國外:BitTiger

更多精彩內容, 請掃描下面二維碼,關注微信公眾賬號「論碼農的自我修養」


推薦閱讀:

Spring Cloud構建微服務架構(四)分散式配置中心(續)
使用 Docker 構建微服務架構,服務與服務之間的通信有什麼最佳實踐?
微服務框架 spring cloud 和 dubbo 有什麼區別?
SOA和微服務架構的區別?

TAG:微服务架构 |