雲原生:架構設計原則及典型技術

雲原生概念定義

雲原生是面向雲應用設計的一種思想理念,充分發揮雲效能的最佳實踐路徑,幫助企業構建彈性可靠、松耦合、易管理可觀測的應用系統,提升交付效率,降低運維複雜度。代表技術包括不可變基礎設施、服務網格、聲明式 API 及 Serverless 等。

從產業效用方面來看,雲原生極大的釋放了雲的紅利,雲原生充分繼承雲的設計思想,未來應用將更多基於雲上進行本土應用開發,即雲原生應用更加適合雲的架構,而云計算也爲雲原生應用提供較好的基礎支撐,如資源隔離機制、分佈式部署、高可用架構等方面,通過新的架構、技術保障應用系統變得更加健壯,可以說雲原生最大程度發揮了雲的優勢。雲計算的拐點已至,雲原生成爲驅動業務增長的重要引擎。

從技術特徵方面來看,雲原生架構具備以下典型特徵:極致的彈性能力,不同於虛擬機分鐘級的彈性響應,以容器技術爲基礎的雲原生技術架構可實現秒級甚至毫秒級的彈性響應;服務自治故障自愈能力,基於雲原生技術棧構建的平臺具有高度自動化的分發調度調諧機制,可實現應用故障的自動摘除與重建,具有極強的自愈能力及隨意處置性;大規模可複製能力,可實現跨區域、跨平臺甚至跨服務商的規模化複製部署能力。

從應用價值方面來看,異構資源標準化,容器技術有效解決了異構環境的部署一致性問題,促進了資源的標準化,爲服務化、自動化提供了基礎。

雲原生架構設計原則

雲原生架構本身作爲一種架構,也有若干架構原則作爲應用架構的核心架構控制面,通過遵從這些架構原則可以讓技術主管和架構師在做技術選擇時不會出現大的偏差。

技術往往是把 “雙刃劍”,容器、微服務、DevOps、大量第三方組件的使用,在降低分佈式複雜性 和提升迭代速度的同時,因爲整體增大了軟件技術棧的複雜度和組件規模,所以不可避免地帶來了軟件 交付的複雜性,如果這裏控制不當,應用就無法體會到雲原生技術的優勢。

雲原生關鍵技術及成熟產品

容器:雲原生世界技術爆炸的奇點

1 安全容器

容器技術的採納率連年提升,已經開始進入企業的生產環境。以 Docker 爲代表的普通容器通過 Namespaces 和 cGroups 實現的隔離,共享內核的機制使得隔離性具有天然的缺陷無法根除,在多租戶場景下安全問題更加凸顯。

2 Serverless 容器

FaaS(Function as a Service)平臺提供的是函數級別的 Serverless 化部署,且應用場景多依賴於其綁定的觸發器,對函數的執行有一些配置限制,並且不支持進程常駐。傳統的應用大都是單體應用或者微服務應用,在遷移到 FaaS 平臺時,需要拆分函數,遷移成本較高。

Serverless 容器,可以很好地彌補 FaaS 的不足,Serverless 容器可以支持進程常駐的服務形態,不限運行時長,並擴大 Serverless 的應用場景。Serverless 容器支持服務的形態,傳統的單體應用或者微服務應用,幾乎可以無縫遷移到 Serverless 容器平臺上。

3 裸金屬容器

容器服務最早部署形態是基於 IaaS 虛擬機,以虛擬機節點作爲容器集羣的計算節點,並基於此構建容器的網絡、存儲和編排能力,這樣的堆疊架構雖然可以讓整個軟件棧分工明確、邊界清晰,但是帶來了較大的性能損耗和功能冗餘。此外如果用戶對實例安全隔離性要求較高,就需要藉助虛擬化技術,而虛擬化平臺不能很好支持該能力。基於以上痛點,在裸金屬服務器上搭建容器服務成爲一些對性能和實例隔離性較高用戶的選擇。

