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