微服務架構問題與自我評量

文章最後更新於 2023 年 9 月 23 日

以下是理解微服務架構的一些自我評量問題,來自「軟體架構原因-工程方法」一書:


1、有界背景的概念為何在微服務架構中如此重要?

有界背景是微服務架構中一個重要的概念,它強調每個微服務都應該有其自己的邊界和責任範圍。這是因為在微服務架構中,系統被拆分成多個小型服務,每個服務負責一個特定的業務功能。如果微服務之間的邊界不明確,就容易導致微服務之間的相互依賴和耦合,進而影響系統的可維護性和擴展性。


2、判定微服務之顆粒度是否適當有哪三種方法?

  • 功能驅動方法:根據不同的業務功能來劃分微服務,使每個微服務都能夠獨立地實現一個完整的業務功能。
  • 數據驅動方法:根據不同的數據模型來劃分微服務,使每個微服務都能夠獨立地操作其所需要的數據。
  • 行為驅動方法:根據不同的用戶行為或者系統事件來劃分微服務,使每個微服務都能夠獨立地處理用戶的請求或系統事件。


3、什麼功能可能放在邊車上?

邊車是一種輕量級的運行在邊緣設備上的微服務,它負責處理與邊緣設備相關的功能,例如數據收集、數據分析、事件觸發等等。一些可能放在邊車上的功能包括:

  • 數據收集:邊車可以收集來自多個邊緣設備的數據,並將其進行統一處理和分析。
  • 數據存儲:邊車可以將處理過的數據存儲到本地或遠程的數據庫中,以供後續的查詢和分析。
  • 運算處理:邊車可以對收集到的數據進行分析和運算,例如機器學習、模型預測等。
  • 事件觸發:邊車可以根據特定的事件觸發相應的操作,例如通知用戶或調用其他微服務。


4、協作與編排有何差異?微服務支援哪一種?有哪一種通信方式在 微服務中更容易嗎?

協作與編排是微服務架構中兩個不同的概念。協作指的是微服務之間通過相互調用和協同工作,實現一個完整的業務功能。而編排則是指微服務架構中對微服務的組織和管理,包括如何將微服務組合起來實現一個完整的應用系統,以及如何對微服務進行部署、調度、監控和管理。

微服務架構支持協作和編排兩種方式,其中協作是實現微服務業務功能的基礎,而編排則是實現微服務系統的高效運行和管理的關鍵。在微服務架構中,微服務之間通過輕量級的通信協議(例如REST、gRPC等)進行通信,以實現協作;而對於編排,可以使用容器技術(例如Docker、Kubernetes等)來實現微服務的部署和管理,也可以使用服務網格(Service Mesh)等技術來實現微服務的調度和監控。

在微服務中,不同的通信方式都有其優缺點,沒有絕對的更容易的通信方式。例如,REST通信方式簡單易用,但是在高並發和大流量的情況下可能會出現性能瓶頸;gRPC通信方式效率高,但是對於多語言支持和多平台支持存在一定的限制。因此,在選擇通信方式時需要根據實際應用場景和需求進行選擇和優化。


5、微服務中的傳奇是什麼?

微服務中的傳奇是指一種常見的問題,即由於微服務系統中存在大量的微服務,這些微服務之間可能存在很複雜的相互依賴關係和調用關係,導致系統難以維護和擴展。這種現象被稱為微服務中的“傳奇”,意味著微服務架構可能會出現一些不可預測的問題,例如故障的傳播、性能的下降、安全性的問題等等。因此,在微服務架構中需要注意微服務之間的耦合性,盡可能降低微服務之間的相互依賴和耦合程度,使系統更加健壯和可靠。

為了解決微服務中的傳奇問題,需要採取一些措施,例如:

  1. 拆分微服務:將大型的、複雜的微服務進行拆分,降低單個微服務的複雜度和規模,從而減少微服務之間的相互依賴關係。
  2. 使用API網關:通過API網關對外提供統一的API接口,隱藏微服務的實現細節,降低微服務之間的耦合性,並提高系統的安全性和可靠性。
  3. 使用服務網格:服務網格是一種專門用於管理微服務的技術,通過對微服務之間的通信和流量進行控制和管理,實現微服務系統的可靠運行和管理。
  4. 使用分佈式事務:當微服務之間需要進行分佈式事務處理時,需要使用分佈式事務技術,保證各個微服務之間的數據一致性和可靠性。


6、為什麼微服務對敏捷性、可測試性、可部署性的支援很好?

微服務對敏捷性、可測試性、可部署性的支援很好,主要是因為微服務的特點:每個微服務都是獨立的、可替換的、可獨立部署的,因此可以更加靈活地進行敏捷開發、測試和部署。另外,微服務之間的耦合程度較低,各個微服務可以獨立測試和部署,進一步提高了系統的可測試性和可部署性。


7、微服務的效能常成為問題的兩個原因是什麼?

(1)微服務的通信成本較高:由於微服務架構中各個微服務之間需要通過網絡進行通信,因此會增加通信的延遲和成本,進而影響系統的效能。

(2)微服務的分佈式事務處理較為複雜:當多個微服務需要進行分佈式事務處理時,需要通過分佈式事務來保證數據的一致性,但是分佈式事務的處理比較複雜,容易影響系統的效能。


8、微服務是領域分割或技術分割架構?

微服務既是領域分割架構,也是技術分割架構。領域分割是指根據業務需求將系統劃分為多個子系統或模塊,而技術分割是指根據技術層面將系統劃分為多個獨立的服務。微服務同時具備這兩種分割方式,它可以根據業務需求將系統劃分為多個微服務,同時每個微服務都是基於特定的技術架構實現的。


9、描述一種拓撲,其中的微服務生態系可能只有單一量子

一種可能的微服務拓撲結構是單一量子生態系結構,它是一個僅包含一個微服務的拓撲結構,用於實現一些簡單的功能或測試用途。例如,一個微服務可以實現一個簡單的計算功能,通過這個微服務就可以實現一個簡單的計算系統。


10、微服務如何處理領域復用?運維復用呢?

微服務處理領域復用的方式可以通過拆分通用功能為獨立的服務,進而實現服務的復用。例如,可以將身份驗證、授權等通用功能拆分為獨立的微服務,其他微服務可以通過調用這些服務來實現相關的功能。

微服務如何處理運維復用則可以通過使用基礎設施自動化工具和容器技術等方式實現。例如,可以通過Docker等容器技術實現微服務的打包和部署,通過Kubernetes等容器管理平台實現微服務的自動化部署和運維。另外,可以通過使用配置管理工具和CI/CD流水線等方式實現微服務的自動化運維和復用。

關於作者

卡哥
卡哥
我是Oscar (卡哥),前Yahoo Lead Engineer、高智商同好組織Mensa會員,超過十年的工作經驗,服務過Yahoo關鍵字廣告業務部門、電子商務及搜尋部門,喜歡彈吉他玩音樂,也喜歡投資美股、虛擬貨幣,樂於與人分享交流!

如果對文章內容有任何問題,歡迎在底下留言讓我知道。
如果你喜歡我的文章,可以按分享按鈕,讓更多的人看見我的文章。