微服務

從軟件架構的演化來看,微服務架構的出現是用戶需求、開發週期以及市場規模變化下的必然發展。在單體架構中,應用大多數通過瀑布式模型進行開發,計劃、開發、測試、上線等階段單獨進行,以整個應用爲單位進行開發、維護。這種開發模式與印刷術出現之前的手寫時代相似。

手寫卷很難根據場景複用,有按需更新或修改的部分則需要整體重構。藉由類比,單體架構的優點和缺點都十分明顯:在小型應用中整體從設計到上線的速度很快,其中的管理工作簡單;但是在需要更新和修改的情況下,應用整體高度聚合,各部分高耦合,牽一髮而動全身,常常需要整體重新開發。

Serverless

無服務器是一種架構理念,其核心思想是將提供服務資源的基礎設施抽象成各種服務,以 API 接口的方式供給用戶按需調用,真正做到按需伸縮、按使用收費。這種架構體系結構消除了對傳統的海量持續在線服務器組件的需求,降低了開發和運維的複雜性,降低運營成本並縮短了業務系統的交付週期,使得用戶能夠專注業務本身。在無服務器架構的理念和方法下,有很多種無服務器的技術形態,目前成熟落地的有 3 種形態,函數即服務(FaaS)、後端即服務(BaaS)和 Serverless 容器。

雲原生芯片

雲原生技術的應用普及對雲計算的上下游技術也產生了革命性的影響,芯片技術首當其衝。引發芯片雲原生化演進的原因主要有兩個,一是應用負載模型的精細化、動態演進,要求芯片內核技術升級。從架構設計上,芯片內核的線程處理分割需要更加細粒度,獨立內核需要有獨享的二級緩存,來能夠最大程度的去適應雲原生環境中需要平行擴展的微服務化應用,爲用戶提供更高性價比的服務;二是超大規模數據中心和邊緣數據中心的需求猛增,這兩類數據中心在延時、散熱、功耗等需求與傳統數據中心不同,這對 CPU 的部署密度和能耗的要求越來越高,基於 ARM 架構的芯片成爲雲原生芯片的主要發展方向,比較典型的產品有阿里雲的倚天 710 芯片、AWS 的 Graviton 系列芯片等。

雲原生網絡

雲原生網絡的基本目標是滿足雲原生服務的網絡端點和服務間的互通性、安全性和負載均衡要求。Kubernetes 已經成爲容器編排的事實標準,容器網絡也需與 Kubernetes 的調度機制相匹配。

容器網絡接口 CNI(Container Network Interface) 是現行的網絡接口標準, CNI 接口只實現創建、刪除容器時的調用方法,其他所有的網絡能力都交由網絡廠商實現增值服務,這在一定程度上加速了網絡方案的繁榮,但是給用戶的方案選型造成了較大困擾。大部分的用戶場景都是基於網絡的通訊協議進行方案選擇,根據網絡協議的不同,可將網絡方案分爲路由模式、Overlay 和 L2 方案三種。

自 CNI 標準發佈到 2020 年,雲原生網絡已經演進近 6 年時間。也積累了大量的用戶落地案例和大規模的實踐案例。

雲原生數據庫

數據庫技術是信息技術領域的核心技術之一 , 幾乎所有的信息系統都需要使用數據庫系統來組織、存儲、操縱和管理業務數據。

雲原生數據庫是雲計算發展到成熟階段,數據庫針對雲計算架構所作的定製化改造。在傳統數據庫的系統架構下,必須是緊耦合的設計方式,才能最大效能地發揮系統的優勢。

雲原生數據庫在技術架構上的創新使得數據庫具備了高擴展性、易用性、迭代快速、成本降低等特點,能夠有力地支持企業向數字化、在線化、智能化演進。

掃描二維碼關注公衆號,點擊小程序鏈接獲取 **“**架構師技術聯盟書店” 電子書資料詳情。

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