日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

2017年會(huì)是Serverless爆發(fā)之年嗎?

 rocky_gan 2017-04-29

前言

中小型公司,尤其是互聯(lián)網(wǎng)行業(yè)的創(chuàng)業(yè)公司,本身并沒有太多的技術(shù)人員,如果設(shè)計(jì)系統(tǒng)時(shí)需要考慮諸多的技術(shù)問題,例如Web應(yīng)用服務(wù)器如何配置、數(shù)據(jù)庫如何配置、消息服務(wù)中間件如何搭建等等,那對(duì)于他們來說人員成本、系統(tǒng)成本會(huì)很高,Serverless架構(gòu)的出現(xiàn),讓這種情況可能可以大幅度改善。

初識(shí)Serverless?

在目前主流云計(jì)算IaaS(Infrastructure-as-a-Service,基礎(chǔ)設(shè)施即服務(wù))和PaaS(Platform-as-a-Service,平臺(tái)即服務(wù))中,開發(fā)人員進(jìn)行業(yè)務(wù)開發(fā)時(shí),仍然需要關(guān)心很多和服務(wù)器相關(guān)的服務(wù)端開發(fā)工作,比如緩存、消息服務(wù)、Web應(yīng)用服務(wù)器、數(shù)據(jù)庫,以及對(duì)服務(wù)器進(jìn)行性能優(yōu)化,還需要考慮存儲(chǔ)和計(jì)算資源,考慮負(fù)載均衡和橫向擴(kuò)展能力,考慮服務(wù)器容災(zāi)穩(wěn)定性等非專業(yè)邏輯的開發(fā)。這些服務(wù)器的運(yùn)維和開發(fā)知識(shí)、經(jīng)驗(yàn)極大地限制了開發(fā)者進(jìn)行業(yè)務(wù)開發(fā)的效率。設(shè)想一下,如果開發(fā)者直接租用服務(wù)或者開發(fā)服務(wù)而無須關(guān)注如何在服務(wù)器中運(yùn)行部署服務(wù),是否可以極大地提升開發(fā)效率和產(chǎn)品質(zhì)量?這種去服務(wù)器而直接使用服務(wù)的架構(gòu),我們稱之為Serverless架構(gòu)(無服務(wù)器架構(gòu))。

Serverless架構(gòu)的問世

2014年,云廠商AWS推出了“無服務(wù)器”的范式服務(wù)。

其實(shí),最初“無服務(wù)器”意在幫助開發(fā)者擺脫運(yùn)行后端應(yīng)用程序所需的服務(wù)器設(shè)備的設(shè)置和管理工作。這項(xiàng)技術(shù)的目標(biāo)并不是為了實(shí)現(xiàn)真正意義上的“無服務(wù)器”,而是指由第三方供應(yīng)商負(fù)責(zé)后端基礎(chǔ)結(jié)構(gòu)的維護(hù),以服務(wù)的方式為開發(fā)者提供所需功能,例如數(shù)據(jù)庫、消息,以及身份驗(yàn)證等。這種服務(wù)基礎(chǔ)結(jié)構(gòu)通??梢越凶龊蠖思捶?wù)(Backend-as-a-Service,BaaS),或移動(dòng)后端即服務(wù)(MobileBackend-as-a-service,MBaaS)。

現(xiàn)在,無服務(wù)器架構(gòu)是指大量依賴第三方服務(wù)(也叫做后端即服務(wù),即“BaaS”)或暫存容器中運(yùn)行的自定義代碼(函數(shù)即服務(wù),即“FaaS”)的應(yīng)用程序,函數(shù)是無服務(wù)器架構(gòu)中抽象語言運(yùn)行時(shí)的最小單位,在這種架構(gòu)中,我們并不看重運(yùn)行一個(gè)函數(shù)需要多少CPU或RAM或任何其他資源,而是更看重運(yùn)行函數(shù)所需的時(shí)間,我們也只為這些函數(shù)的運(yùn)行時(shí)間付費(fèi)。無服務(wù)器架構(gòu)中函數(shù)可以多種方式觸發(fā),如定期運(yùn)行函數(shù)的定時(shí)器、HTTP請(qǐng)求或某些相關(guān)服務(wù)中的某個(gè)事件。

Serverless案例

以帶有服務(wù)功能邏輯的傳統(tǒng)面向客戶端的三層應(yīng)用為例(一個(gè)典型的電子商務(wù)應(yīng)用網(wǎng)站)。一般來說包含客戶端、服務(wù)端程序、數(shù)據(jù)庫,服務(wù)端用Java開發(fā)完成,客戶端用JavaScript。采用這種架構(gòu),服務(wù)端需要實(shí)現(xiàn)諸多系統(tǒng)邏輯,例如認(rèn)證、頁面導(dǎo)航、搜索、交易等都需要在服務(wù)端完成。如果采用Serverless架構(gòu)來對(duì)該應(yīng)用進(jìn)行改造,則架構(gòu)如圖所示:

