??這里是【阿里云·云原生架構(gòu)·白皮書】,關(guān)注我學(xué)習(xí)云原生不迷路
??如果對(duì)你有幫助,給博主一個(gè)免費(fèi)的點(diǎn)贊以示鼓勵(lì)
歡迎各位??點(diǎn)贊??評(píng)論收藏??
??專欄介紹
【阿里云·云原生架構(gòu)·白皮書】 主要更新一些在學(xué)習(xí)云原生架構(gòu)時(shí)的一些總結(jié),以及對(duì)白皮書內(nèi)容的解讀。
??本期介紹
主要介紹云原生架構(gòu)定義
??云原生架構(gòu)定義
從技術(shù)的角度,云原生架構(gòu)是基于云原生技術(shù)的一組架構(gòu)原則和設(shè)計(jì)模式的集合,旨在將云應(yīng)用中的非業(yè)務(wù)代碼部分進(jìn)行最大化的剝離,從而讓云設(shè)施接管應(yīng)用中原有的大量非功能特性(如彈性、韌性、安全、可觀測性、灰度等),使業(yè)務(wù)不再有非功能性業(yè)務(wù)中斷困擾的同時(shí),具備輕量、敏捷、高度自動(dòng)化的特點(diǎn)。
云原生架構(gòu)在這兩年逐漸成為應(yīng)用部署的主流方式。概括來講云原生是在云計(jì)算時(shí)代一種構(gòu)建和運(yùn)行應(yīng)用程序的方法,充分利用和發(fā)揮云平臺(tái)的彈性自動(dòng)化優(yōu)勢,在云上以最佳方式運(yùn)行。
云原生架構(gòu)與傳統(tǒng)架構(gòu)的對(duì)比:
上圖展示了在代碼中通常包括三部分:業(yè)務(wù)代碼、三方軟件、處理非功能特性的代碼。其中“業(yè)務(wù)代碼”指實(shí)現(xiàn)業(yè)務(wù)邏輯的代碼;“三方軟件”是業(yè)務(wù)代碼中依賴的所有三方庫,包括業(yè)務(wù)庫和基礎(chǔ)庫;“處理非功能性的代碼”指實(shí)現(xiàn)高可用、安全、可觀測性等非功能性能力的代碼。
三部分中只有業(yè)務(wù)代碼是核心,是對(duì)業(yè)務(wù)真正帶來價(jià)值的,另外兩個(gè)部分都只算附屬物,但隨著軟件規(guī)模的增大、業(yè)務(wù)模塊規(guī)模變大、部署環(huán)境增多、分布式復(fù)雜性增強(qiáng),使得今天的軟件構(gòu)建變得越來越復(fù)雜,對(duì)開發(fā)人員的技能要求也越來越高。云原生架構(gòu)相比較傳統(tǒng)架構(gòu)進(jìn)了一大步,從業(yè)務(wù)代碼中剝離了大量非功能性特性(不會(huì)是所有,比如易用性還不能剝離)到laaS和PaaS中,從而減少業(yè)務(wù)代碼開發(fā)人員的技術(shù)關(guān)注范圍,通過云廠商的專業(yè)性提升應(yīng)用的非功能性能力。
此外,具備云原生架構(gòu)的應(yīng)用可以最大程度利用云服務(wù)和提升軟件交付能力,進(jìn)一步加快軟件開發(fā):
??代碼結(jié)構(gòu)發(fā)生巨大變化
云原生架構(gòu)產(chǎn)生的最大影響就是讓開發(fā)人員的編程模型發(fā)生了巨大變化。今天大部分的編程語言中,都有文件、網(wǎng)絡(luò)、線程等元素,這些元素為充分利用單機(jī)資源帶來好處的同時(shí),也提升了分布式編程的復(fù)雜性;因此大量框架、產(chǎn)品涌現(xiàn),來解決分布式環(huán)境中的網(wǎng)絡(luò)調(diào)用問題、高可用問題、CPU爭用問題、分布式存儲(chǔ)問題……
在云的環(huán)境中,比如“如何獲取存儲(chǔ)”變成了若干服務(wù),包括對(duì)象存儲(chǔ)服務(wù)、塊存儲(chǔ)服務(wù)和沒有隨機(jī)訪問的文件存儲(chǔ)服務(wù)。云不僅改變了開發(fā)人員獲得這些存儲(chǔ)能力的界面,還在于云產(chǎn)品在這些OpenAPl或者開源SDK背后把分布式場景中的高可用挑戰(zhàn)、自動(dòng)擴(kuò)縮容挑戰(zhàn)、安全挑戰(zhàn)、運(yùn)維升級(jí)挑戰(zhàn)等都處理了,應(yīng)用的開發(fā)人員就不用在其代碼中處理節(jié)點(diǎn)宕機(jī)前如何把本地保存的內(nèi)容同步到遠(yuǎn)端的問題,也不用處理當(dāng)業(yè)務(wù)峰值到來時(shí)如何對(duì)存儲(chǔ)節(jié)點(diǎn)進(jìn)行擴(kuò)容的問題,而應(yīng)用的運(yùn)維人員不用在發(fā)現(xiàn).zero day安全問題時(shí)緊急對(duì)三方存儲(chǔ)軟件進(jìn)行升級(jí)……
云把三方軟硬件的能力升級(jí)成了服務(wù),開發(fā)人員的開發(fā)復(fù)雜度和運(yùn)維人員的運(yùn)維工作量都得到極大降低。顯然,如果這樣的云服務(wù)用得越多,那么開發(fā)和運(yùn)維人員的負(fù)擔(dān)就越少,企業(yè)在非核心業(yè)務(wù)實(shí)現(xiàn)上從必須的負(fù)擔(dān)變成了可控支出。在一些開發(fā)能力強(qiáng)的公司中,對(duì)這些三方軟硬件能力的處理往往是交給應(yīng)用框架(或者說公司內(nèi)自己的中間件)來做的;在云的時(shí)代云廠商提供了更具 SLA的服務(wù),使得所有軟件公司都可以由此獲益。
這些使得業(yè)務(wù)代碼的開發(fā)人員技能棧中,不再需要掌握文件及其分布式處理技術(shù),不再需要掌握各種復(fù)雜的網(wǎng)絡(luò)技術(shù)……簡化讓業(yè)務(wù)開發(fā)變得更敏捷、更快速!
??非功能性特性的大量委托
任何應(yīng)用都提供兩類特性,功能性特性和非功能性特性。功能性特性是真正為業(yè)務(wù)帶來價(jià)值的代碼,比如如何建立客戶資料、如何處理訂單、如何支付等等;即使是一些通用的業(yè)務(wù)功能特性,比如組織管理、業(yè)務(wù)字典管理、搜索等等也是緊貼業(yè)務(wù)需求的。非功能性特性是沒有給業(yè)務(wù)帶來直接業(yè)務(wù)價(jià)值,但通常又是必不可少的特性,比如高可用能力、容災(zāi)能力、安全特性、可運(yùn)維性、易用性、可測試性、灰度發(fā)布能力等等。
不能說云計(jì)算解決了所有非功能性問題,但確實(shí)大量非功能性特性,特別是分布式環(huán)境下復(fù)雜非功能性問題,被云產(chǎn)品處理掉了。以大家最頭疼的高可用為例,云產(chǎn)品在多個(gè)層面為應(yīng)用提供了解決方案:
- 虛機(jī): 當(dāng)虛機(jī)檢測到底層硬件異常時(shí),自動(dòng)幫助應(yīng)用做熱遷移,遷移后的應(yīng)用不需重新啟動(dòng)而仍然具備對(duì)外服務(wù)的能力,應(yīng)用對(duì)整個(gè)遷移過程都不會(huì)有任何感知;
- 容器: 有時(shí)應(yīng)用所在的物理機(jī)是正常的,只是應(yīng)用自身的問題(比如 bug、資源耗盡等)而無法正常對(duì)外提供服務(wù)。容器通過監(jiān)控檢查探測到進(jìn)程狀態(tài)異常,從而實(shí)施異常節(jié)點(diǎn)的下線、新節(jié)點(diǎn)上線和生產(chǎn)流量的切換等操作,整個(gè)過程自動(dòng)完成而無需運(yùn)維人員干預(yù);
-
云服務(wù): 如果應(yīng)用把“有狀態(tài)”部分都交給了云服務(wù)(如緩存、數(shù)據(jù)庫、對(duì)象存儲(chǔ)等),加上全局對(duì)象的持有小型化或具備從磁盤快速重建能力,由于云服務(wù)本身是具備極強(qiáng)的高可用能力,那么應(yīng)用本身會(huì)變成更薄的“無狀態(tài)”應(yīng)用,因?yàn)楦呖捎霉收蠋淼臉I(yè)務(wù)中斷會(huì)降至分鐘級(jí);如果應(yīng)用是N-M的對(duì)等架構(gòu)架構(gòu)模式,那么結(jié)合Load
Balancer產(chǎn)品可獲得幾乎無損的高可用能力!
??高度自動(dòng)化的軟件交付
軟件一旦開發(fā)完成,需要在公司內(nèi)外部各類環(huán)境中部署和交付,以將軟件價(jià)值交給最終客戶。軟件交付的困難在于開發(fā)環(huán)境到生產(chǎn)環(huán)境的差異(公司環(huán)境到客戶環(huán)境之間的差異)以及軟件交付和運(yùn)維人員的技能差異,填補(bǔ)這些差異的是一大堆安裝手冊、運(yùn)維手冊和培訓(xùn)文檔。容器以一種標(biāo)準(zhǔn)的方式對(duì)軟件打包,容器及相關(guān)技術(shù)則幫助屏蔽不同環(huán)境之間的差異,進(jìn)而基于容器做標(biāo)準(zhǔn)化的軟件交付。
對(duì)自動(dòng)化交付而言,還需要一種能夠描述不同環(huán)境的工具,讓軟件能夠“理解”目標(biāo)環(huán)境、交付內(nèi)容、配置清單并通過代碼去識(shí)別目標(biāo)環(huán)境的差異,根據(jù)交付內(nèi)容以“面向終態(tài)”的方式完成軟件的安裝、配置、運(yùn)行和變更。
基于云原生的自動(dòng)化軟件交付相比較當(dāng)前的人工軟件交付是一個(gè)巨大的進(jìn)步。以微服務(wù)為例,應(yīng)用微服務(wù)化以后,往往被部署到成千上萬個(gè)節(jié)點(diǎn)上,如果系統(tǒng)不具備高度的自動(dòng)化能力,任何一次新業(yè)務(wù)的上線,都會(huì)帶來極大的工作量挑戰(zhàn),嚴(yán)重時(shí)還會(huì)導(dǎo)致業(yè)務(wù)變更超過上線窗口而不可用。
??總結(jié)
??云原生架構(gòu)的特點(diǎn)
容器化封裝。 容器化封裝是指以容器為基礎(chǔ),應(yīng)用程序封裝在容器之中,在容器里運(yùn)行,實(shí)現(xiàn)資源的相對(duì)隔離與容器鏡像的重復(fù)使用。
面向微服務(wù)。 面向微服務(wù)是指把一個(gè)大的功能應(yīng)用拆分成一個(gè)個(gè)功能單一、相對(duì)獨(dú)立、相互解耦的微應(yīng)用,微應(yīng)用之間通過接口進(jìn)行通訊。
動(dòng)態(tài)管理。 動(dòng)態(tài)管理指通過一個(gè)統(tǒng)一的編排工具,比如K8S,來動(dòng)態(tài)的管理和調(diào)度這些微服務(wù)。文章來源:http://www.zghlxwxcb.cn/news/detail-493298.html
??云原生架構(gòu)的優(yōu)勢
快速。 天下武功,無堅(jiān)不摧,唯快不破!云原生架構(gòu)使用敏捷開發(fā)和DevOps,不但可以讓企業(yè)快速的開發(fā)產(chǎn)品,自動(dòng)化部署產(chǎn)品,同時(shí)還能持續(xù)的更新產(chǎn)品,讓產(chǎn)品跟得上需求,甚至是引導(dǎo)需求,讓企業(yè)立于不敗之地。
彈性擴(kuò)展。 云原生架構(gòu)天生具有云計(jì)算的特點(diǎn)。它的資源是可以按照實(shí)際情況進(jìn)行伸縮,這樣不但提高資源的利用率,也大大降低了企業(yè)成本。
安全與強(qiáng)壯。 云原生架構(gòu)依托于容器編排工具(K8S)與微服務(wù)的組合,應(yīng)用就擁有了自動(dòng)恢復(fù)能力、容錯(cuò)能力、故障隔離能力,讓應(yīng)用時(shí)刻處于可用的狀態(tài)。
屏蔽底層差異。 因?yàn)槭褂昧巳萜骰夹g(shù),應(yīng)用運(yùn)行于容器之中,應(yīng)用就不需要考慮底層硬件的差異,只要是能運(yùn)行容器鏡像的硬件都可以運(yùn)行程序,大大簡化了開發(fā)工作量。同時(shí)對(duì)運(yùn)維人員也非常友好,不需要再為環(huán)境問題而苦惱。文章來源地址http://www.zghlxwxcb.cn/news/detail-493298.html
到了這里,關(guān)于【阿里云·云原生架構(gòu)·白皮書】保姆級(jí)解讀 一、 云原生架構(gòu)定義的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!