架構模式: 微服務的基底
上下文
當您開始開發應用程序時,您經常花費大量時間來建立處理跨領域問題的機制。跨領域關注的例子包括:
- 外部化配置 - 包括外部服務(如數據庫和消息代理)的憑據和網絡位置
- 日志記錄 - 配置日志框架,例如log4j或logback
- 運行狀況檢查 - 監視服務可以“ping”以確定應用程序運行狀況的URL
- 度量標准 - 可以深入了解應用程序正在執行的操作及其執行方式的度量標准
- 分布式跟蹤 - 具有代碼的儀器服務,該代碼為每個外部請求分配在服務之間傳遞的唯一標識符。
除了這些通用的跨領域問題之外,還存在特定於應用程序使用的技術的跨領域問題。使用基礎結構服務(如數據庫或消息代理)的應用程序需要樣板配置才能執行此操作。例如,使用關系數據庫的應用程序必須配置連接池。處理HTTP請求的Web應用程序也需要樣板配置。
建立這些機制通常花費一兩天,有時甚至更長。如果您要花費數月或數年時間開發單一應用程序,那么處理跨領域問題的前期投資是微不足道的。但是,如果您正在開發具有微服務架構的應用程序,情況就大不相同了。有數十或數百種服務。您將經常創建新服務,每個服務只需數天或數周即可開發。您無法花費幾天時間來配置機制來處理跨領域問題。更糟糕的是,在微服務架構中,您必須處理其他交叉問題,包括服務注冊和發現,以及可靠處理部分故障的斷路器。
要點
- 創建一個新的微服務應該快速而簡單
- 在創建微服務時,您必須處理橫切關注點,例如外部配置,日志記錄,運行狀況檢查,指標,服務注冊和發現,斷路器等。還存在針對微服務所使用的技術的跨領域問題。
解決方案
使用微服務機箱框架構建您的微服務,該框架處理跨領域問題
例子
微服務基礎框架的示例:
- Java
- Go
結果上下文
微服務機箱的主要優點是,您可以快速輕松地開始開發微服務。
您需要為要使用的每種編程語言/框架提供微服務機箱。這可能成為采用新編程語言或框架的障礙。
相關的模式
有以下相關模式:
- 微服務 - 這種模式激發了對微服務基礎框
- 自注冊的需求 - 微服務基礎框架通常負責通過服務注冊表注冊
- 服務客戶端發現 - 微服務基礎框架通常負責客戶端服務發現
- Circuit Breaker -微服務基礎框架可能實現這種模式
- 分布式跟蹤 - 微服務基礎框架實現跟蹤