- 微服務容器化開發實戰
- 尹為強
- 979字
- 2020-10-30 15:17:06
1.3 微服務架構
微服務架構是一種架構模式,它提倡將單一應用程序劃分成一組小的服務,各個服務之間互相協調、互相配合,為用戶提供最終價值。每個服務運行在獨立的進程中,服務與服務之間采用輕量級的通信機制互相協作,通常是基于HTTP協議的RESTful API。每個服務都圍繞具體業務進行構建,并且能夠被獨立地部署到生產環境、類生產環境等。這就是Martin Fowler在Microservices中給出的微服務架構的定義。
以筆者參與的訂單系統項目為例,微服務架構如圖1-3所示。

圖1-3 微服務架構
微服務架構和單體架構具有非常明顯的區別。例如,微服務架構的審單、開戶、發貨、數據庫服務、日志服務和公共服務等不再是功能模塊,而是能夠單獨運行的微服務程序。每個微服務程序可以運行多個實例,具備簡單、快捷的橫向擴容能力。另外,前后端代碼完全物理分離,前端代碼包括的靜態資源直接部署在Nginx上即可。
提示:前后端分離分為邏輯分離和物理分離:邏輯分離一般是指前后端代碼從業務邏輯和功能劃分上做到了代碼結構上的分離,但是程序打包發布時通常還是一起發布運行的;而物理分離不但前后端代碼結構做到了分離,而且前后端代碼可以分別獨立打包和獨立部署,這時的前端代碼往往只包含HTML、CSS、JS、PNG、JPEG等靜態代碼文件和資源文件,可以部署在Nginx或Apache服務器上,并且可以使用公有云廠商提供的CDN對靜態資源進行加速。
下面簡要介紹微服務架構的特點、優點和缺點。
1.3.1 微服務架構的特點
(1)系統服務層拆分抽取為一個一個的微服務。
(2)微服務遵循單一功能原則。
(3)微服務之間采用RESTful等輕量協議進行通信。
1.3.2 微服務架構的優點
(1)開發簡單:開發人員只需要關注自己負責的微服務工程,業務和技術雙重聚焦。
(2)開發快捷:服務拆分粒度更細,有利于資源重復利用,提高開發效率,產品迭代周期更短。
(3)技術棧靈活:可以使用Java、Python、Go等多種語言開發微服務應用。
(4)服務獨立無依賴:基于HTTP協議的微服務,各個服務之間沒有依賴關系,降低了系統復雜度。
(5)獨立按需擴展:根據微服務調用頻次進行擴容和縮容,調用頻次高的微服務擴容。
(6)可用性高:多節點部署,大大提高了系統的可用性。
1.3.3 微服務架構的缺點
(1)多服務運維難度大幅度提升。
(2)系統部署依賴度提高,服務治理成本增加。
(3)服務間通信成本增加。
(4)數據一致性挑戰難度增加。
(5)技術成本高,團隊挑戰難度增加。
可以用4個詞概括微服務架構的特點:微小、獨立、輕量、松耦合。
- Aftershot Pro:Non-destructive photo editing and management
- Windows phone 7.5 application development with F#
- 圖解西門子S7-200系列PLC入門
- Applied Unsupervised Learning with R
- Unity 5.x Game Development Blueprints
- 計算機組裝與維護(第3版)
- 單片機系統設計與開發教程
- Internet of Things Projects with ESP32
- BeagleBone Robotic Projects
- 圖解計算機組裝與維護
- Spring Cloud實戰
- FPGA實驗實訓教程
- Arduino項目案例:游戲開發
- The Deep Learning with PyTorch Workshop
- 創客電子:Arduino和Raspberry Pi智能制作項目精選