www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 架構(gòu)師社區(qū)
[導(dǎo)讀]近年來(lái),隨著云計(jì)算概念和技術(shù)的普及,云原生一詞也越來(lái)越熱門(mén),無(wú)論是應(yīng)用還是安全,凡是和云相關(guān)的,都要在云后面加上原生二字,好像不提云原生,在技術(shù)上就落后了一大截。一、云原生產(chǎn)生背景隨著云計(jì)算技術(shù)的發(fā)展,企業(yè)上云已成為趨勢(shì),越來(lái)越多的企業(yè)都已將應(yīng)用部署到了云上。但是應(yīng)用上云并不意味...


近年來(lái),隨著云計(jì)算概念和技術(shù)的普及,云原生一詞也越來(lái)越熱門(mén),無(wú)論是應(yīng)用還是安全,凡是和云相關(guān)的,都要在云后面加上原生二字,好像不提云原生,在技術(shù)上就落后了一大截。

一、云原生產(chǎn)生背景


隨著云計(jì)算技術(shù)的發(fā)展,企業(yè)上云已成為趨勢(shì),越來(lái)越多的企業(yè)都已將應(yīng)用部署到了云上。但是應(yīng)用上云并不意味著就能充分利用云平臺(tái)的優(yōu)勢(shì)。目前,大部分云化的應(yīng)用,都是基于傳統(tǒng)的軟件架構(gòu)來(lái)搭建的,然后再移植到云上去運(yùn)行,和云平臺(tái)的整合度非常低,主要表現(xiàn)在以下幾個(gè)方面:


1. 操作系統(tǒng)依賴(lài)強(qiáng)
傳統(tǒng)應(yīng)用程序和底層操作系統(tǒng)、硬件、存儲(chǔ)和后備服務(wù)之間存在緊密的依賴(lài)關(guān)系,這些依賴(lài)關(guān)系使得應(yīng)用程序在跨越云基礎(chǔ)設(shè)施進(jìn)行遷移和擴(kuò)展時(shí)非常復(fù)雜且有風(fēng)險(xiǎn)。


2. 系統(tǒng)緊耦合
傳統(tǒng)的企業(yè)應(yīng)用多采用單體架構(gòu),將許多不同的功能模塊捆綁在一個(gè)部署包中,導(dǎo)致功能模塊之間產(chǎn)生不必要的依賴(lài),并導(dǎo)致開(kāi)發(fā)和部署過(guò)程中喪失敏捷性,無(wú)法獨(dú)立的部署、發(fā)布更新、重啟。


3. 手動(dòng)化擴(kuò)展
通過(guò)手工管理基礎(chǔ)設(shè)施,包括手工編寫(xiě)管理服務(wù)器、網(wǎng)絡(luò)和存儲(chǔ)的配置腳本。在大規(guī)模復(fù)雜的操作中,操作人員在診斷問(wèn)題時(shí)會(huì)很慢,而且無(wú)法大規(guī)模地實(shí)施。手工制作的自動(dòng)化腳本還有可能將人為錯(cuò)誤硬編碼到基礎(chǔ)設(shè)施中。


4. 恢復(fù)緩慢
基于虛擬機(jī)的基礎(chǔ)設(shè)施相對(duì)于基于微服務(wù)的應(yīng)用程序來(lái)說(shuō),是緩慢而低效的。因?yàn)閱蝹€(gè)虛擬機(jī)啟動(dòng)/關(guān)閉的速度很慢,并且在部署應(yīng)用程序代碼之前就會(huì)帶來(lái)巨大的開(kāi)銷(xiāo)。


5. 瀑布開(kāi)發(fā)
傳統(tǒng)應(yīng)用的開(kāi)發(fā)模式,IT團(tuán)隊(duì)定期發(fā)布軟件,通常間隔幾周或幾個(gè)月。盡管發(fā)布的許多組件已經(jīng)提前準(zhǔn)備好了,并且沒(méi)有依賴(lài)關(guān)系,也必須等待版本中的其他組件??蛻?hù)想要的功能被延遲,企業(yè)失去贏得客戶(hù)和增加收入的機(jī)會(huì)。


總體來(lái)說(shuō),提供方便的基礎(chǔ)設(shè)施,只是對(duì)云計(jì)算最初級(jí)的利用(提升利用率,按需使用,不夠了隨時(shí)擴(kuò)容),無(wú)法充分發(fā)揮云計(jì)算的優(yōu)勢(shì),要想充分發(fā)揮云計(jì)算的優(yōu)勢(shì)(彈性、高可用性、易擴(kuò)展性),就必須進(jìn)行真正的云化,不僅僅是基礎(chǔ)設(shè)施和平臺(tái)的變化,應(yīng)用也需要做出改變,這就需要擯棄傳統(tǒng)的方法,在架構(gòu)設(shè)計(jì)、開(kāi)發(fā)方式、部署維護(hù)等各個(gè)階段和方面都基于云的特點(diǎn)重新設(shè)計(jì),從而建設(shè)全新的云化的應(yīng)用,也就是云原生的應(yīng)用。


二、云原生的定義


關(guān)于什么是云原生,不同的人定義不同,目前比較權(quán)威的定義主要來(lái)自Pivotal公司和云原生計(jì)算基金會(huì)(Cloud Native Computing Foundation,簡(jiǎn)稱(chēng)CNCF)。


1. Pivotal的定義
Pivotal公司是云原生應(yīng)用的提出者,并推出了Cloud Foundry和Spring系列開(kāi)發(fā)框架。早在2015年,Pivotal公司的Matt Stine寫(xiě)了一本名為《遷移到云原生應(yīng)用架構(gòu)》的小冊(cè)子,其中探討了云原生應(yīng)用架構(gòu)的幾個(gè)主要特征:符合12因素的應(yīng)用、面向微服務(wù)架構(gòu)、自服務(wù)敏捷架構(gòu)、基于API的協(xié)作以及抗脆弱性。


在2017年10月,接受采訪(fǎng)時(shí),Matt Stine對(duì)云原生的定義做了小幅調(diào)整,將云原生架構(gòu)定義為具有以下六個(gè)特質(zhì):模塊化(Modularity)、可觀測(cè)性(Observability)、可部署性(Deployability)、可測(cè)試性(Testability)、可處理性(Disposability)以及可替換性(Replaceability)。而Pivotal官網(wǎng)對(duì)云原生概括為4個(gè)要點(diǎn):DevOps、持續(xù)交付、微服務(wù)以及容器化。


萬(wàn)字長(zhǎng)文揭穿你,根本就不懂云原生!

圖 1:Pivotal云原生思想


Matt Stine認(rèn)為云原生是一個(gè)思想的集合,云原生既包含技術(shù)(微服務(wù),敏捷基礎(chǔ)設(shè)施),也包含管理(DevOps、持續(xù)交付、康威定律以及重組等),云原生也可以說(shuō)是一系列云技術(shù)、企業(yè)管理方法的集合。


2. CNCF的定義

CNCF是在2015年由Google聯(lián)合Linux基金會(huì)成立的,它是一個(gè)非盈利組織,主要宗旨是統(tǒng)一云計(jì)算接口和相關(guān)標(biāo)準(zhǔn),通過(guò)技術(shù)優(yōu)勢(shì)和用戶(hù)價(jià)值創(chuàng)造一套新的通用容器技術(shù),推動(dòng)云計(jì)算和服務(wù)的發(fā)展。起初CNCF對(duì)云原生(Cloud Native)的定義包含以下三個(gè)方面:


  • 應(yīng)用容器化

  • 面向微服務(wù)架構(gòu)

  • 應(yīng)用支持容器的編排調(diào)度


到了2018年,隨著云原生生態(tài)的不斷壯大,所有主流云計(jì)算供應(yīng)商都加入了該基金會(huì),且從云原生的全景圖中可以看出云原生正在蠶食原先非云原生應(yīng)用的部分。


CNCF基金會(huì)中的會(huì)員以及容納的項(xiàng)目越來(lái)越多,該定義已經(jīng)限制了云原生生態(tài)的發(fā)展,CNCF為云原生進(jìn)行了重新定位,并于2018年6月11日明確了云原生定義1.0版本:云原生技術(shù)有利于各組織在公有云、私有云和混合云等新型動(dòng)態(tài)環(huán)境中,構(gòu)建和運(yùn)行可彈性擴(kuò)展的應(yīng)用。云原生的代表技術(shù)包括容器、服務(wù)網(wǎng)格、微服務(wù)、不可變基礎(chǔ)設(shè)施和聲明式API。


萬(wàn)字長(zhǎng)文揭穿你,根本就不懂云原生!

圖 2:云原生代表技術(shù)


這些技術(shù)能夠構(gòu)建容錯(cuò)性好、易于管理和便于觀察的松耦合系統(tǒng)。結(jié)合可靠的自動(dòng)化手段,云原生技術(shù)使工程師能夠輕松地對(duì)系統(tǒng)作出頻繁和可預(yù)測(cè)的重大變更。


三、云原生相關(guān)技術(shù)


依據(jù)CNCF發(fā)布的云原生1.0版本的定義,云原生技術(shù)主要包括容器、微服務(wù)、服務(wù)網(wǎng)格、不可變基礎(chǔ)設(shè)施以及聲明式API,下面就這幾類(lèi)技術(shù)做個(gè)概述:


1. 容器技術(shù)
容器技術(shù)和云原生好比一對(duì)螺旋體,容器技術(shù)催生了云原生思潮,云原生生態(tài)推動(dòng)了容器技術(shù)發(fā)展。從2013年Docker技術(shù)誕生,到2015年CNCF這個(gè)云原生領(lǐng)域重量級(jí)聯(lián)盟成立,這不是歷史的巧合而是歷史的必然。作為云原生關(guān)鍵技術(shù)之一的容器,從2013年誕生以來(lái)一直是行業(yè)關(guān)注的焦點(diǎn)之一。


2013年之前,云計(jì)算行業(yè)一直在為云原生的正確打開(kāi)姿勢(shì)而操心。Platform as a Service(PaaS)看起來(lái)是個(gè)有前途的方向。2006年Fotango公司發(fā)布的Zimi服務(wù),可以說(shuō)是PaaS行業(yè)的鼻祖,具有按使用付費(fèi)、免運(yùn)維(Serverless)、API化配置和服務(wù)等典型云原生的特征;2008年Google推出Google App Engine(GAE);2011年P(guān)ivotal發(fā)布Cloud Foundry。


這些早期的PaaS平臺(tái)在云原生領(lǐng)域進(jìn)行了非常有益的探索,推動(dòng)了云原生生態(tài)的健康發(fā)展,但是這些早期探索技術(shù)并沒(méi)有形成大的行業(yè)趨勢(shì),而是局限在一些的特定的領(lǐng)域。直到Docker開(kāi)源,大家才如夢(mèng)方醒,原來(lái)不是方向不對(duì),而是應(yīng)用分發(fā)和交付的手段不行。


Docker真正核心的創(chuàng)新是容器鏡像(docker image),一種新型的應(yīng)用打包、分發(fā)和運(yùn)行機(jī)制。容器鏡像將應(yīng)用運(yùn)行環(huán)境,包括代碼、依賴(lài)庫(kù)、工具、資源文件和元信息等,打包成一種操作系統(tǒng)發(fā)行版無(wú)關(guān)的不可變更軟件包。


容器鏡像打包了整個(gè)容器運(yùn)行依賴(lài)的環(huán)境,以避免依賴(lài)運(yùn)行容器的服務(wù)器的操作系統(tǒng),從而實(shí)現(xiàn)“build once, run anywhere”。容器鏡像一旦構(gòu)建完成,就變成read only,成為不可變基礎(chǔ)設(shè)施的一份子。


2. 微服務(wù)
微服務(wù)架構(gòu)是相對(duì)于單體架構(gòu)來(lái)說(shuō)的,兩者分屬不同的架構(gòu)風(fēng)格。在微服務(wù)架構(gòu)中,服務(wù)是一個(gè)單一的、可獨(dú)立部署的軟件組件,它實(shí)現(xiàn)了一些有用的功能,服務(wù)的API封裝了其內(nèi)部實(shí)現(xiàn),與單體架構(gòu)不同,開(kāi)發(fā)人員無(wú)法繞過(guò)服務(wù)的API直接訪(fǎng)問(wèn)服務(wù)內(nèi)部的方法和數(shù)據(jù),因此,微服務(wù)架構(gòu)強(qiáng)制實(shí)現(xiàn)了應(yīng)用程序的模塊化。


微服務(wù)架構(gòu)的最核心特性是服務(wù)之間的松耦合性。服務(wù)之間的交互采用API完成,這樣做就封裝了服務(wù)的實(shí)現(xiàn)細(xì)節(jié),從而實(shí)現(xiàn)了在不影響客戶(hù)端的情況下,對(duì)實(shí)現(xiàn)方式做出修改。


微服務(wù)架構(gòu)通過(guò)將大的系統(tǒng)按照業(yè)務(wù)服務(wù)的粒度進(jìn)行拆分,每個(gè)服務(wù)可獨(dú)立開(kāi)發(fā)、測(cè)試、驗(yàn)證和部署,這樣分解后,帶來(lái)的好處有如下幾點(diǎn):


  • 使大型的復(fù)雜應(yīng)用程序可以持續(xù)交付和持續(xù)部署

  • 每個(gè)服務(wù)都相對(duì)較小并容易維護(hù)

  • 服務(wù)可以獨(dú)立部署

  • 服務(wù)可以獨(dú)立擴(kuò)展

  • 微服務(wù)架構(gòu)可以實(shí)現(xiàn)團(tuán)隊(duì)的自治

  • 更容易實(shí)驗(yàn)和采納新的技術(shù)

  • 更好的容錯(cuò)性


3. 服務(wù)網(wǎng)格

服務(wù)網(wǎng)格是用于處理服務(wù)間通信的專(zhuān)用基礎(chǔ)設(shè)施層,負(fù)責(zé)在微服務(wù)間進(jìn)行可靠地請(qǐng)求傳遞。服務(wù)網(wǎng)格通常通過(guò)一組輕量級(jí)網(wǎng)絡(luò)代理來(lái)實(shí)現(xiàn),這些代理與應(yīng)用程序代碼一起部署,而不需要感知應(yīng)用程序本身。


隨著規(guī)模和復(fù)雜性的增長(zhǎng),服務(wù)網(wǎng)格包含的實(shí)現(xiàn)的功能越來(lái)越多,它的需求包括服務(wù)發(fā)現(xiàn)、負(fù)載均衡、故障恢復(fù)、指標(biāo)收集和監(jiān)控以及通常更加復(fù)雜的運(yùn)維需求,例如A/B測(cè)試、金絲雀發(fā)布、限流、訪(fǎng)問(wèn)控制和端到端認(rèn)證等。其部署結(jié)構(gòu)如下圖所示:


萬(wàn)字長(zhǎng)文揭穿你,根本就不懂云原生!

圖 3:服務(wù)網(wǎng)格部署圖


服務(wù)網(wǎng)格有如下幾個(gè)特點(diǎn):


  • 應(yīng)用程序間通訊的中間層

  • 輕量級(jí)網(wǎng)絡(luò)代理

  • 應(yīng)用程序無(wú)感知

  • 解耦應(yīng)用程序的重試/超時(shí)、監(jiān)控、追蹤和服務(wù)發(fā)現(xiàn)


如果用一句話(huà)來(lái)解釋什么是服務(wù)網(wǎng)格,可以將它比作是應(yīng)用程序或者說(shuō)微服務(wù)間的TCP/IP,負(fù)責(zé)服務(wù)之間的網(wǎng)絡(luò)訪(fǎng)問(wèn)、限流、熔斷和監(jiān)控。對(duì)于編寫(xiě)應(yīng)用程序來(lái)說(shuō)一般無(wú)須關(guān)心TCP/IP這一層(比如通過(guò)HTTP協(xié)議的RESTful應(yīng)用),同樣使用服務(wù)網(wǎng)格也就無(wú)須關(guān)系服務(wù)之間的那些原來(lái)是通過(guò)應(yīng)用程序或者其他框架實(shí)現(xiàn)的事情,比如Spring Cloud、OSS,現(xiàn)在只要交給服務(wù)網(wǎng)格就可以了,從而極大地方便了微服務(wù)應(yīng)用的開(kāi)發(fā)。


4. 不可變基礎(chǔ)設(shè)施
一個(gè)工作負(fù)載(比如容器、虛擬機(jī)等)一旦部署以后就不會(huì)被修改。當(dāng)需要更新,修復(fù)或修改某些內(nèi)容的時(shí)候,只需要將新的、經(jīng)過(guò)驗(yàn)證的工作負(fù)載替換舊的即可。


不可變基礎(chǔ)設(shè)施的作用主要體現(xiàn)在系統(tǒng)的穩(wěn)定性方面。傳統(tǒng)的應(yīng)用程序一旦部署到用戶(hù)特定的服務(wù)器上以后,服務(wù)器系統(tǒng)是會(huì)不斷變化的,不是操作系統(tǒng)升級(jí),就是安裝了新的應(yīng)用,可能引起沖突,導(dǎo)致應(yīng)用程序需要跟著用戶(hù)系統(tǒng)環(huán)境的改變而不斷升級(jí),這中間就會(huì)不斷地出現(xiàn)新的問(wèn)題。而不可變基礎(chǔ)設(shè)施就規(guī)避了所有的這些問(wèn)題,因?yàn)樵圃鷳?yīng)用是部署在不可變的基礎(chǔ)設(shè)施上的,因此就不存在變化的問(wèn)題。


5. 聲明式API
聲明式API是一種比命令式API更高級(jí)的接口設(shè)計(jì)方式,簡(jiǎn)單來(lái)說(shuō),命令式API提供給用戶(hù)怎么做的能力,而聲明式API給用戶(hù)提供了做什么的能力。


聲明式API是比命令式API更高級(jí)的一種接口,舉個(gè)例子,假如我們有一個(gè)炒菜機(jī),如果炒菜機(jī)提供的接口是放油、放調(diào)料、放食材、大火、小火等操作,那就是命令式API。


如果炒菜機(jī)提供的接口是來(lái)盤(pán)宮保雞丁、來(lái)盤(pán)魚(yú)香肉絲之類(lèi)的,那就是聲明式API了。聲明式API比較典型的例子就是數(shù)據(jù)庫(kù)提供的SQL接口,只需要告訴數(shù)據(jù)庫(kù)你需要什么數(shù)據(jù)即可,至于怎么去獲取這些數(shù)據(jù),數(shù)據(jù)庫(kù)自己會(huì)去按步驟操作。


四、云原生的意義


傳統(tǒng)的軟件開(kāi)發(fā)模式,在使用云計(jì)算平臺(tái)時(shí)和使用物理機(jī)時(shí)沒(méi)有什么大的區(qū)別,那么就沒(méi)有將云平臺(tái)的能力利用充分,在一定程度上導(dǎo)致了資源的浪費(fèi)。云原生就是用來(lái)解決這一類(lèi)的問(wèn)題,將云計(jì)算平臺(tái)的優(yōu)勢(shì)發(fā)揮到極致。


讓企業(yè)應(yīng)用能夠利用云平臺(tái)實(shí)現(xiàn)資源的按需分配和彈性伸縮,是云原生應(yīng)用重點(diǎn)關(guān)注的地方。它要求云原生應(yīng)用具備可用性和伸縮性,以及自動(dòng)化部署和管理能力,可隨處運(yùn)行,并且能夠通過(guò)持續(xù)集成、持續(xù)交付提升研發(fā)、測(cè)試與發(fā)布的效率。云原生應(yīng)用并未完全顛覆傳統(tǒng)的應(yīng)用,采用云原生的設(shè)計(jì)模式可以?xún)?yōu)化和改進(jìn)傳統(tǒng)應(yīng)用模式,使應(yīng)用更加適合在云平臺(tái)上運(yùn)行。


云原生存在的意義是解放開(kāi)發(fā)和運(yùn)維,而不是讓開(kāi)發(fā)和運(yùn)維的工作變得更加復(fù)雜和繁重。云原生還關(guān)注規(guī)模,分布式系統(tǒng)應(yīng)該具備將節(jié)點(diǎn)進(jìn)行水平擴(kuò)展的能力,能輕易地?cái)U(kuò)展到成千上萬(wàn)的規(guī)模,并且這些節(jié)點(diǎn)具備多租戶(hù)和自愈能力。云原生使得應(yīng)用本身具備“柔性”,即面對(duì)強(qiáng)大壓力的緩解能力以及壓力過(guò)后的恢復(fù)能力。


五、云原生當(dāng)前生態(tài)


作為云原生領(lǐng)域最具權(quán)威的組織,CNCF在每年的年度報(bào)告中都會(huì)提及CNCF Landscape項(xiàng)目,該項(xiàng)目開(kāi)始于2016年11月,旨在為云原生應(yīng)用者提供一個(gè)資源地圖,幫助企業(yè)和開(kāi)發(fā)人員快速了解云原生體系的全貌。CNCF Landscape項(xiàng)目在Github上已經(jīng)獲得超過(guò)7000顆星,表明廣大開(kāi)發(fā)者和使用者對(duì)該項(xiàng)目的關(guān)注和重視。該項(xiàng)目給出當(dāng)前云原生生態(tài)的全景圖(如下圖所示),通過(guò)該全景圖我們可以了解云原生相關(guān)的各種類(lèi)型的項(xiàng)目和產(chǎn)品:


萬(wàn)字長(zhǎng)文揭穿你,根本就不懂云原生!

圖 4:CNCF生態(tài)全景圖


這張全景圖從云原生的層次結(jié)構(gòu),以及不同的功能組成上,展現(xiàn)了云原生體系的全貌,可以幫助用戶(hù)在不同組件層次去選擇恰當(dāng)?shù)能浖凸ぞ哌M(jìn)行支持。總體來(lái)看,云原生生態(tài)分為以下幾層:


1. Kubernetes服務(wù)提供商
圖中最底層是Kubernetes認(rèn)證的服務(wù)提供商,以及Kubernetes認(rèn)證的培訓(xùn)伙伴。


2. Provisioning
有了物理機(jī)或虛擬機(jī)后,在運(yùn)行容器化服務(wù)之前,需要為容器準(zhǔn)備標(biāo)準(zhǔn)化的基礎(chǔ)環(huán)境,這就是Provisioning這一層的作用。在Provisioning這一層中,分為以下幾個(gè)功能組成模塊:


  • Automation
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉
關(guān)閉