Serverless架構(gòu)相比于傳統(tǒng)面向客戶端的三層應(yīng)用架構(gòu),有以下幾方面的差異:

  • 刪除認(rèn)證邏輯,用第三方BaaS服務(wù)替代;

  • 使用另外一個(gè)BaaS,允許客戶端直接訪問架構(gòu)與第三方(例如AWS Dynamo)上面的數(shù)句子庫。通過這種方式提供給客戶更安全的訪問數(shù)據(jù)庫模式;

  • 前兩點(diǎn)中包含著很重要的第三點(diǎn),也就是以前運(yùn)行在服務(wù)端的邏輯轉(zhuǎn)移到客戶端中,例如跟蹤用戶訪問??蛻舳藙t慢慢轉(zhuǎn)化為單頁面應(yīng)用。

  • 計(jì)算敏感或者需要訪問大量數(shù)據(jù)的功能,例如搜索這類應(yīng)用,我們不需要運(yùn)行一個(gè)專用服務(wù),而是通過FaaS模塊,通過API Gateway對(duì)HTTP訪問提供響應(yīng)。這樣可以使得客戶端和服務(wù)端都從同一個(gè)數(shù)據(jù)庫中讀取相關(guān)數(shù)據(jù)。由于原始服務(wù)使用Java開發(fā),AWS Lambda(FaaS提供者)支持Java功能,因此可以直接從服務(wù)端將代碼移植到搜索功能,而不用重寫代碼。

  • 最后,可以將其他功能用另外一個(gè)FaaS功能取代,因?yàn)榘踩蚍旁诜?wù)端還不如在客戶端重新實(shí)現(xiàn),當(dāng)然前端還是API Gateway。

常見的Serverless框架介紹
Amazon的Lambda產(chǎn)品

2014年11月14日,AWS發(fā)布了AWS Lambda。AWS Lambda是市面上最早,也是最為成熟的Serverless框架之一。該服務(wù)最遲支持Node.js,現(xiàn)在也支持Java和Python。它與Alexa Skills Kit(軟件開發(fā)工具包)緊密集成,亞馬遜提供交互式控制臺(tái)和命令行工具,以便上傳和管理代碼片段。

Google Cloud Functions

Google是為服務(wù)架構(gòu)的最前沿公司,除了推動(dòng)Kubernetes,Google還投資了Cloud Functions,該架構(gòu)可以在其公共云基礎(chǔ)設(shè)施上運(yùn)行。


Iron.io

Iron.io最初是為企業(yè)級(jí)應(yīng)用提供微服務(wù)。Iron.io是用Go語言編寫的,用于處理高并發(fā)、高性能計(jì)算服務(wù),并已經(jīng)集成Docker服務(wù),提供一種完整的微服務(wù)平臺(tái)。

IBM OpenWhisk

2016年2月的InterConnect大會(huì),IBM發(fā)布了OpenWhisk,這種事件驅(qū)動(dòng)型開源計(jì)算平臺(tái)可以用來替代AWS Lambda。OpenWhisk平臺(tái)讓廣大開發(fā)人員能夠迅速構(gòu)建微服務(wù),從而可以響應(yīng)諸多事件,比如鼠標(biāo)點(diǎn)擊或收到來自傳感器的數(shù)據(jù),并執(zhí)行代碼。事件發(fā)生后,代碼會(huì)自動(dòng)執(zhí)行。

Serverless Framework

Serverless Framework是無服務(wù)器應(yīng)用框架和生態(tài)系統(tǒng),旨在簡(jiǎn)化開發(fā)和部署AWS Lambda應(yīng)用程序的工作。Serverless Framework作為Node.js NPM模塊提供,填補(bǔ)了AWS Lambda存在的許多缺口。它提供了多個(gè)樣本模板,可以迅速啟動(dòng)AWS Lambda開發(fā)。

Azure WebJobs

Azure Web的應(yīng)用功能,可以與Web、API應(yīng)用相同的上下文中運(yùn)行程序或腳本??梢陨蟼鞑⑦\(yùn)行可執(zhí)行文件,例如cmd、bat、exe、psl等等。WebJobs提供SDK用于簡(jiǎn)化針對(duì)Web作業(yè)可以執(zhí)行的常見任務(wù),例如圖像處理、隊(duì)列處理、RSS聚合、文件維護(hù),以及發(fā)送電子郵件等等。

Serverless架構(gòu)原則
按需使用計(jì)算服務(wù)執(zhí)行代碼

