中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

詳解Serverless服務(wù),它會(huì)顛覆你對(duì)云的理解

2019-12-03    來(lái)源:多智時(shí)代

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用

Serverless無(wú)服務(wù)器架構(gòu)是一個(gè)新的事物,從出現(xiàn)到現(xiàn)在也不過兩年,目前也沒有一個(gè)公認(rèn)的權(quán)威定義。從2014年亞馬遜正式發(fā)布Serverless服務(wù)Lambda,經(jīng)過近兩年的發(fā)酵,Google、微軟與阿里也在2016年相繼推出了自己的相關(guān)服務(wù)。

業(yè)界認(rèn)為,Serverless代表了新的軟件設(shè)計(jì)范式,可能也顛覆了我們一般對(duì)云的理解。本次硬創(chuàng)公開課,雷鋒網(wǎng)就邀請(qǐng)到了Strikingly創(chuàng)始團(tuán)隊(duì)成員及首席架構(gòu)師龔凌暉,來(lái)講講Serverless服務(wù)到底是什么,它的發(fā)展?fàn)顩r又是怎么樣的。

Strikingly是自助式建站平臺(tái),提供模版、設(shè)計(jì)資源、編輯器等,可以在短時(shí)間內(nèi)容搭建自己的網(wǎng)站,提供托管服務(wù)。它是第一家從YC孵化的國(guó)內(nèi)初創(chuàng)公司,主要幫助不懂技術(shù)但又有建站需求的用戶服務(wù)。

龔凌暉,Strikingly 創(chuàng)始團(tuán)隊(duì)成員,第一個(gè)工程師。畢業(yè)于復(fù)旦大學(xué)計(jì)算機(jī)學(xué)院,在加入 Strikingly 之前,曾在 Morgan Stanley 的 Enterprise Infrastructure 部門任職。2013年加入 Strikingly 之后,做過產(chǎn)品,搞過運(yùn)維自動(dòng)化,研究過 Web Analytics 和 SEO,玩過數(shù)據(jù)分析,目前在團(tuán)隊(duì)中負(fù)責(zé)后端開發(fā),系統(tǒng)運(yùn)維以及數(shù)據(jù)分析等部門的項(xiàng)目研發(fā)和團(tuán)隊(duì)管理。

以下是雷鋒網(wǎng)整理的公開課主要內(nèi)容,更完整內(nèi)容可觀看上面雷鋒網(wǎng)(公眾號(hào):雷鋒網(wǎng))公開課的視頻:

我們從2014年開始使用AWS。2014年,亞馬遜發(fā)布了Serverless服務(wù),當(dāng)時(shí)它還是一個(gè)顛覆性的想法,少有人使用。我們也是在去年初才把Serverless引入到系統(tǒng)中。

那么什么是Serverless服務(wù)呢?

早期的互聯(lián)網(wǎng)應(yīng)用依賴傳統(tǒng)IDC做系統(tǒng)架構(gòu),要有專業(yè)的運(yùn)維人員管理計(jì)算資源,還要對(duì)系統(tǒng)負(fù)載做嚴(yán)格的評(píng)估和預(yù)測(cè),這樣才有時(shí)間購(gòu)買新服務(wù)器。后來(lái)虛擬化技術(shù)提高了靈活性,計(jì)算資源擁有者可以把資源打包,按使用時(shí)間計(jì)費(fèi),這也就誕生了IaaS服務(wù)。

IaaS對(duì)系統(tǒng)的可拓展性和成本控制都有很大作用,但對(duì)剛起步的公司來(lái)講,虛擬化仍不夠,所以云平臺(tái)在虛擬化的基礎(chǔ)上作了進(jìn)一步抽象,讓開發(fā)者只關(guān)注應(yīng)用邏輯,而不用管服務(wù)器配置和應(yīng)用部署,這也就是PaaS。

不過雖然簡(jiǎn)化了系統(tǒng)的復(fù)雜性和開發(fā)應(yīng)用的迭代速度,PaaS依然要調(diào)整計(jì)算資源的數(shù)量來(lái)適應(yīng)系統(tǒng)變化,那如果計(jì)算資源可隨系統(tǒng)的變化自動(dòng)伸縮呢?這也就是Serverless誕生的原因。

Serverless不是沒有服務(wù)器,它與傳統(tǒng)去計(jì)算服務(wù)形態(tài)的區(qū)別主要包括:

