天天看點

分布式系統架構與雲原生—阿裡雲《雲原生架構白皮書》導讀

點選免費下載下傳

《雲原生架構白皮書》>>>

1 雲原生與分布式系統架構的關系

1.1 雲原生架構的定義

《雲原生架構白皮書》中對于雲原生架構的定義為“基于雲原生技術的一組架構原則和設計模式的集合,旨在将雲應用中的非業務代碼部分進行最大化的剝離,進而讓雲設施接管應用中原有的大量非功能特性(如彈性、韌性、安全、可觀測性、灰階等),使業務不再有非功能性業務中斷困擾的同時,具備輕量、靈活、高度自動化的特點。”

1.2 分布式系統架構的定義

此處定義參考百度百科為“在一個分布式系統中,一組獨立的計算機展現給使用者的是一個統一的整體,就好像是一個系統似的。系統擁有多種通用的實體和邏輯資源,可以動态的配置設定任務,分散的實體和邏輯資源通過計算機網絡實作資訊交換。系統中存在一個以全局的方式管理計算機資源的分布式作業系統。通常,對使用者來說,分布式系統隻有一個模型或範型。在作業系統之上有一層軟體中間件負責實作這個模型。”

1.3 雲原生與分布式系統架構的關系

分布式架構的重點在于解決計算力的保障問題以及為了提高計算力并同時確定系統的可靠性、可用性和安全性而産生的諸如彈性伸縮、負載均衡、分布式存儲等問題,其目标是在于建構一個分布式的安全可靠的計算力基礎平台。通常來說,對于資訊系統的架構方式的進化和改變即是伴随着接入資料和所提供的業務由少變多的過程,目前為止資訊系統的架構經曆了單機架構、叢集架構、分布式架構、分布式多活資料中心架構幾個階段,同時伴随着業務系統架構一同演變的還有各種外圍系統和存儲系統,比如關系資料庫的分庫分表改造、從本地緩存過渡到分布式緩存等。

要理清分布式架構和雲原生的關系,先來歸納一下分布式架構與雲之間的關系,雲一般指的是一個提供資源的平台,雲計算的本質是按需配置設定資源和彈性計算,而針對目前資料井噴并随着物聯網應用的推進仍然接入量在呈指數上升的現狀下,分布式架構是最能夠滿足建構一個合格的雲平台所應具有特質的架構方式。雲原生應用即專門為在雲平台部署和運作而設計的應用,采用雲原生的設計模式可以優化和改進傳統應用模式,使應用更加适合在雲平台上運作,是以雲原生發展的本質需求來自于SAAS層面設計理念的改進,由于SAAS層的設計理念的改進而進一步從北向往南向推動了PAAS層特别是中間件的更新進而確定整個雲平台的架構能夠更好的服務于雲原生架構的改變。

是以,雲原生和分布式架構的更新和疊代是一個滾動的過程,為了更好的發揮雲平台的特點而有了雲原生的需求和設計模式改變,而在這個過程中雲原生也反過來促進了下層架構的更新。這個疊代的過程充分的反應了網際網路或者說資料時代開發理念的特征,即滾動而非單向。

1.3 《雲原生架構白皮書》章節導讀

通過《雲原生架構白皮書》的第1章和第2章内容可以充分的了解雲原生的本質和雲原生架構的特點,在閱讀這兩章的内容時推薦參考分布式架構的相關書籍,因為雲原生和分布式架構密切相關,但是更新疊代的着力點又有所差別,是以能夠結合在一起進行閱讀是最好的。

2 雲原生主要架構原則和技術分析

2.1 微服務和小系統服務

微服務架構,從宏觀上來看,無非就是細化了服務拆分過程中的粒度,粒度越細,業務耦合越小,容錯性就越好,并且後期擴充也會越容易。但是顆粒度過細,又會帶來另外一些麻煩比如提升了維護成本、影響排查問題時的效率、業務開發人員很難梳理清楚服務之間的依賴關系等。