Serverless架構(gòu)是SOA概念的自然延伸。在Serverless架構(gòu)中,所有自定義代碼作為孤立的、獨(dú)立的、細(xì)粒度的函數(shù)來編寫和執(zhí)行,這些函數(shù)在AWS Lambda之類的無狀態(tài)計(jì)算服務(wù)中運(yùn)行。開發(fā)人員可以編寫函數(shù),執(zhí)行常見的任務(wù)。在比較復(fù)雜的情況下,開發(fā)人員可以構(gòu)建更復(fù)雜的管道,編排多個(gè)函數(shù)調(diào)用。

編寫單一用途的無狀態(tài)函數(shù)

單單負(fù)責(zé)處理某一項(xiàng)任務(wù)的函數(shù)很容易測(cè)試,并穩(wěn)定運(yùn)行。通過以一種松散編排的方式將函數(shù)和服務(wù)組合起來,能夠構(gòu)建易于理解、易于管理的復(fù)雜后端系統(tǒng)。為lambda等計(jì)算服務(wù)編寫的代碼應(yīng)該以無狀態(tài)方式進(jìn)行構(gòu)建,這樣會(huì)讓無狀態(tài)功能很強(qiáng)大,讓平臺(tái)得以迅速擴(kuò)展,處理數(shù)量不斷變化的請(qǐng)求或者事件。

設(shè)計(jì)基于推送的、事件驅(qū)動(dòng)的管道

可以構(gòu)建滿足任何用途的服務(wù)器架構(gòu)。系統(tǒng)可以一開始就構(gòu)建成無服務(wù)器,也可以逐步設(shè)計(jì)現(xiàn)有的單體型應(yīng)用程序,以便充分發(fā)揮這種架構(gòu)的優(yōu)勢(shì)。最靈活、最強(qiáng)大的無服務(wù)器設(shè)計(jì)是事件驅(qū)動(dòng)型的。

構(gòu)建事件驅(qū)動(dòng)的、基于推送的系統(tǒng)常常有利于降低成本和系統(tǒng)復(fù)雜性,但是要注意,并不是任何情況下都是適當(dāng)?shù)幕蛘呷菀讓?shí)現(xiàn)的。

創(chuàng)建更強(qiáng)大的前端

由于Lambda的定價(jià)基于請(qǐng)求數(shù)量、執(zhí)行時(shí)間段以及分配的內(nèi)存量,所以代碼執(zhí)行需要越快越好。數(shù)據(jù)簽名的令牌讓前端可以與不同的服務(wù)直接通信。相比之下,傳統(tǒng)系統(tǒng)中所有通信經(jīng)由后端服務(wù)器來實(shí)現(xiàn)。讓前端與服務(wù)進(jìn)行通信有助于減少創(chuàng)建環(huán)節(jié)、盡快獲得所需的資源。

與第三方服務(wù)集成

如果第三方服務(wù)能提供價(jià)值,并減少自定義代碼,那么自然它們就很有價(jià)值。開發(fā)人員可以通過引入第三方服務(wù)來減少自己實(shí)現(xiàn)各種業(yè)務(wù)邏輯的需要,可以減少小型公司的開發(fā)成本,避免價(jià)格、性能、可用性等要素上的劣勢(shì)。

未來趨勢(shì)

隨著移動(dòng)和物聯(lián)網(wǎng)應(yīng)用蓬勃發(fā)展,伴隨著面向服務(wù)架構(gòu)(SOA)以及微服務(wù)架構(gòu)(MSA)的盛行,造就了Serverless架構(gòu)平臺(tái)的迅猛發(fā)展。在Serverless架構(gòu)中,開發(fā)者無須考慮服務(wù)器的問題,計(jì)算資源作為服務(wù)而不是服務(wù)器的概念出現(xiàn),這樣開發(fā)者只需要關(guān)注面向客戶的客戶端業(yè)務(wù)程序開發(fā),后臺(tái)服務(wù)由第三方服務(wù)公司完全或者部分提供,開發(fā)者調(diào)用相關(guān)的服務(wù)即可。Serverless是一種構(gòu)建和管理基于微服務(wù)架構(gòu)的完整流程,允許我們?cè)诜?wù)部署級(jí)別而不是服務(wù)器部署級(jí)別來管理應(yīng)用部署,甚至可以管理某個(gè)具體功能或端口的部署,這就能讓開發(fā)者快速迭代,更快速地交付軟件。

這種新興的云計(jì)算服務(wù)交付模式為開發(fā)人員和管理人員帶了很多好處。它提供了合適的靈活性和控制性級(jí)別,因而在IaaS和PaaS之間找到了一條中間道路。由于服務(wù)器端幾乎沒有什么要管理的,Serverless架構(gòu)正在徹底改變軟件開發(fā)和部署流程,比如推動(dòng)了NoOps模式的發(fā)展。

細(xì)說云計(jì)算

「細(xì)說云計(jì)算」是InfoQ旗下關(guān)注云計(jì)算技術(shù)的垂直社群,投稿請(qǐng)發(fā)郵件到editors@cn.infoq.com,注明“細(xì)說云計(jì)算投稿”即可。


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多