更細(xì)粒度的計(jì)算資源分配;

基本無(wú)需預(yù)先計(jì)劃計(jì)算資源;

高度彈性可擴(kuò)展;

按需使用,按使用量付費(fèi)。

  詳解Serverless服務(wù),它會(huì)顛覆你對(duì)云的理解

不過這些可能也是云計(jì)算的特別,而真正的區(qū)別就像上圖中的比喻,從自行打井水到筒裝水再到按需隨時(shí)使用的自來(lái)水,Serverless就像是水龍頭,它把服務(wù)的靈活性做到了極致,本質(zhì)是最細(xì)粒度的云平臺(tái)服務(wù)形態(tài)。

在業(yè)界的現(xiàn)狀

最前沿的Serverless廠商無(wú)疑是亞馬遜AWS,它從2006年開始提供云計(jì)算服務(wù),這種領(lǐng)先也一直延續(xù)。微軟Azure與阿里云也相繼推出Serverless服務(wù)。

為什么AWS要開發(fā)Serverless?其實(shí)用戶對(duì)云的方便與靈活有越來(lái)越高的要求,所以Serverless是一個(gè)必定出現(xiàn)的趨勢(shì),即使不是AWS,其它廠商也會(huì)提出來(lái)。下圖是AWS Serverless服務(wù)發(fā)布的時(shí)間表。

  詳解Serverless服務(wù),它會(huì)顛覆你對(duì)云的理解

可能其中最出名的是Lambda,但Serverless包括了方方面面,比如S3就是一個(gè)很典型的Serverless服務(wù),按照存儲(chǔ)的數(shù)據(jù)量和訪問量收費(fèi)。

有一個(gè)值得關(guān)注的點(diǎn)是,2014年AWS發(fā)布了Lambda,但Serverless是在近兩年后才逐漸引起關(guān)注。這是因?yàn)?014年容器技術(shù)才剛成為關(guān)注點(diǎn),而Serverless太過于前衛(wèi),所有的云廠商都沒想明白怎么樣去發(fā)展它,而且生態(tài)也不成熟,在落實(shí)到工程中仍有很多問題。

AWS用了一年多時(shí)間推動(dòng)Serverless,同時(shí)相關(guān)的工具也得到了發(fā)展,讓部分用戶嘗到了甜頭,這也引起了其它廠商的跟進(jìn),紛紛在2016年推出服務(wù)。其它廠商追趕的時(shí)候,AWS也把Lambda拓展到了其它服務(wù),比如物聯(lián)網(wǎng)和海量數(shù)據(jù)運(yùn)輸。

Google云平臺(tái)在2008年發(fā)布App Engine就進(jìn)入云服務(wù),目前它的Serverless服務(wù)Cloud Functions還處于試用階段。微軟Azure云與阿里云也在2016年發(fā)布了Azure Functions和Function Compute,都是試用。

Serverless長(zhǎng)什么樣?

接下來(lái)介紹幾個(gè)典型的Serverless服務(wù),以及如何構(gòu)建實(shí)用的解決方案。

下圖把AWS的服務(wù)分成三類。一是基于EC2直接構(gòu)建服務(wù)。第二類是托管服務(wù),不需要對(duì)底層的虛擬機(jī)進(jìn)行管理,只需配置資源大小,它會(huì)自動(dòng)分配資源。托管服務(wù)在各云廠商之間的差異較大,也是競(jìng)爭(zhēng)所在。第三類是Serverless服務(wù),完全由AWS托管,甚至不用預(yù)先分配計(jì)算資源,也不用考慮實(shí)現(xiàn)彈性伸縮,只需要用就可以了。

  詳解Serverless服務(wù),它會(huì)顛覆你對(duì)云的理解

有代表性的Serverless服務(wù)有下列一些。

一是Lambda

這是基于事件驅(qū)動(dòng)的Serverless服務(wù)。它一不需要管理服務(wù)器和抽象的計(jì)算資源;二由事件驅(qū)動(dòng),可自動(dòng)擴(kuò)展計(jì)算能力;三是實(shí)現(xiàn)成本控制,按使用量收,計(jì)時(shí)可精確到4秒。

  詳解Serverless服務(wù),它會(huì)顛覆你對(duì)云的理解

