
1 云原生與分布式系統架構的關(guān)系
1.1 云原生架構的定義
《云原生架構白皮書(shū)》中對于云原生架構的定義為“基于云原生技術(shù)的一組架構原則和設計模式的集合,旨在將云應用中的非業(yè)務(wù)代碼部分進(jìn)行最大化的剝離,從而讓云設施接管應用中原有的大量非功能特性(如彈性、韌性、安全、可觀(guān)測性、灰度等),使業(yè)務(wù)不再有非功能性業(yè)務(wù)中斷困擾的同時(shí),具備輕量、敏捷、高度自動(dòng)化的特點(diǎn)。”
1.2 分布式系統架構的定義
此處定義參考百度百科為“在一個(gè)分布式系統中,一組獨立的計算機展現給用戶(hù)的是一個(gè)統一的整體,就好像是一個(gè)系統似的。系統擁有多種通用的物理和邏輯資源,可以動(dòng)態(tài)的分配任務(wù),分散的物理和邏輯資源通過(guò)計算機網(wǎng)絡(luò )實(shí)現信息交換。系統中存在一個(gè)以全局的方式管理計算機資源的分布式操作系統。通常,對用戶(hù)來(lái)說(shuō),分布式系統只有一個(gè)模型或范型。在操作系統之上有一層軟件中間件負責實(shí)現這個(gè)模型。”
1.3 云原生與分布式系統架構的關(guān)系
分布式架構的重點(diǎn)在于解決計算力的保障問(wèn)題以及為了提高計算力并同時(shí)確保系統的可靠性、可用性和安全性而產(chǎn)生的諸如彈性伸縮、負載均衡、分布式存儲等問(wèn)題,其目標是在于構建一個(gè)分布式的安全可靠的計算力基礎平臺。通常來(lái)說(shuō),對于信息系統的架構方式的進(jìn)化和改變即是伴隨著(zhù)接入數據和所提供的業(yè)務(wù)由少變多的過(guò)程,目前為止信息系統的架構經(jīng)歷了單機架構、集群架構、分布式架構、分布式多活數據中心架構幾個(gè)階段,同時(shí)伴隨著(zhù)業(yè)務(wù)系統架構一同演變的還有各種外圍系統和存儲系統,比如關(guān)系數據庫的分庫分表改造、從本地緩存過(guò)渡到分布式緩存等。
要理清分布式架構和云原生的關(guān)系,先來(lái)歸納一下分布式架構與云之間的關(guān)系,云一般指的是一個(gè)提供資源的平臺,云計算的本質(zhì)是按需分配資源和彈性計算,而針對目前數據井噴并隨著(zhù)物聯(lián)網(wǎng)應用的推進(jìn)仍然接入量在呈指數上升的現狀下,分布式架構是最能夠滿(mǎn)足構建一個(gè)合格的云平臺所應具有特質(zhì)的架構方式。云原生應用即專(zhuān)門(mén)為在云平臺部署和運行而設計的應用,采用云原生的設計模式可以?xún)?yōu)化和改進(jìn)傳統應用模式,使應用更加適合在云平臺上運行,因此云原生發(fā)展的本質(zhì)需求來(lái)自于SAAS層面設計理念的改進(jìn),由于SAAS層的設計理念的改進(jìn)而進(jìn)一步從北向往南向推動(dòng)了PAAS層特別是中間件的升級從而確保整個(gè)云平臺的架構能夠更好的服務(wù)于云原生架構的改變。
因此,云原生和分布式架構的升級和迭代是一個(gè)滾動(dòng)的過(guò)程,為了更好的發(fā)揮云平臺的特點(diǎn)而有了云原生的需求和設計模式改變,而在這個(gè)過(guò)程中云原生也反過(guò)來(lái)促進(jìn)了下層架構的升級。這個(gè)迭代的過(guò)程充分的反應了互聯(lián)網(wǎng)或者說(shuō)數據時(shí)代開(kāi)發(fā)理念的特征,即滾動(dòng)而非單向。
1.3 《云原生架構白皮書(shū)》章節導讀
通過(guò)《云原生架構白皮書(shū)》的第1章和第2章內容可以充分的理解云原生的本質(zhì)和云原生架構的特點(diǎn),在閱讀這兩章的內容時(shí)推薦參考分布式架構的相關(guān)書(shū)籍,因為云原生和分布式架構密切相關(guān),但是升級迭代的著(zhù)力點(diǎn)又有所區別,所以能夠結合在一起進(jìn)行閱讀是最好的。
2 云原生主要架構原則和技術(shù)分析
2.1 微服務(wù)和小系統服務(wù)
微服務(wù)架構,從宏觀(guān)上來(lái)看,無(wú)非就是細化了服務(wù)拆分過(guò)程中的粒度,粒度越細,業(yè)務(wù)耦合越小,容錯性就越好,并且后期擴展也會(huì )越容易。但是顆粒度過(guò)細,又會(huì )帶來(lái)另外一些麻煩比如提升了維護成本、影響排查問(wèn)題時(shí)的效率、業(yè)務(wù)開(kāi)發(fā)人員很難梳理清楚服務(wù)之間的依賴(lài)關(guān)系等。
因此《云原生架構白皮書(shū)》在微服務(wù)相關(guān)章節中又提到了小系統服務(wù)的概念,即是一個(gè)顆粒度的中間狀態(tài),其實(shí)核心就是一個(gè)服務(wù)拆分顆粒度的問(wèn)題,白皮書(shū)中的第3章中有專(zhuān)門(mén)章節對于云原生微服務(wù)特別是微服務(wù)設計過(guò)程中的約束做了詳細介紹,根本目的就是使微服務(wù)的發(fā)展處于一個(gè)受約束的狀態(tài),而不是因為有了微服務(wù)的理念就是服務(wù)拆分的顆粒度越細越好。
2.2 容器技術(shù)與云原生的關(guān)系

