如何設計最佳的微服務架構 -DZone
企業正在迅速採用微服務架構來建立靈活,可擴充套件的應用程式,這些應用程式可以快速迭代,具有較高的容錯能力和較低的停機時間。您如何構建正確的微服務架構?
儘管確切的架構會有所不同,但是有一些最佳實踐可以幫助設計有效和最佳的微服務架構。
領域驅動設計
微服務的重點是將統一架構分解為更小,更易管理的部分。必須以對所有利益相關者都有意義的方式來完成這種分解。
定義單個微服務範圍的幾種常用方法:
- 建立與應用程式開發過程中存在的不同運營團隊相對應的微服務。例如,一個團隊可能正在研究使用者身份驗證,另一個團隊正在研究資料收集,並且每個團隊都應負責建立一組實現特定任務的微服務。
- 建立與特定功能相對應的微服務。例如,分析應用程式可以具有聊天機器人功能,可視儀表板,資料分析功能等。這些中的每一個都可以建立為單獨的片段,並通過API進行交流。
這個想法是建立一組獨立的服務,以提供集中的增值服務。面臨的挑戰是避免將過多的功能過度填充到一個微服務中。通常建議將程式碼保持足夠簡單,以便在需要時可以輕鬆地重新部署。
獨立微服務
微服務的獨立性是其有效性的關鍵。它們鬆散耦合並且可以在沒有複雜的相互依賴性的情況下工作,這一事實確保了整個應用程式不會由於單點故障而崩潰。因此,在一些關鍵領域中必須確保獨立性:
- 獨立團隊:理想情況下,每個微服務都應擁有自己的專門團隊,其中包括產品經理和DevOps團隊。一支團隊將每項服務從開發到部署的過程,都有助於減少釋出頻率和最大程度地延長正常執行時間。
- 自動進行獨立部署:自動化構建和釋出週期,並確保每個微服務都可以獨立於其他微服務進行部署,這對於設計良好的應用程式至關重要。這樣,它們可以在任何環境下啟動並執行。
- 單獨的儲存:每個微服務都應擁有自己的特定資料庫,而其他所有需要該資料的服務都應僅通過API進行訪問。在短期內,共享資料庫似乎是一個方便的選擇。但是隨著微服務的擴充套件,這種共享導致它們相互耦合,從而破壞了目標。
- 隔離故障:為了確保即使一項服務出現故障,應用程式也可以繼續執行,微服務架構需要隔離故障。一種常用的方法是在應用程式中建立斷路器。當服務失敗超過設定次數後,斷路器將跳閘,並立即使給定時間段內對該服務的所有請求失敗。該服務提供的功能在該時間段內仍然不可用,即使應用程式的其餘部分保持正常工作也是如此。超時後,斷路器允許通過幾個請求,如果成功,則恢復為正常操作。
與此類似,其他設計模式(例如非同步通訊和事件驅動的體系結構)也可以用於故障隔離。
不變的基礎設施
不變的基礎架構將服務分為資料和“其他”,並且在每個版本中都將“其他”部分替換。建立新版本的微服務,而不是立即更新當前版本。新版本經過測試和微調,而舊版本是應用程式正在使用的版本。僅當新版本穩定時,才可以將其與前一個版本合併。
標準制定
隨著組織更多地依賴微服務架構,不同的團隊從事不同的服務,流程和實踐可能會因團隊而異。每個團隊可以開始進行不同的開發,部署和錯誤處理。這可能導致不同團隊重複執行許多程式碼,從而影響效率和週轉時間。
因此,建議建立團隊可以遵守的組織範圍的標準。微服務建立和部署的過程以及它們相應的API應該有充分的文件記錄。這也使不同的團隊可以瞭解正在使用的其他微服務API,以及如何最好地使用它們。
相關文章
- 微服務架構和設計模式 - DZone微服務微服務架構設計模式
- spring微服務架構設計與輕量級微服務架構及最佳部署Spring微服務架構
- 微服務架構中的分散式事務全面詳解 -DZone微服務微服務架構分散式
- 架構設計思想-微服務架構設計模式架構微服務設計模式
- 如何設計一個容錯的微服務架構微服務架構
- 構建微服務的三種重要模式 - DZone微服務微服務模式
- spring cloud微服務架構設計SpringCloud微服務架構
- 微服務架構最佳實踐微服務架構
- 基於SpringCloud的微服務架構設計SpringGCCloud微服務架構
- 《微服務架構設計模式》讀書筆記 | 第5章 微服務架構中的業務邏輯設計微服務架構設計模式筆記
- SACC2018:微服務架構設計微服務架構
- 微服務架構十條最佳實踐微服務架構
- 如何拆分你的微服務架構?微服務架構
- 一起玩轉微服務(3)——微服務架構設計模式微服務架構設計模式
- 設計微服務的最佳實踐微服務
- 微服務架構技術棧:程式設計師必須掌握的微服務架構框架詳細解析微服務架構程式設計師框架
- 面向微服務架構設計理念與實踐微服務架構
- 如何快速搞定微服務架構?微服務架構
- 《微服務架構設計模式》讀書筆記 | 第3章 微服務架構中的程式間通訊微服務架構設計模式筆記
- 《微服務架構設計模式》讀書筆記 | 第9章 微服務架構中的測試策略(上)微服務架構設計模式筆記
- 【虹科乾貨】設計微服務架構的原則微服務架構
- 容器雲平臺微服務架構設計的誤區微服務架構
- 微服務架構設計基礎之領域驅動設計微服務架構
- 微服務架構設計基礎之立方體模型微服務架構模型
- 微服務之架構技術選型與設計微服務架構
- 一文詳解微服務架構的資料設計微服務架構
- 如何設計基於事件驅動架構的銷售庫存微服務?- Jasbir事件架構微服務
- 《微服務架構設計模式》讀書筆記 | 第7章 在微服務架構中實現查詢微服務架構設計模式筆記
- 一個知名網站的微服務架構最佳實現網站微服務架構
- 微服務2:微服務全景架構微服務架構
- [雲原生微服務架構](十)微服務架構的基礎知識微服務架構
- 【架構與設計】常見微服務分層架構的區別和落地實踐架構微服務
- 微服務業務架構的探索微服務架構
- 基於微服務和Docker的PaaS雲平臺架構設計微服務Docker架構
- 微服務架構:構建PHP微服務生態微服務架構PHP
- 微服務架構下 CI/CD 如何落地微服務架構
- 微服務架構初探微服務架構
- 微服務 dubbospring 架構微服務Spring架構