是以《雲原生架構白皮書》在微服務相關章節中又提到了小系統服務的概念,即是一個顆粒度的中間狀态,其實核心就是一個服務拆分顆粒度的問題,白皮書中的第3章中有專門章節對于雲原生微服務特别是微服務設計過程中的限制做了詳細介紹,根本目的就是使微服務的發展處于一個受限制的狀态,而不是因為有了微服務的理念就是服務拆分的顆粒度越細越好。

2.2 容器技術與雲原生的關系

分布式系統架構與雲原生—阿裡雲《雲原生架構白皮書》導讀

從白皮書中提供的對比圖可以清楚的發現,雲原生在代碼方面,對于代碼通常所包含的三部分:業務代碼、三方軟體和處理非功能特性的代碼進行剝離,最終想實作的理想狀态是把所有非功能性代碼(即除業務代碼部分)從SAAS層剝離到PAAS層和IAAS層中去,當然目前還是沒有完全做到。剝離非功能代碼仍然是一個設計模式理念的變化,而在這個理念的落地過程中容器技術成為了最好的工具。

分布式系統架構與雲原生—阿裡雲《雲原生架構白皮書》導讀

在白皮書中這張對比圖的基礎上,根據其他一些公開資料能夠更清晰的反映出容器技術應用之後,雲原生架構所産生的變化。

分布式系統架構與雲原生—阿裡雲《雲原生架構白皮書》導讀

單機架構

注:以上圖檔來源于《超大流量分布式系統架構解決方案:人人都是架構師2.0》高翔龍著 電子工業出版社

分布式系統架構與雲原生—阿裡雲《雲原生架構白皮書》導讀

叢集架構

分布式系統架構與雲原生—阿裡雲《雲原生架構白皮書》導讀

服務化架構

在這種架構方式下以被廣泛應用的Kubernetes為例,K8S中的大部分概念如Node(除了叢集控制節點Master外K8S叢集中的其他機器)、Pod(容器)等可以被看作資源對象,幾乎所有資源對象都可以通過K8S提供的kubectl工具執行增、删、改、查等操作并将其儲存在etcd中持久化存儲,也就是說容器服務包括DOCKER、K8S等的全新設計模式天生就适合于分布式服務架構。當然相比叢集架構來說,在開發運維自動化水準的要求上也自然較高以確定對于容器能夠進行有序而全局化的管理防止系統出現不可控制的狀态。

2.2 《雲原生架構白皮書》章節導讀

白皮書的第3章和第4章主要介紹的就是主要的雲原生技術和阿裡雲原生架構設計的内容,其實核心的技術就是容器技術,在這個基礎上包括微服務的理念、Serverless和Service Mesh等才能夠被順利的付諸于實踐,而在容器技術中自動化水準又是一個重中之重,是以白皮書中數次提到的所有過程自動化原則就是能否發揮雲原生技術優勢的核心因素。

3 小結:雲原生的未來發展方向

雲原生畢竟是一個很大的概念,理論上所有從設計和開發之始就以部署在雲上的設計理念都能夠稱為雲原生,而微服務則是雲原生在服務次元典型的表現形式,而容器服務即是能夠将微服務成功落地的核心技術。Serverless是一個技術也可以從字面意思了解為未來的發展方向,核心理念仍然是将非業務部分的功能下沉至基礎設施,從這點上來說,理想中的Serverless甚至不必包含目前K8S中的叢集容量規劃、安全維護和故障診斷等功能,将這些集中考慮為雲基礎設施所應該具有的功能,而功能子產品隻需考慮自身的業務,充分展現出的是輕量,通過事件驅動将輕量的服務和服務間以及輕量服務和雲平台之間連接配接起來,整個體系相比叢集化部署來說,與其說是一個系統,不如說是雲基礎設施基礎上各類微服務形成的生态。

作者簡介:朱祺 國際電氣電子工程師協會IEEE進階會員、阿裡雲全球MVP

阿裡雲開發者社群——藏經閣系列電子書,彙聚了一線大廠的技術沉澱精華,爆款不斷。點選連結擷取海量免費電子書:

https://developer.aliyun.com/topic/ebook
分布式系統架構與雲原生—阿裡雲《雲原生架構白皮書》導讀

繼續閱讀