1.雲原生背景
- 業務快速發展與 開發、運維、運營之間落後的生產關係與生產力的矛盾
- 企業內部各佔山頭與企業總體戰略規劃的矛盾
- 企業內部改革,降本增效的需求
- 企業實現數字孿生,數字資產的必然需求
- 企業外部環境,如人工智能發展、安全合規等大環境的要求
2.雲原生架構的設計原則
- 服務化原則(拆分為微服務、小服務,非功能特性委託)
- 彈性原則(可伸可縮)
- 可觀測原則(基於sla,slo,在log,trace,metric三個維度)
- 可持續演進擴展(增量迭代,重構,遷入遷出等,實現業務&架構的平衡)
- 零信任(身份鑑權、資源隔離)
- 韌性(主要目標是MTBF)
- 高度自動化(基於ci/cd,gitops,apm,k8s)
3. 雲原生架構模式
- 服務化架構模式(服務接口契約,如IDL)
-
serverless(適用於無狀態、無大量io阻塞,快進快出,事件驅動的業務,如阿里雲的函數計算FC)
-
技術關注點
- 資源彈性調度
- 負載均衡和流控
- 安全性
-
技術特點
- 全託管計算服務
- 通用
- 自動彈性伸縮
- 按量計費
-
技術難點
- 函數編程事件驅動比較反人性
- 顆粒度較低,導致冷啓動時間長,導致響應延遲
- 函數編程生態不夠成熟
-
-
service mesh(託管非功能性代碼,增加代理層)
-
技術特點
- 數據平面
- 控制平面
-
主要技術
- istio
- linkerd
- consul
- conduit
-
- 存儲計算分離
- 分佈式事務(XA、TCC、SAGA、SEATA)
- 可觀測架構(對服務目標slo進行度量,包括log,trace,metric三個方面)
-
事件驅動架構(EDA)
- 適用場景如CQRS、增強服務韌性、數據變化通知、事件流處理,openapi等
4. 雲原生架構反模式
- 龐大的單體(粒度太大,耦合太高,責任不清)
- 硬拆單體(粒度太小,架構與技術組織能力不匹配)
- 技術拉胯(自動化能力不足,如打包、部署、治理、觀測、放火技術等不足)
5. 雲原生架構相關技術
-
容器技術
- 隔離
- 可移植
- 輕量
- 打包規範化
-
容器編排
- 資源調度
- 服務發現
- 負載均衡
- 應用部署
- 彈性伸縮
- 自動修復
6. 雲原生微服務設計約束
- 微服務個體約束
- 微服務與微服務之間的橫向關係
- 微服務與數據層之間縱向關係
- 全局視角微服務的分佈式約束
7.業內主要微服務技術
- 騰訊-tars
- 阿里-spring cloud alibaba(包括註冊中心,全局鎖,分佈式事務等)、dubbo(rpc框架)
- 螞蟻金服 sofa stack
- Apache-spring cloud
- eclipse micro profile
- go生態(...)
8.雲原生項目改造【背景、挑戰、解決方案、收益】
- 藝龍旅行
- 申通
- 廣汽豐田
- 特步