如何用Lambda呢?一是把現(xiàn)有的代碼包裝成Lambda函數(shù);二是選擇計(jì)算單元的大小,AWS提供了單一唯獨(dú)的指標(biāo),只需要選擇運(yùn)行時(shí)所需要的內(nèi)存大小,就可自動(dòng)適配GPU,I/O等;三是代碼打包上傳到AWS;四是指定事件觸發(fā)方式,如來(lái)自API的請(qǐng)求和SNS的消息,它有與其它服務(wù)交互的能力。

Lambda使用中要注意的是:

它是一個(gè)無(wú)狀態(tài)的計(jì)算模型,因此要避免運(yùn)行過程中安裝代碼依賴;

二是它的實(shí)現(xiàn)機(jī)制有一個(gè)流量預(yù)測(cè)算法,但它無(wú)法在沒有流量的情況下進(jìn)行預(yù)測(cè),因此在一段時(shí)間沒有執(zhí)行后,再啟動(dòng)時(shí)會(huì)有延時(shí),因此要視情況避免冷啟動(dòng);

三是內(nèi)置了版本和別名機(jī)制,需要合理利用;

四是正確編譯平臺(tái)相關(guān)代碼。

DynamoDB

它是AWS內(nèi)部分布式NoSQL數(shù)據(jù)庫(kù)服務(wù)。它的主要特性如下:由AWS完全托管,不需要任何設(shè)置就可以獲得快速穩(wěn)定的讀寫性,存儲(chǔ)空間也會(huì)隨著數(shù)據(jù)量增長(zhǎng)而增長(zhǎng)。它也支持Lambda,這樣同時(shí)支持精細(xì)到每一項(xiàng)數(shù)據(jù)的訪問控制。

Aurora

它是AWS兼容第三方接口的關(guān)系型數(shù)據(jù)庫(kù)服務(wù),目前還在預(yù)覽階段。它的出現(xiàn)是因?yàn),傳統(tǒng)數(shù)據(jù)庫(kù)解決方案不是為云平臺(tái)設(shè)計(jì)的,需要用云的思維重新定義。

AWS引入了SOA理念,重新打造數(shù)據(jù)庫(kù)引擎,把傳統(tǒng)數(shù)據(jù)組件分解成一個(gè)個(gè)的獨(dú)立模塊,再通過自己云平臺(tái)中已經(jīng)有的服務(wù)來(lái)實(shí)現(xiàn)這些服務(wù)模塊。這使得用戶不用擔(dān)心數(shù)據(jù)庫(kù)升級(jí),容量擴(kuò)展這些令人頭疼的問題。

  詳解Serverless服務(wù),它會(huì)顛覆你對(duì)云的理解

如上圖,整個(gè)數(shù)據(jù)庫(kù)服務(wù)被分成數(shù)據(jù)層和控制層,控制層由DynamoDB來(lái)存儲(chǔ)元數(shù)據(jù),Route 53提供服務(wù)發(fā)現(xiàn),SWF負(fù)責(zé)SOA中的工作協(xié)調(diào)。數(shù)據(jù)層則使用了可靠性強(qiáng)的S3來(lái)實(shí)現(xiàn)數(shù)據(jù)的高可用存儲(chǔ)。

AWS通過共享存儲(chǔ)也實(shí)現(xiàn)了讀寫分離和高可用性,可以滿足大部分用戶對(duì)數(shù)據(jù)庫(kù)的要求。Aurora的價(jià)格幾乎接近開源數(shù)據(jù)庫(kù)的價(jià)格,只是約高端商業(yè)數(shù)據(jù)庫(kù)價(jià)格的十分之一。

下圖是Aurora(藍(lán)色)與MySQL(綠與紅)數(shù)據(jù)庫(kù)在讀寫上的性能對(duì)比。

  詳解Serverless服務(wù),它會(huì)顛覆你對(duì)云的理解

總體來(lái)說(shuō),從經(jīng)濟(jì)成本,管理成本和實(shí)際效用上,都超越了傳統(tǒng)數(shù)據(jù)庫(kù)。

Serverless設(shè)計(jì)模式

經(jīng)典3層web應(yīng)用

  詳解Serverless服務(wù),它會(huì)顛覆你對(duì)云的理解

典型的web應(yīng)用通常分為動(dòng)態(tài)與靜態(tài)資源。在設(shè)計(jì)中,可以用S3作為靜態(tài)資源的存儲(chǔ),同時(shí)用CloudFront的CDN加速服務(wù)。動(dòng)態(tài)這一塊DynamoDB作為網(wǎng)站數(shù)據(jù)存儲(chǔ),通過API Gateway和Lambda實(shí)現(xiàn)前端的靜態(tài)頁(yè)面調(diào)度。整個(gè)架構(gòu)中都用的是Serverless服務(wù)。

還可以設(shè)計(jì)更復(fù)雜的架構(gòu),如下圖:

  詳解Serverless服務(wù),它會(huì)顛覆你對(duì)云的理解

靜態(tài)部分還是S3與CloudFront,但加入了高級(jí)功能。動(dòng)態(tài)部分加入IAM支持,同時(shí)在API Gateway這一層加入流量控制,認(rèn)證等。 還可以加入防火墻服務(wù)WAF。

不過Serverless架構(gòu)中的組件過多,如果API有數(shù)十甚至上百個(gè)節(jié)點(diǎn),Lambda函數(shù)也會(huì)這么多,手動(dòng)管理會(huì)十分不方便。因此亞馬遜也推出了相應(yīng)的方案SAM。如下圖:

  詳解Serverless服務(wù),它會(huì)顛覆你對(duì)云的理解

AWS CloudFormation是亞馬遜專門用來(lái)配置和管理計(jì)算資源的服務(wù),SAM是它的一個(gè)子集,可以用它打包整個(gè)架構(gòu)設(shè)計(jì),自動(dòng)把所有東西同時(shí)打包配置好,做到自動(dòng)化。

數(shù)據(jù)批處理

  詳解Serverless服務(wù),它會(huì)顛覆你對(duì)云的理解

很多數(shù)據(jù)批處理的邏輯都可以分解成Map-Reduce的合理操作。但亞馬遜Lambda提供的思路是,把原始數(shù)據(jù)存在云端,然后定義filter(把輸入的數(shù)據(jù)分配到多個(gè)maper上),maper(執(zhí)行映射邏輯,并把映射結(jié)果存在DynamoDB),reducer(處理映射邏輯,把最終結(jié)果存在S3上)三個(gè)lambda函數(shù)。由于S3和DynamoDB的事件都能觸發(fā)Lambda函數(shù)執(zhí)行,整個(gè)過程可以完全自動(dòng)完成并自動(dòng)伸縮。另由于起點(diǎn)和終點(diǎn)都是S3,所以可以把多個(gè)Map-Reduce邏輯串聯(lián),構(gòu)成更復(fù)雜的處理模型。

數(shù)據(jù)流式處理

Kinesis是亞馬遜處理流數(shù)據(jù)的品牌。下圖是簡(jiǎn)化版且S3和Lambda數(shù)據(jù)流兩步歸集的處理系統(tǒng)。

  詳解Serverless服務(wù),它會(huì)顛覆你對(duì)云的理解

第一步要用Lambda實(shí)現(xiàn)初步處理器Stream Processor,它處理流數(shù)據(jù)后會(huì)把結(jié)果保存在S3上。第二是用CloudWatch定時(shí)器功能周期性觸發(fā)Lambda函數(shù),把中間結(jié)果進(jìn)一步處理,把最終結(jié)果存在S3上。為了提高效率,第二步中的Lambda是一個(gè)任務(wù)分配器,可以同時(shí)觸發(fā)多個(gè)具體處理數(shù)據(jù)的Lambda函數(shù),同時(shí)對(duì)多個(gè)S3中的中間結(jié)果對(duì)象做處理。

這里有一個(gè)隱患,它來(lái)自Lambda和Kinesis集成方案的技術(shù)性區(qū)別。兩者對(duì)接時(shí),前者的并行能力會(huì)受到后者并行能力的限制。同時(shí)運(yùn)行的Stream Processor的數(shù)量不能超過Kinesis的數(shù)據(jù)流分配的數(shù)據(jù),這會(huì)導(dǎo)致數(shù)據(jù)流的推積。

  詳解Serverless服務(wù),它會(huì)顛覆你對(duì)云的理解

解決方法是,如果瓶頸在于對(duì)接Kinesis的Lambda函數(shù), 那可以縮短函數(shù)的執(zhí)行時(shí)間。具體而言,Lambda函數(shù)不負(fù)責(zé)具體的數(shù)據(jù)處理,而是應(yīng)該把它給更多Lambda并行處理。由于從Lambda函數(shù)觸發(fā)其它Lambda函數(shù)沒有并行限制,那可以做到即時(shí)處理Kinesis過來(lái)的數(shù)據(jù)。

Serverless的優(yōu)勢(shì)與劣勢(shì)

前文已經(jīng)提及它的優(yōu)勢(shì),現(xiàn)在再來(lái)談?wù)勊膯栴}與挑戰(zhàn)。總的來(lái)說(shuō),一些傳統(tǒng)開發(fā)的技術(shù)和經(jīng)驗(yàn)不適用。

首先是服務(wù)細(xì)粒度增加了開發(fā)大型應(yīng)用的難度。傳統(tǒng)web應(yīng)用可以管理成百上千的API,但在Serverless中需要開發(fā)者有足夠的管理能力進(jìn)來(lái)應(yīng)對(duì)。

其次是Serverless只能選用云廠商支持的特定的技術(shù)棧,對(duì)代碼的行為有一定限制。

建立本地開發(fā)環(huán)境較為困難,調(diào)試不便,F(xiàn)在有人在本地用Docker模擬運(yùn)行環(huán)境,這值得一試,但無(wú)法完全接近生產(chǎn)環(huán)境。

應(yīng)用安全模型不夠成熟,如何實(shí)現(xiàn)加密、認(rèn)證、權(quán)限管理都需要時(shí)間來(lái)檢驗(yàn)。

Serverless的意義

對(duì)開發(fā)工程師來(lái)說(shuō),Serverless是一個(gè)新的職業(yè)發(fā)展機(jī)遇。它不會(huì)完全替代現(xiàn)有的傳統(tǒng)開發(fā)與部署模式,但一定會(huì)在某些領(lǐng)域大放異彩。它也降低了開發(fā)高并發(fā)應(yīng)用的門檻,能為應(yīng)用實(shí)現(xiàn)高可擴(kuò)展與高可用性。

對(duì)運(yùn)維工程師來(lái)說(shuō),可以更清楚認(rèn)識(shí)到在云計(jì)算時(shí)代系統(tǒng)運(yùn)維這個(gè)職業(yè)的危機(jī)。云計(jì)算的一個(gè)發(fā)展趨勢(shì)是,云廠商把自己在架構(gòu)和運(yùn)維實(shí)踐上的經(jīng)驗(yàn)產(chǎn)品化,提供給用戶,而它們的共有特征是對(duì)運(yùn)維的依賴越來(lái)越小,開發(fā)工程師可以獨(dú)立完成系統(tǒng)部署。

不過這個(gè)職業(yè)的發(fā)展方向是兼顧開發(fā),做運(yùn)維自動(dòng)化。Serverless也給希望向自動(dòng)化運(yùn)維方向轉(zhuǎn)型的工程師提供了職業(yè)發(fā)展機(jī)遇,可以利用Serverless新的運(yùn)維邏輯,完成運(yùn)維自動(dòng)化。

對(duì)CTO和架構(gòu)師來(lái)說(shuō),Serverless可以幫助理解全新的架構(gòu)設(shè)計(jì)思路, 把系統(tǒng)架構(gòu)中一部分用Serverless實(shí)現(xiàn),提供開發(fā)和運(yùn)維效率,用低成本實(shí)現(xiàn)可擴(kuò)展性和可用性。

對(duì)CEO與產(chǎn)品經(jīng)理來(lái)說(shuō),理解Serverless有助于判斷某個(gè)產(chǎn)品特性是否適合這一服務(wù)進(jìn)行快速實(shí)現(xiàn)。

對(duì)于學(xué)生來(lái)說(shuō),學(xué)習(xí)更新的知識(shí)總沒錯(cuò),學(xué)習(xí)Serverless可以幫助理解新的軟件設(shè)計(jì)范式,為自己的職業(yè)發(fā)展做準(zhǔn)備

可以說(shuō),Serverless代表了全新的軟件設(shè)計(jì)范式,需要用新的思路來(lái)看待云計(jì)算,它已經(jīng)顛覆了對(duì)云的理解。

標(biāo)簽: 阿里 架構(gòu)師 托管服務(wù) 工程師 計(jì)算機(jī) 數(shù)據(jù)分析 

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:視頻直播系統(tǒng)給教育帶來(lái)了什么?

下一篇:企業(yè)選擇視頻直播系統(tǒng)的考慮因素