從白皮書(shū)中提供的對比圖可以清楚的發(fā)現,云原生在代碼方面,對于代碼通常所包含的三部分:業(yè)務(wù)代碼、三方軟件和處理非功能特性的代碼進(jìn)行剝離,最終想實(shí)現的理想狀態(tài)是把所有非功能性代碼(即除業(yè)務(wù)代碼部分)從SAAS層剝離到PAAS層和IAAS層中去,當然目前還是沒(méi)有完全做到。剝離非功能代碼仍然是一個(gè)設計模式理念的變化,而在這個(gè)理念的落地過(guò)程中容器技術(shù)成為了最好的工具。

在白皮書(shū)中這張對比圖的基礎上,根據其他一些公開(kāi)資料能夠更清晰的反映出容器技術(shù)應用之后,云原生架構所產(chǎn)生的變化。

單機架構
注:以上圖片來(lái)源于《超大流量分布式系統架構解決方案:人人都是架構師2.0》高翔龍著(zhù) 電子工業(yè)出版社

集群架構
注:以上圖片來(lái)源于《超大流量分布式系統架構解決方案:人人都是架構師2.0》高翔龍著(zhù) 電子工業(yè)出版社

服務(wù)化架構
注:以上圖片來(lái)源于《超大流量分布式系統架構解決方案:人人都是架構師2.0》高翔龍著(zhù) 電子工業(yè)出版社
在這種架構方式下以被廣泛應用的Kubernetes為例,K8S中的大部分概念如Node(除了集群控制節點(diǎn)Master外K8S集群中的其他機器)、Pod(容器)等可以被看作資源對象,幾乎所有資源對象都可以通過(guò)K8S提供的kubectl工具執行增、刪、改、查等操作并將其保存在etcd中持久化存儲,也就是說(shuō)容器服務(wù)包括DOCKER、K8S等的全新設計模式天生就適合于分布式服務(wù)架構。當然相比集群架構來(lái)說(shuō),在開(kāi)發(fā)運維自動(dòng)化水平的要求上也自然較高以確保對于容器能夠進(jìn)行有序而全局化的管理防止系統出現不可控制的狀態(tài)。
2.2 《云原生架構白皮書(shū)》章節導讀
白皮書(shū)的第3章和第4章主要介紹的就是主要的云原生技術(shù)和阿里云原生架構設計的內容,其實(shí)核心的技術(shù)就是容器技術(shù),在這個(gè)基礎上包括微服務(wù)的理念、Serverless和Service Mesh等才能夠被順利的付諸于實(shí)踐,而在容器技術(shù)中自動(dòng)化水平又是一個(gè)重中之重,所以白皮書(shū)中數次提到的所有過(guò)程自動(dòng)化原則就是能否發(fā)揮云原生技術(shù)優(yōu)勢的核心因素。
3 小結:云原生的未來(lái)發(fā)展方向
云原生畢竟是一個(gè)很大的概念,理論上所有從設計和開(kāi)發(fā)之始就以部署在云上的設計理念都能夠稱(chēng)為云原生,而微服務(wù)則是云原生在服務(wù)維度典型的表現形式,而容器服務(wù)即是能夠將微服務(wù)成功落地的核心技術(shù)。Serverless是一個(gè)技術(shù)也可以從字面意思理解為未來(lái)的發(fā)展方向,核心理念仍然是將非業(yè)務(wù)部分的功能下沉至基礎設施,從這點(diǎn)上來(lái)說(shuō),理想中的Serverless甚至不必包含目前K8S中的集群容量規劃、安全維護和故障診斷等功能,將這些集中考慮為云基礎設施所應該具有的功能,而功能模塊只需考慮自身的業(yè)務(wù),充分體現出的是輕量,通過(guò)事件驅動(dòng)將輕量的服務(wù)和服務(wù)間以及輕量服務(wù)和云平臺之間連接起來(lái),整個(gè)體系相比集群化部署來(lái)說(shuō),與其說(shuō)是一個(gè)系統,不如說(shuō)是云基礎設施基礎上各類(lèi)微服務(wù)形成的生態(tài)。