微服務架構的優缺點

2022-08-24 22:48:10 字數 1708 閱讀 5271

什麼是微服務

微服務是用一組小服務構建的乙個應用,服務執行在不同的程序中,服務之間通過輕量的通訊機制進行互動,並且服務可以通過自動化部署方式獨立部署。正因為微服務架構中,服務之間是相互獨立的,所以不同的服務可以使用不同的語言來開發,或者根據業務的需求使用不同型別的資料庫。

優點1、服務解耦

將原有的巨大的單體應用拆分為多個獨立的微服務,使得每個服務更專注於自己的業務,滿足高內聚低耦合的設計原則。比如將電商服務差費為使用者服務、賬戶服務、商品服務、購物車服務、訂單服務等。

2、獨立的開發環境

將應用拆分為獨立的微服務,服務之間彼此隔離,通過輕量級的通訊機制(比如:dubbo)進行互動,使得開發時無需關注具體的開發環境,只需要協商好通訊機制即可。

3、獨立的部署環境

微服務擁有獨立的開發環境,因此需要根據各自的開發環境規劃部署環境,對於訪問量大的服務可以增加服務的部署數量,訪問量小的服務適當的減少部署數量。

4、更高的擴充套件性

基於服務的獨立性,服務之間的耦合性降低,無論從功能上,還是架構上,我們都可以進行更為靈活的擴充套件,而不影響其他服務。

缺點1、通訊機制的不標準問題

微服務之間相互獨立,但是服務間的互動需要依賴規範的通訊機制,沒有規範的通訊機制作為橋梁,服務間互動將變得非常複雜。保證規範的通訊機制,是微服務的前提。

2、事務一致性問題

單體應用通過資料庫事務保證一致性,拆分為微服務後,會形成分布式處理的業務,進而就會產生分布式事務一致性問題。分布式系統的事務一致性本身就是乙個技術難題,目前沒有一種很簡單很完美的方案能夠應對所有場景。分布式系統的乙個難點就是因為「網路通訊的不可靠」,只能通過「確認機制」、「重試機制」、「補償機制」等各方面來解決一些問題。在綜合考慮可用性、效能、實現複雜度等各方面的情況上,比較好的選擇是「非同步確保最終一致性」,只是具體實現方式上有一些差異。

3、服務間的依賴變得複雜

需要根據業務的重要性進行系統梳理,定義出關鍵業務和非關鍵業務;梳理服務呼叫的主要路徑,明確強弱依賴、限流、降級規則等。服務治理就是基於以上規則進行的,否則無法進行系統運維或管理。比如非關鍵業務被關鍵業務所依賴,會導致非關鍵業務變成關鍵業務,服務鏈中就會出現「木桶效應」,即整個服務質量由最差的那個服務所決定。

資料庫也需要做相應的隔離:避免非關鍵業務把資料庫拖死,進而導致全站不可用。不允許直接讀取對方的資料庫進行系統互動,只允許通過服務介面進行系統互動。這也是微服務的要求:拆分服務和相應資料庫。

應避免服務間的迴圈呼叫,如果產生迴圈引用,需要通過架構層面解決迴圈問題,避免因迴圈引用導致的系統奔潰問題。同時要對介面進行降級、限流控制,以應對系統的高併發。

4、微服務運維變得複雜

微服務的架構一般會包含基礎層、中介軟體層、應用層、接入層、安全層,同時需要有相應的團隊負責各層的運維。各層之間有比較明確的職責,共同支撐著整個系統的執行。一旦某個環節出現問題,整個系統就會像 「多公尺諾骨牌」一樣倒下。因此需要統一的運維平台,實時監控服務呼叫鏈路,及時發現和定位問題。而建立統一的運維平台的成本和難度是相當之大的,目前也只有幾家網際網路大公司擁有這種能力。

5、系統監控變得複雜

對系統的監控依賴於系統的呼叫鏈路,鏈路中包含:http請求、服務間呼叫、訊息佇列、資料庫、nosql、執行緒間呼叫等,如何將監控整個鏈路將變得非常困難,可能需要修改各中介軟體的請求資料報。

6、系統測試變得複雜

由於服務的依賴變得複雜,在進行系統測試時,要考慮服務間強弱依賴、降級、限流等問題。在進行壓測時要考慮依賴的服務的效能。在製造測試場景時應充分考慮各服務的資料量,避免出現測試誤差。

分布式微服務的優缺點對比

優點 提公升開發交流,每個服務足夠內聚,足夠小,容易理解 服務獨立測試 部署 公升級 發布 按需定製的dfx,資源利用率,每個服務可以各自進行x擴充套件和z擴充套件,而且,每個服務可以根據自己的需要部署到合適的硬體伺服器上 每個服務按 需要選擇ha的模式,選擇接受服務的例項個數 容易擴大開發團隊,可...

一 B S,C S架構的優缺點

1 b s架構的優點 具有分布性特點,可以隨時隨地進行查詢,瀏覽等業務處理 業務擴充套件簡單方便,通過增加網頁即可增加伺服器功能 維護簡單方便,只需要改變網頁,即可實現所有使用者的同步更新 開發簡單,共享性強。2 b s架構的缺點 在跨瀏覽器上b s架構不盡如人意 表現要達到c s程式的程度要花費不...

B S架構與C S架構的優缺點

在這個資訊急劇膨脹的社會,我們不得不說人類正進入乙個嶄新的時代,那就是資訊時代。資訊時代的乙個主要而顯著的特徵就是計算機網路的應用。計算機網路從最初的集中式計算,經過了client server階段 有兩層c s和三層c s 已發展到目前最流行的 browser server計算模式。其中頗具爭論和...