微服務技術架構剖析及微服務帶來的優勢

框架之初爲了快速迭代出產品,而選擇簡單的技術架構,構建單體應用。這些架構可以適應初期業務的快速發展,但是隨着業務變得越來越複雜,會發現這些架構越來越難支撐業務的發展,各業務模塊相互調用,業務邊界越來越模糊,同時對系統更正性、完善性、預防性等維護工作越來越難,往往牽一髮而動全身,最終可能造成測試工作不足,上線後才發現各種bug另外會出現在一個類中寫好幾千行代碼,一個方法中到處都是if else語句,後面介入的人員幾乎無法理解這些代碼,到最後產品越來越難迭代,只能推翻重做。

微服務是當前業界的一大趨勢,原理就是將單一職責的功能模塊獨立化爲子服務,降低服務間的耦合,服務間互相調用。單體應用將所有功能都放在一個系統中,並且只能通過整體複製的方式進行橫向擴展。微服務將每個功能都分割成一個一個服務,然後在分佈式集羣中按需進行橫向擴展。

1、微服務技術架構

1.1、去中心化技術治理

每個微服務技術架構可以不同、開發語言可以不同,新需求作爲一個獨立微服務設計、構建,對其它微服務沒有影響,實現成本低。單體應用技術架構升級成本高,需要設計所有模塊。

項目初期根據統一架構A進行微服務A/B/C設計、構建,隨着項目進行微服務X/Z採用新的架構B進行設計、構建。在滿足需求的情況下技術架構儘量少,並且由統一的架構團隊維護。

 

1.2、去中心化數據管理

每個微服務都有獨立數據庫,根據數據庫訪問特點、數據量特點可以選擇不同的數據庫管理系統。

例如客戶服務/商品服務數據量不大,但需要經常讀取,可以採用MySQL+Redis組合。交易服務對應交易數據,具有高併發、事務性強特性,可以採用橫向/縱向切分,分佈到多個數據庫中。經營分析/業務查詢服務需要海量數據查詢,易採用elastic進行數據索引,NoSQL+大數據分析平臺。

三種數據庫類型特點:

(1)關係型數據庫:二維表形式存儲數據庫,具有強一致性,二維表存儲結構,代表數據有MySQL、Oracle等。

(2)NoSQL數據庫:適合分佈式,一致性較弱,key-value存儲結構。

(3)NewSQL數據庫:既能保證一致性,又能進行分佈式,典型的NewSQL有TiDB,完全兼容MySQL(存儲過程、觸發器除外)。

2、微服務優勢及帶來的問題

微服務架構將原來耦合在一起的複雜業務拆分爲各單個服務,服務間通信採用輕量級通信機制,規避了原本複雜度無止境的積累。

每一個微服務專注於單一功能,並通過定義良好的接口清晰表述服務邊界;每個服務開發者只專注服務本身,通過使用緩存、DAL等各種技術手段來提升系統的性能,而對於消費方來說完全透明。微服務的核心要素在於服務的發現、註冊、路由、熔斷、降級、分佈式配置。

2.1、微服務優勢

(1)易於開發和維護:基於領域模型對服務進行拆分,一個微服務只會關注一個特定的業務功能,所以業務清晰、代碼量較少。開發和維護單個微服務相對簡單。

(2)局部修改容易部署:單體應用只要有修改,就得重新部署整個應用。對微服務架構來說,如果某個微服務進行升級,只需要重新部署這個服務即可。

(3)服務治理:微服務不只是簡單的應用劃分,還包括服務註冊/發現、過載保護、服務熔斷、分佈式調度等領域。

(4)技術棧不受限制:在微服務架構中,可以結合項目業務及團隊的特點,合理的選擇技術棧。

(5)按需伸縮:可根據需求,實現細粒度的擴展。

2.2、缺點

(1)運維要求高:更多的服務意味着要投入更多的運維。

(2)分佈式固有的複雜性:使用微服務構建的是分佈式系統。對於一個分佈式系統,系統容錯、網絡延遲、分佈式事務等都會帶來衆多問題。

(4)基於以上優缺點分析,權衡利弊,對一個大型應用系統微服務化是必然選擇。

3、Spring Cloud

Spring Cloud是一系列框架的有序集合,它利用Spring Boot的開發便利性,簡化了分佈式系統基礎設施的開發。Spring Cloud爲微服務體系開發中的架構問題,提供了一整套的解決方案——服務註冊與發現,服務消費,服務保護與熔斷,網關,分佈式調用追蹤,分佈式配置管理等。

Spring Cloud特點

  • 包含了微服務生態大多組件,例如配置中心、服務中心、熔斷器、網關、負載均衡、集羣工具、分佈式鏈路監控、消息組件等。
  • 標準化的將微服務的成熟產品和框架結合一起,Spring Cloud 提供整套的微服務解決方案,開發成本較低,且風險較小。
  • 基於Spring Boot,具有簡單配置、快速開發、輕鬆部署、方便測試的特點。
  • 支持REST服務調用,相比於 RPC,更加輕量化和靈活(服務之間只依賴一紙契約,不存在代碼級別的強依賴),有利於跨語言服務的實現,以及服務的發佈部署。另外,結合 Swagger,也使得服務的文檔一體化。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章