微服務架構的定義:dPB28資訊網——每日最新資訊28at.com
圖片dPB28資訊網——每日最新資訊28at.com
如何篩選微服務:dPB28資訊網——每日最新資訊28at.com
圖片dPB28資訊網——每日最新資訊28at.com
三種場景可以考慮使用微服務
(Are you tall enough?)dPB28資訊網——每日最新資訊28at.com
- 規模大(團隊超過10人)
- 業務復雜度高(系統超過5個子模塊)
- 需要長期演進(項目周期超過半年)
其他因素篩選微服務
- 軟件功能變化頻繁,快速迭代,縮短交付周期為核心的業務。
- 模塊有獨立的生命周期,服務復用,降本增效,減少重復造輪子
- 有獨立的隔離性需求和擴展性需求(容錯)
- 簡化的外部依賴(Facade模式場景)
dPB28資訊網——每日最新資訊28at.com
如何拆分微服務:dPB28資訊網——每日最新資訊28at.com
圖片dPB28資訊網——每日最新資訊28at.com
拆分
- Domain-Driven Design (DDD)
- Domain(領域): 領域是指與某個特定問題相關的知識領域和行為。在設計微服務時,首先要識別和定義業務領域。
- Bounded Context(界限上下文): 界限上下文定義了領域的邊界。在拆分微服務時,要確保每個服務有明確的邊界,獨立承擔特定的業務功能。
- 業務功能模塊化
垂直拆分dPB28資訊網——每日最新資訊28at.com
構建
dPB28資訊網——每日最新資訊28at.com
12-Factor App 方法論
- I. 基準代碼: 一份基準代碼,多份部署。每個微服務應該有自己的代碼庫。
- II. 依賴: 顯式聲明和隔離依賴關系。確保微服務之間的依賴關系清晰明確。
- III. 配置: 在環境中存儲配置。將配置和代碼分離,以便在不同環境中輕松部署。
- IV. 后端服務: 把后端服務當作附加資源。微服務應能夠獨立調用其他后端服務。
- V. 構建、發布、運行: 嚴格分離構建和運行階段。確保每個微服務的構建和運行環境一致。
- VI. 進程: 以一個或多個無狀態進程運行應用。微服務應該無狀態,方便擴展。
- VII. 端口綁定: 通過端口綁定提供服務。每個微服務獨立運行并監聽自己的端口。
- VIII. 并發: 通過進程模型進行擴展。根據需要動態擴展微服務實例。
- IX. 易處理: 快速啟動和優雅終止,確保最大化健壯性。微服務應快速啟動并能平滑關閉。
- X. 環境等價: 盡可能的保持開發、預發布、線上環境相同。確保不同環境的一致性。
- XI. 日志: 把日志當作事件流。集中管理和分析日志。
- XII. 管理進程: 后臺管理任務作為一次性進程運行。后臺任務應獨立運行。
DevOps 實踐
技術選型
dPB28資訊網——每日最新資訊28at.com
微服務架構的兩種建設思路:dPB28資訊網——每日最新資訊28at.com
圖片dPB28資訊網——每日最新資訊28at.com
SpringCloud的技術生態:dPB28資訊網——每日最新資訊28at.com
圖片dPB28資訊網——每日最新資訊28at.com
Spring Cloud提供了一整套微服務架構的解決方案,通過服務注冊與發現、配置管理、消息隊列、分布式跟蹤、服務熔斷等組件,幫助開發者構建高可用、高擴展性的微服務系統。這張生態圖展示了各個組件之間的關系和作用,是理解Spring Cloud生態系統的一個很好的參考。dPB28資訊網——每日最新資訊28at.com
Service(服務)
- 服務注冊:使用Eureka或Consul進行服務注冊。
- 服務調用:通過Feign進行服務調用,依賴Ribbon實現負載均衡。
- 服務跟蹤:使用Sleuth進行分布式服務跟蹤。
- 服務熔斷:使用Hystrix實現服務熔斷,Turbine用于集群監控。
- 依賴管理:使用CLI服務調用腳本,任務調度和數據流(Data Flow)管理。
- 大數據:通過JPA封裝JDBC連接大數據。
- 配置管理:通過Config Server管理配置,支持本地和遠程Git倉庫。
Consumer(消費者)
- 消息消費:通過Spring Cloud Stream與RabbitMQ或Kafka集成,實現消息隊列的消費。
- 服務發現:通過Eureka或Consul發現服務。
- 服務安全:通過Security實現服務的安全管理。
- 網關:使用Zuul實現網關功能,處理外部請求。
- 服務配置:在服務啟動時通過Config Server獲取配置信息。
Spring Boot Bus
- 廣播消息:用于整個服務集群統一廣播消息,例如刷新配置。
其他組件
- Cluster管理:使用Redis和其他集群管理工具(如Cluster)管理集群。
- 容器化部署:使用Docker和Linux進行容器化部署,支持命令行(CLI)調用服務。
消息隊列
- 消息發布與訂閱:使用Spring Cloud Stream集成RabbitMQ和Kafka,實現消息的發布與訂閱。
配置管理
- Config Server:管理配置文件,支持從本地或遠程Git倉庫獲取配置,Spring Boot應用在啟動時會從Config Server獲取配置。
安全與網關
- Security:提供服務的安全認證與授權。
- Zuul:作為網關,處理外部請求并路由到相應的服務。
分布式跟蹤
- Sleuth:提供分布式系統的請求跟蹤。
- Turbine:用于監控Hystrix的集群服務。
負載均衡
- Ribbon:在Feign調用時,Ribbon提供負載均衡功能。
任務調度與數據流
- Task:用于任務調度。
- Data Flow:管理數據流。
微服務和SpringCloud的架構復雜性:dPB28資訊網——每日最新資訊28at.com
圖片 dPB28資訊網——每日最新資訊28at.com
本文鏈接:http://www.tebozhan.com/showinfo-26-92099-0.html微服務架構落地及其演進
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: Genai技術棧架構指南—十個工具,你知道哪個?
下一篇: 一文搞懂 Spring 循環依賴
標簽: