當下超火的“云原生”,究竟是什么?
尤其以云原生為代表的下一代架構更是進入火箭式發(fā)展階段,以容器、Kubernetes、Serverless 等為代表的新技術引領移動互聯(lián)網(wǎng)進入急速賽道。
一、什么是云原生?
“云原生”這個概念歷史并不長,業(yè)內對它的理解也有很多版本。其中,認可度較高的是 CNCF(云原生計算基金會)給出的定義:
云原生技術有利于各組織在公有云、私有云和混合云等新型動態(tài)環(huán)境中,構建和運行可彈性擴展的應用。云原生的代表技術包括容器、服務網(wǎng)格、微服務、不可變基礎設施和聲明式 API。這些技術能夠構建容錯性好、易于管理和便于觀察的松耦合系統(tǒng)。結合可靠的自動化手段,云原生技術使工程師能夠輕松地對系統(tǒng)作出頻繁和可預測的重大變更。
云原生是包括了容器、微服務、DevOps、CI/CD、敏捷、無服務器、應用現(xiàn)代化、企業(yè)數(shù)字化轉型等等新概念為一體的技術體系,沒有特別清晰的邊界,且在持續(xù)演進發(fā)展之中。本質上來講,云原生是為了應對企業(yè) IT 場景一系列需求變化的產物:
在云計算技術普及之前,IT 系統(tǒng)主要以項目制的形式孤立建設,其需求和設計都是可規(guī)劃的;但在今天的場景下,分布式的系統(tǒng)部署方式和池化的資源分配方式是非常大的變化,此外應用系統(tǒng)的處理峰值需求往往難以預估,對可擴展能力提出了非常高的要求。
傳統(tǒng) IT 系統(tǒng)以單體架構為主,云計算時代的技術則更多以分布式架構落地。帶來了很多系統(tǒng)架構實現(xiàn)和業(yè)務實現(xiàn)方式、技術實現(xiàn)體系等的不同。
傳統(tǒng) IT 場景更重視穩(wěn)定性,操作以工具 + 人工介入為主;如今企業(yè)更看重流水線的價值,希望通過全方位的自動化提升 IT 的運維和開發(fā)的生產率。
云計算時代的業(yè)務追求持續(xù)在線,盡量減少停機,催生了灰度、藍綠、金絲雀等新一代發(fā)布流程。
云計算時代,開源軟件盛行,利用開源軟件的技術提升技術先進性,同時也帶來了很多新的問題。
正是因為不同時期的需求與技術路徑存在諸多差異,云計算業(yè)務場景需要針對性打造高效的實現(xiàn)方式,進而產生了云原生的理念:專為云計算場景設計的原生實現(xiàn)。
二、原生應用有什么 “關鍵特征”?
1、彈性伸縮性:根據(jù)業(yè)務負載自動伸縮,做到秒級擴縮容能力,靈活動態(tài)分配或釋放資源,結合彈性計費策略,這是降低用戶費用重要手段之一,對服務而言需要的關鍵技術點就是服務本身的 “輕量級容器化” 和以此為基礎的 “不可變基礎設施” 特征。
2、容錯性:負載均衡,自動限流降級熔斷,異常流量自動調度,故障隔離,宕機自動 遷移等。
3、可觀測性:豐富且細粒度的監(jiān)控(實時指標、鏈路追蹤、日志),秒級監(jiān)控能力,做到自動化報警,可持久化的提供查詢。
4、發(fā)布穩(wěn)定性:為應對頻繁變更帶來的穩(wěn)定性風險,需建立無人值守的變更發(fā)布系統(tǒng),具備自動化的灰度、藍綠等發(fā)布策略,同時建立變更前中后的監(jiān)控基線,具備異常變更的熔斷和自動化回滾能力。
5、易于管理:需要從人工 運維到自動運維的轉變,具備自動化異常分析診斷能力,無需登錄服務器。
6、極致體驗:包括應用分配/創(chuàng)建/資源申請/環(huán)境配置/開發(fā)測試/發(fā)布/監(jiān)控報警/排障定位等需要做到通暢與簡單,一站式體驗,避免繁雜的搭積木式操作。
7、彈性計費:支持按量(如流量,存儲量,調用次數(shù),時長等),按天(固定的如年/月/日),預留式,搶占式等多種定價策略,業(yè)務可根據(jù)實際情況靈活動態(tài)切換匹配出一個最優(yōu)計量模式。
三、云原生有哪些“關鍵技術”?
為便于讀者在了解實踐云原生架構的方法之前能有一個系統(tǒng)性的思維,在此詳解云原生基礎架構的代表技術,及利用云原生構建出來的云原生應用的特征。
1、容器
正如我們現(xiàn)實世界中的集裝箱技術加速了貿易全球化的進程,容器技術的出現(xiàn)也解決了微服務架構下大量應用部署的問題,容器的環(huán)境自包含特性,可以讓我們一次構建,到處運行,其不僅解決了虛擬機所能夠解決的問題,同時也能夠解決由于資源要求過高虛擬機無法解決的問題。
容器的特點主要包括:隔離應用依賴、創(chuàng)建應用鏡像并進行復制、創(chuàng)建容易分發(fā)的即啟即用的應用、支持實例簡單、快速地擴展等。
2、不可變的基礎設施
在傳統(tǒng)的物理服務器或虛擬機部署方式,因其每個都有自己的特征,我們稱之為寵物。
當部署在宿主機上的應用出現(xiàn)故障,我們需要對癥下藥,排除問題恢復業(yè)務,但是在云原生架構下,我們稱部署方式為牲畜,一旦應用部署完成之后,那么這套應用基礎設施就不會再修改了。
如果需要更新,那么需要現(xiàn)更改公共鏡像來構建新服務直接替換舊服務。而我們之所以能夠實現(xiàn)直接替換,就是因為容器提供了自包含的環(huán)境(包含應用運行所需的所有依賴),所以對于應用而言,完全不需要關心容器發(fā)生了什么變化,只需要把容器鏡像本身修改即可。
因此,對于云友好的基礎設施是隨時可以替換和更換的,這就是因為容器具有敏捷和一致性的能力,也就是云時代的應用基礎設施。
容器編排引擎相關工具有 Kubernetes 、Swarm 等,用以解決容器的管理和調度問題。
3、聲明式的 API
聲明式不同于命令式,通過向工具描述自己想要讓事物達到的目標終態(tài),然后由這個工具自己內部去計算和實現(xiàn)如何令這個事物達到目標狀態(tài)。
簡言之,聲明式設計中,描述的是目標狀態(tài),其中就為我們極大的簡化了實現(xiàn)過程中的異常情況及調度過程。
4、微服務
微服務相較于單體應用,將架構進行拆解,解決了單體應用后期難以擴展和低效的開發(fā)效率等問題。
根據(jù)領域模型將巨大的單體分成界限清晰的微服務,并保持每個服務獨立可以迭代,具有服務高度自治、高效迭代、易于擴展和支持多語言編程等優(yōu)點。
5、服務網(wǎng)格
微服務之間該如何實現(xiàn)調用,以及中間的調用策略該如何執(zhí)行,此刻就需要用到服務網(wǎng)格。
目前服務網(wǎng)格架構有侵入式和非侵入式兩種架構,區(qū)別在侵入式需要在開發(fā)框架中進行集成,需要使用 SDK 來實現(xiàn)一部分功能。
非侵入式架構在部署階段以 sidecar 模式與業(yè)務運行結合,通過接管網(wǎng)絡流量實現(xiàn)透明代理,從而實現(xiàn)一系列網(wǎng)絡策略及監(jiān)控,開發(fā)者僅需專注業(yè)務即可,無需對代碼進行修改。
這種方式以服務網(wǎng)格(Service Mesh)為代表,讓應用更加輕量,目前最火的服務網(wǎng)格技術有 Istio、Linkerd、Dubbo Mesh 等,將其下沉到基礎設施層,用戶可以快速編排出復雜環(huán)境、復雜依賴關系的應用程序。
同時開發(fā)者又無須過分關心應用程序的監(jiān)控、擴展性、服務發(fā)現(xiàn)和分布式追蹤這些煩瑣的事情,從而更專注于自身業(yè)務程序開發(fā)。
聲明:免責聲明:本文內容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權,也不承認相關法律責任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內容,請發(fā)
送郵件至:operations@xinnet.com進行舉報,并提供相關證據(jù),一經(jīng)查實,本站將立刻刪除涉嫌侵權內容。本站原創(chuàng)內容未經(jīng)允許不得轉載,或轉載時
需注明出處:新網(wǎng)idc知識百科