雲原生架構中幾種常用架構模式

基於服務化、彈性擴縮容、可觀測和自動化等設計原則的引入,傳統的應用架構由單體應用逐步向雲原生架構發展。雲原生技術架構迭代逐步演化爲服務化架構、服務網格 Mesh、Serverless 架構、EDA 事件驅動和可觀測等架構模式。本文對這幾種主要的架構模式進行簡要的介紹。

1、雲原生架構模式

1.1 服務化架構

服務化架構的核心在於通過接口契約定義服務單元的功能,實現服務間的高效通信。例如,通過服務接口定義、IDL(接口定義語言)和 OpenAPI 等技術規範服務接口,確保服務間的互操作性。服務化通常是通過微服務化技術實現,通過將單體應用拆分爲獨立部署的小型服務實現系統解耦,每個服務聚焦單一業務能力並擁有專屬技術棧和數據庫,支持異構技術選型(如 Java/Go/Python 等)。服務間通過輕量級 API(REST/gRPC)通信,摒棄傳統 ESB 中心化治理,實現去中心化協作。該架構賦予服務獨立演進能力,支持按需擴縮容和持續交付,顯著提升系統彈性(單點故障隔離)和迭代效率。不過微服務化架構也引入了分佈式事務一致性、跨服務監控等複雜性,需配合服務網格、容器化等技術降低運維成本。

1.2 服務網格(Service Mesh)

服務網格以基礎設施層形式抽象微服務通信邏輯,通過 Sidecar 代理(如 Envoy)接管流量管理,使業務代碼無需嵌入網絡策略。其核心在於分離數據平面(處理流量路由、負載均衡、TLS 加密)和控制平面(如 Istio 統一配置熔斷、重試策略)。該架構提供透明的可觀測性,自動生成服務依賴拓撲和實時指標(延遲 / 錯誤率),並基於 mTLS 實現零信任安全。服務網格徹底解耦業務邏輯與網絡治理,大幅降低分佈式系統複雜度,是規模化微服務架構的基石。

通過 Service Mesh 技術,實現了業務邏輯和非業務邏輯的分離,爲應用的輕量化和雲原生化提供可能;並通過將非業務邏輯的各種功能下沉到基礎設施和雲,極大地增強了基礎設施和雲的能力,爲雲原生的落地提供了極大助力。

1.3 Serverless 架構

Serverless 架構以事件驅動函數爲核心單元,由 HTTP 請求、消息隊列等事件觸發執行,執行完畢後立即釋放資源。其核心價值在於全託管式自動彈性伸縮能力,可根據併發量毫秒級擴容實例,空閒時縮容至零,實現按實際資源消耗計費(而非預留資源)。開發者無需直接管理服務器、操作系統、網絡配置等底層資源,而是由雲服務提供商負責基礎設施的配置、維護和擴展。Serverless 架構採用按需付費的模式,提升了成本效益,同時簡化了運維並提升了開發效率。

Serverless 架構存在一定的侷限性,比如冷啓動問題,函數初始化時的延遲可能會影響性能;另外 Serverless 不擅長處理有狀態應用,需結合其他技術(如 Redis 緩存)解決上下文丟失問題。

1.4 存儲計算分離架構

存儲計算分離架構通過解耦計算節點(無狀態)與存儲節點(持久化),打破傳統單體架構的資源綁定限制。數據集中存儲於存儲系統,計算層通過網絡訪問共享數據池,實現獨立擴展:計算層快速彈性伸縮不影響數據一致性,存儲層可獨立提升吞吐能力。

在雲原生架構中,將各類暫態數據(如 session 會話信息)、結構化和非結構化持久數據都採用持久化存儲來保存,從而實現存儲和計算分離。通過存算分離的解耦,提升了資源的利用率,減少了存儲和技術資源的耦合,避免資源的爭用並提升了性能。

1.5 可觀測架構

可觀測架構通過整合指標(Metrics)、日誌(Logging)、追蹤(Tracing)三大支柱構建深度系統洞察力,其中 Logging 提供多個級別的詳細信息跟蹤,由應用開發者主動提供;Tracing 提供一個請求從前端到後端的完整調用鏈路跟蹤,對於分佈式場景尤其有用;Metrics 則提供對系統量化的多維度度量。指標實時監控性能數據(CPU/QPS)並通過 Prometheus 可視化;日誌聚合工具(EFK 棧)實現跨節點檢索與關聯分析;分佈式追蹤(Jaeger/Zipkin)還原請求全鏈路因果關係。可觀測架構結合持續剖析(Profiling)定位代碼瓶頸,關聯多源數據(告警 / 日誌 / 追蹤)快速溯源根因,爲複雜分佈式系統提供運維確定性。

1.6 分佈式事務模式

分佈式事務模式用於解決微服務架構中跨服務、跨數據庫的數據一致性問題,常見模式包括 2PC、TCC、Saga 等。在分佈式系統中根據 CAP 理論,無法同時滿足一致性、可用性和分區容錯性,實際應用場景中根據業務的數據一致性要求,在性能和一致性上權衡選擇合適的算法。

分佈式事務實現算法總結》中已對常見的分佈式事務實現算法進行了介紹。

1.7 CQRS 讀寫分離模式

CQRS 模式分離命令(寫操作)與查詢(讀操作)模型:命令端處理業務邏輯並更新寫數據庫,查詢端通過視圖等結構優化讀取性能。通過將寫操作和讀操作獨立設計,降低耦合度,優化了讀寫業務的數據模型,讀模型簡化了查詢邏輯、寫模型則專注於業務邏輯。CQRS 低些分離架構可以有效解決讀寫負載衝突,支持讀服務水平擴展,但需容忍數據同步延遲以及可能的最終一致性問題,並增加架構複雜度。

1.8 EDA 事件驅動架構

EDA 架構以事件爲通信核心:生產者服務發佈狀態變更事件至消息中間件,消費者服務訂閱事件並異步觸發業務邏輯。其核心優勢在於生產者與消費者松耦合和最終一致性,支持通過事件溯源重建系統狀態。

在雲原生架構中,微服務通過事件進行解耦,同時也可以通過事件來觸發自動化任務減少人工干預,也可以通過流式 ETL(如實時分析用戶行爲)和事件溯源(Event Sourcing)結合,支持複雜業務邏輯。

參考資料:

  1. 雲原生架構,阿里雲

  2. https://www.cnblogs.com/IT-Evan/p/18033135

  3. Service Mesh 發展趨勢:雲原生中流砥柱

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/B6DtXi88YnUmj01ogx0ERw