官术网_书友最值得收藏!

1.3 微服務架構

微服務架構是一種架構模式,它提倡將單一應用程序劃分成一組小的服務,各個服務之間互相協調、互相配合,為用戶提供最終價值。每個服務運行在獨立的進程中,服務與服務之間采用輕量級的通信機制互相協作,通常是基于HTTP協議的RESTful API。每個服務都圍繞具體業務進行構建,并且能夠被獨立地部署到生產環境、類生產環境等。這就是Martin Fowler在Microservices中給出的微服務架構的定義。

以筆者參與的訂單系統項目為例,微服務架構如圖1-3所示。

img

圖1-3 微服務架構

微服務架構和單體架構具有非常明顯的區別。例如,微服務架構的審單、開戶、發貨、數據庫服務、日志服務和公共服務等不再是功能模塊,而是能夠單獨運行的微服務程序。每個微服務程序可以運行多個實例,具備簡單、快捷的橫向擴容能力。另外,前后端代碼完全物理分離,前端代碼包括的靜態資源直接部署在Nginx上即可。

img提示:前后端分離分為邏輯分離和物理分離:邏輯分離一般是指前后端代碼從業務邏輯和功能劃分上做到了代碼結構上的分離,但是程序打包發布時通常還是一起發布運行的;而物理分離不但前后端代碼結構做到了分離,而且前后端代碼可以分別獨立打包和獨立部署,這時的前端代碼往往只包含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個詞概括微服務架構的特點:微小、獨立、輕量、松耦合。

主站蜘蛛池模板: 临猗县| 云南省| 桐梓县| 宜都市| 皋兰县| 浠水县| 花莲县| 阜阳市| 蒙山县| 边坝县| 锡林郭勒盟| 会同县| 达州市| 莎车县| 巴林左旗| 临海市| 修武县| 鄱阳县| 资溪县| 德清县| 漳浦县| 枣阳市| 太湖县| 土默特右旗| 莒南县| 上杭县| 寿阳县| 武川县| 广昌县| 五常市| 石城县| 镇赉县| 宜君县| 汕头市| 原阳县| 山西省| 兴安盟| 深圳市| 隆化县| 临澧县| 黄骅市|