若是你研究過雲原生應用程序和相關技術,大機率你遇到過 CNCF 的雲原生全景圖。這張全景圖技術之多規模之大無疑會讓人感到震驚,該如何去理解這張圖呢?數據庫
若是把它拆開來一次只分析一小塊內容,你會發現整個全景圖沒有那麼複雜。事實上,該全景圖按照功能有序地組織在一塊兒,一旦你瞭解了每一個類別表明的內容,你就能夠輕鬆遊走於全景圖中。安全
首先,咱們剝離掉全部單個的技術,僅查看類別(以下圖)。圖中有不一樣的「行」,像建築的不一樣層,每層都有本身的子類別。最底層提供了構建雲原生基礎設施的工具。往上,你能夠開始添加運行和管理應用程序所需的工具,好比運行時和調度層。在最上層,有定義和開發應用程序的工具,好比數據庫、鏡像構建和 CI/CD 工具(咱們將在後文討論)。網絡
好了,如今你應該記住了雲原生全景圖始於基礎設施,往上的每一層都更接近實際的應用程序。這就是每層表明的意思(後面咱們會討論上圖右邊的兩「列」)。下面咱們就從最底層開始,逐層進行解析。架構
供應指的是爲雲原生應用準備標準基礎環境所涉及的工具。它包含了基礎設施的建立、管理、配置流程的自動化,以及容器鏡像的掃描、簽名和存儲等。供應層經過提供設置和實施策略,在應用程序和平臺中構建身份驗證和受權,以及處理密鑰分發等等的工具,也拓展到了安全領域。框架
供應層包括:分佈式
接下來是運行時層。這個詞可能會讓你感到迷惑。像不少 IT 術語同樣,運行時沒有嚴格的定義,且能夠根據語境有不一樣的用法。狹義上講,運行時是特定機器上準備運行應用程序的沙盒——也就是保障應用程序正常運行所需的最低配置。廣義上講,運行時是運行一個應用程序所需的全部工具。工具
在 CNCF 雲原生全景圖中,運行時保障了容器化應用程序組件的運行和通訊, 包括:性能
一旦按照安全和合規性標準(供應層)自動化基礎設施供應,並安裝了應用程序運行所需的工具(運行時層),工程師就須要弄清楚如何編排和管理應用程序。編排和管理層將全部容器化服務(應用程序組件)做爲一個羣組管理。這些容器化服務須要相互識別和通訊,並須要進行協調。這一層可爲雲原生應用提供自動化和彈性能力,使雲原生應用自然具備可擴展性。測試
這一層包含:加密
如今,咱們來到了最頂層。應用定義和開發層,顧名思義,彙集了讓工程師構建和運行應用程序的工具。上述全部內容都是關於構建可靠、安全的環境,以及提供所有所需的應用程序依賴。
這一層包括:
貫穿全部層的工具
接下來咱們將進入到雲原生全景圖右側貫穿全部層的兩列。可觀察性和分析(Observability&analysis)是監控各層的工具,平臺則將各層中不一樣的技術捆綁爲一個解決方案。
爲了限制服務中斷並下降解決問題的平均時間(MRRT),你須要監控和分析應用層序的方方面面,以便在出現異常時可當即發現並糾正。複雜環境中容易出現故障,這些工具可快速識別並解決故障,從而下降故障帶來的影響。因爲這一類別貫穿並監控各層,所以它在側面,而不是嵌入到某一層中。
這這一類別你將發現:
能夠看到,圖中每個模塊解決一個特定的問題。但咱們知道,僅有存儲並不能提供應用程序所需的所有功能。你還須要編排工具,容器運行時,服務發現,網絡,API 網關等等。平臺覆蓋多層,將不一樣的工具組合在一塊兒,以解決更大的問題。
配置和微調不一樣的模塊使其安全可靠,並確保它利用的技術都能及時更新、全部漏洞都打了補丁,這並非一件容易的事情。使用平臺時,用戶不用額外擔憂這些細節問題。
你可能會注意到,全部的類別都圍繞着 Kubernetes 展開。這是由於 Kubernetes 雖然只是雲原生景觀圖這張拼圖中的一塊,但它倒是雲原生技術棧的核心。順便說一下,CNCF 剛建立時,Kubernetes 就是其中的第一個種子項目,後來纔有了其餘項目。
平臺可分爲四類:
在每一個類別中,針對相同或類似的問題,都有不一樣的工具可選擇。有一些是適用於新現實的預雲原生技術,還有一些則是全新的。區別在於它們的實現和設計方法。沒有完美的技術符合你的全部需求。大多數狀況下,技術受設計和架構選擇的限制——始終須要權衡取捨。
在選擇技術棧時,工程師必須仔細考慮每種能力和須要權衡取捨的地方,以肯定最合適的選項。雖然這樣會讓狀況變得更復雜,但在選擇應用程序所需的最適合的數據存儲、基礎設施管理、消息系統等方案時,這樣作是最可行的辦法。如今,構建一個系統比雲原生以前的時代容易多了。若是構建恰當,雲原生技術將提供更強大的靈活性。在現現在快速變化的技術生態中,這多是最重要的能力之一。(文章來自CSDN,鳴謝)