1. 程式人生 > >橫切關注點之微服務模式

橫切關注點之微服務模式

背景

當您開始開發應用程式時,您經常花費大量時間來建立處理跨領域問題的機制。跨領域關注的例子包括:

  • 外部化配置 - 包括外部服務(如資料庫和訊息代理)的憑據和網路位置
  • 日誌記錄 - 配置日誌框架,例如log4j或logback
  • 執行狀況檢查 - 監視服務可以“ping”以確定應用程式執行狀況的URL
  • 度量標準 - 可以深入瞭解應用程式正在執行的操作及其執行方式的度量標準
  • 分散式跟蹤 - 具有程式碼的儀器服務,該程式碼為每個外部請求分配在服務之間傳遞的唯一識別符號。

除了這些通用的跨領域問題之外,還存在特定於應用程式使用的技術的跨領域問題。使用基礎結構服務(如資料庫或訊息代理)的應用程式需要樣板配置才能執行此操作。例如,使用關係資料庫的應用程式必須配置連線池。處理HTTP請求的Web應用程式也需要樣板配置。

建立這些機制通常花費一兩天,有時甚至更長。如果您要花費數月或數年時間開發單一應用程式,那麼處理跨領域問題的前期投資是微不足道的。但是,如果您正在開發具有微服務架構的應用程式,情況就大不相同了。有數十或數百種服務。您將經常建立新服務,每個服務只需數天或數週即可開發。您無法花費幾天時間來配置機制來處理橫切問題。更糟糕的是,在微服務架構中,您必須處理其他交叉問題,包括服務註冊和發現,以及可靠處理部分故障的斷路器。

訴求

  • 建立一個新的微服務應該快速而簡單
  • 在建立微服務時,您必須處理橫切關注點,例如外部配置,日誌記錄,執行狀況檢查,指標,服務註冊和發現,斷路器等。還存在針對微服務所使用的技術的跨領域問題。

解決方案

使用微服務機箱框架構建您的微服務,該框架處理跨領域問題

例子

微服務機箱框架的示例:

  • Java的Spring Boot,Spring Cloud和Dropwizard
  • go的Gizmo,Micro,Go kit

結果背景

微服務機箱的主要優點是,您可以快速輕鬆地開始開發微服務。

您需要為要使用的每種程式語言/框架提供微服務機箱。這可能成為採用新程式語言或框架的障礙。

相關模式

有以下相關模式:

  • 微服務 - 這種模式激發了對微服務機箱模式的需求
  • 自注冊 - 微服務機箱通常負責向服務登錄檔註冊服務
  • 客戶端發現 - 微服務機箱通常負責客戶端服務發現
  • 斷路器 - 微服務機箱框架可能實現此模式
  • 分散式跟蹤 - 微服務機箱框架可能會檢測程式碼