---------------------------------------------------------------------------------
單體架構到位服務
軟件生命周期與架構演化
微服務立方體
最好的架構是演化過來
微服務拆分示例——典型電商系統的架構演化
微服務橫向擴展划分——共享核心功能模式
微服務數據分區
---------------------------------------------------------------------------------------
如何設計一個為服務系統
微服務系統的優缺點
優點 |
缺點 |
更為敏捷 |
整個系統更加復雜 |
更小,更專注的團隊 |
開發和測試面臨更多挑戰 |
更小的codebase |
分布式帶來管控難題 |
自由選擇不同的技術棧 |
網絡瓶頸和延遲 |
問題隔離 |
數據一致性 |
擴展性/擴容容易 |
管理文化挑戰 |
數據隔離 |
多服務版本對齊控制 |
|
技術能力要求高 |
微服務設計示例:Boat House無人機送餐系統
S1-領域模型Domain Model設計
S3 單一領域結構分析(Shipping Domain)
s4——單一領域流程f分析(Shipping Domain)
S5——應用服務邊界和條用關系設計
S7應用服務部署設計
S8服務見通訊機制設計
S9.CI/CD流水線設計
--------------------------------------------------------------------------------------
12要素法制(Software as a Service設計准則/Cloud Native應用設計准則)
基准代碼:一份基准代碼,多分部署(快速交付:合理划分邊界,良好的軟件生命周期管理)
依賴:顯式聲明依賴關系(提升開發效率:標准化,排除意外風險)
配置:在環境存儲配置(軟件發布管理:將配置轉為環境變量)
后端服務:吧后端服務當作附加資源(彈性/敏捷:使用斷路器,松散綁定)
構建、發布、運行:嚴格分離構建和運行(軟件發布管理:通過流水線實現CI/CD自動化)
進程:以一個火多個無狀態進程運行應用(雲兼容性:將狀態管理交給后端服務)
端口綁定:通過端口綁定提供服務(運營效率:應用服務只需要知道url地址與對應端口)
並發:通過進程模型進行擴展(自動彈性伸縮:轉為雲台設計,使用PCF的功)
易處理:快速啟動和優雅終止可最大化健壯性(自動彈性伸縮:將緩慢的進程轉變為后端服務)
開發環境與線上環境等價:盡可能的保持開發、預發布,線上環境相同(可靠性:憑借雲平台,獲得等價性)
日志:把日志當作事件流(實時系統指標:日志管理系統)
管理進程:后台管理任務當作一次性進程運行(可靠性:轉變為后端服務,並暴露為REST接口)