新聞中心
僅為代碼實(shí)際運(yùn)行資源付費(fèi) 解構(gòu)國內(nèi)首個(gè)函數(shù)計(jì)算
作者:佚名 2017-05-03 13:12:39
云計(jì)算 4月26日,在云棲大會・南京峰會上,阿里云宣布函數(shù)計(jì)算(Function Compute)啟動邀測。這是國內(nèi)首個(gè)事件驅(qū)動的無服務(wù)器計(jì)算平臺。用戶按需調(diào)用、按需付費(fèi),無需管理服務(wù)器等基礎(chǔ)設(shè)施,特別適用于應(yīng)用場景中有明顯波峰波谷的企業(yè)。

我們提供的服務(wù)有:成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、義縣ssl等。為成百上千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的義縣網(wǎng)站制作公司
4月26日,在云棲大會?南京峰會上,阿里云宣布函數(shù)計(jì)算(Function Compute)啟動邀測。這是國內(nèi)***事件驅(qū)動的無服務(wù)器計(jì)算平臺。用戶按需調(diào)用、按需付費(fèi),無需管理服務(wù)器等基礎(chǔ)設(shè)施,特別適用于應(yīng)用場景中有明顯波峰波谷的企業(yè)。
通過函數(shù)計(jì)算,用戶無需再管理服務(wù)器等基礎(chǔ)設(shè)施,只需編寫代碼并上傳。函數(shù)計(jì)算會為用戶準(zhǔn)備好計(jì)算資源,以彈性、可靠的方式運(yùn)行代碼,并提供日志查詢,性能監(jiān)控,報(bào)警等功能。
借助于函數(shù)計(jì)算,可以快速構(gòu)建任何類型的應(yīng)用和服務(wù),無需管理和運(yùn)維。更棒的是,只需要為代碼實(shí)際運(yùn)行消耗的資源付費(fèi) ——代碼未運(yùn)行則不產(chǎn)生費(fèi)用。
讓我們以構(gòu)建一個(gè)視頻處理后端服務(wù)為例,來體驗(yàn)以serverless的方式開發(fā)應(yīng)用的高效。
在示例場景中,用戶將生成的高清視頻文件上傳到阿里云對象存儲(OSS)上,這些視頻文件需要轉(zhuǎn)碼為不同碼率的文件(360P,720P,……)以適配不同的播放設(shè)備。最終結(jié)果文件被存儲到OSS上,由用戶消費(fèi)。
如果以傳統(tǒng)的server-based方式構(gòu)建系統(tǒng),用戶需要購買和設(shè)置服務(wù)器,編碼實(shí)現(xiàn)高性能服務(wù)器軟件。并且要考慮一系列容量預(yù)估、容錯(cuò)、運(yùn)維監(jiān)控等方面的問題。例如,
· 需要多少臺服務(wù)器?什么規(guī)格?
· 如何配置網(wǎng)絡(luò)/操作系統(tǒng)?
· 如何部署升級?
· 如何處理服務(wù)器宕機(jī)?
· 如何負(fù)載均衡?
· 如何根據(jù)負(fù)載實(shí)時(shí)動態(tài)伸縮?
· 如何對系統(tǒng)監(jiān)控報(bào)警?
· ……
圖 1 server-based后端服務(wù)
如果以serverless的方式構(gòu)建系統(tǒng),用戶只需要編寫處理單個(gè)請求的視頻轉(zhuǎn)碼函數(shù),并設(shè)置相應(yīng)的OSS觸發(fā)器即可,函數(shù)計(jì)算系統(tǒng)會保證函數(shù)被可靠的執(zhí)行。大大提高了開發(fā)效率。
圖 2 serverless后端服務(wù)
架構(gòu)總覽
接下來,讓我們從安全性,可用性和可擴(kuò)展性的角度來審視函數(shù)計(jì)算的架構(gòu)。看看它是如何幫助用戶構(gòu)建彈性高可用的應(yīng)用。
整個(gè)系統(tǒng)架構(gòu)如下圖所示。API服務(wù)層完成身份驗(yàn)證,元數(shù)據(jù)的讀寫等功能。如果是同步函數(shù)調(diào)用請求,則API Server從資源調(diào)度模塊獲取可用的函數(shù)執(zhí)行引擎并發(fā)送請求,***取回結(jié)果。如果是異步調(diào)用,則將事件寫入到消息隊(duì)列后即返回。由事件分發(fā)模塊分發(fā)事件,整個(gè)流程和同步調(diào)用類似。
圖 3 函數(shù)計(jì)算架構(gòu)
安全性和訪問控制
作為一個(gè)通用的計(jì)算服務(wù),函數(shù)計(jì)算允許用戶運(yùn)行任意代碼。因此保證用戶信息安全是函數(shù)計(jì)算***優(yōu)先級的目標(biāo)。我們在系統(tǒng)設(shè)計(jì)中堅(jiān)持以下兩個(gè)原則:
1. 使用***級別的安全隔離技術(shù),提供與阿里云ECS同等級的安全隔離性。
2. 訪問用戶的任何資源均需得到用戶的顯式授權(quán)。
整個(gè)計(jì)算環(huán)境的隔離分為兩個(gè)層面:
1. 執(zhí)行用戶函數(shù)的計(jì)算資源和函數(shù)計(jì)算系統(tǒng)的網(wǎng)絡(luò)是相互隔離的。
2. 不同用戶的計(jì)算資源和網(wǎng)絡(luò)是相互隔離的。
通過多層次,多維度的安全隔離,確保用戶和函數(shù)計(jì)算服務(wù)本身的信息安全性。
此外,由于用戶的函數(shù)被其他用戶或服務(wù)調(diào)用或者訪問其他資源會涉及到費(fèi)用和數(shù)據(jù)安全,因此函數(shù)計(jì)算要求用戶授權(quán)。例如,用戶想使用阿里云對象存儲服務(wù)(OSS)觸發(fā)器時(shí),需要授權(quán)OSS服務(wù)調(diào)用相關(guān)函數(shù)的權(quán)限。通過對觸發(fā)器的管理,用戶可以非常方便的了解指定函數(shù)可能被哪些事件源服務(wù)調(diào)用。關(guān)于函數(shù)計(jì)算的授權(quán)模型,請參閱相關(guān)文檔。
高可用
要保證用戶函數(shù)被可靠的執(zhí)行,函數(shù)計(jì)算需要處理以下兩類場景:
1. 非預(yù)期中斷。例如程序崩潰,機(jī)器宕機(jī),網(wǎng)絡(luò)分割故障(network partition)等等。
2. 預(yù)期中斷。例如用戶函數(shù)、函數(shù)計(jì)算系統(tǒng)的升級等等。
非預(yù)期中斷的處理能力是任何分布式系統(tǒng)都要具備的基本能力,相關(guān)技術(shù)已經(jīng)非常成熟,細(xì)節(jié)我們不再贅述。函數(shù)計(jì)算本身和依賴的阿里云服務(wù)都具備高可用的特性。在有條件的區(qū)域,函數(shù)計(jì)算的系統(tǒng)會跨多個(gè)可用區(qū)部署,提供更高級別的容災(zāi)能力。
對于預(yù)期的中斷,函數(shù)計(jì)算系統(tǒng)自身和用戶函數(shù)都可以做到平滑升級。當(dāng)升級發(fā)生時(shí),正在執(zhí)行的請求不會被終止,系統(tǒng)會等待請求處理完成,再執(zhí)行升級操作。未來我們將支持函數(shù)的多版本(幫助用戶快速回滾)、灰度發(fā)布等功能,進(jìn)一步減輕用戶的運(yùn)維負(fù)擔(dān)。
實(shí)時(shí)彈性伸縮
實(shí)時(shí)彈性伸縮是函數(shù)計(jì)算的核心優(yōu)勢,當(dāng)用戶負(fù)載出現(xiàn)波峰時(shí),系統(tǒng)能實(shí)時(shí)擴(kuò)張資源,平滑應(yīng)對峰值訪問。以異步事件處理為例,整個(gè)處理流程分為三步:
1. 事件寫入函數(shù)計(jì)算的事件隊(duì)列。
2. 事件分發(fā)器從隊(duì)列中讀取事件,并調(diào)用對應(yīng)的函數(shù)處理事件。
3. 用戶函數(shù)處理事件。
函數(shù)計(jì)算系統(tǒng)會監(jiān)控用戶的負(fù)載變化,各組件均能夠根據(jù)用戶負(fù)載動態(tài)伸縮。如上圖所示,當(dāng)用戶A的事件產(chǎn)生速率變大時(shí),系統(tǒng)會自動在每個(gè)環(huán)節(jié)給A分配更多的資源,以匹配事件處理的能力。
函數(shù)計(jì)算采用多級資源調(diào)度策略,系統(tǒng)會根據(jù)用戶負(fù)載和資源池水位預(yù)判需求,提前準(zhǔn)備好計(jì)算資源。依托于飛天分布式平臺多年的積累,在調(diào)度的實(shí)時(shí)性和準(zhǔn)確性上取得了很好的平衡,具備毫秒級彈性伸縮的能力。
另一方面,實(shí)時(shí)彈性伸縮也是一柄雙刃劍,函數(shù)有可能被錯(cuò)誤觸發(fā),不但影響服務(wù)可用性,也給用戶造成財(cái)務(wù)損失。以上述視頻轉(zhuǎn)碼系統(tǒng)為例,每當(dāng)有新的視頻被上傳到對象服務(wù)(OSS)的指定目錄后,函數(shù)就會被觸發(fā)進(jìn)行轉(zhuǎn)碼。但如果用戶不小心把處理后的結(jié)果文件也寫入到了源目錄,則形成了一個(gè)事件觸發(fā)的環(huán),導(dǎo)致函數(shù)會以指數(shù)級速度被錯(cuò)誤觸發(fā),且永遠(yuǎn)不能終止。因此系統(tǒng)必須要能控制和隔離錯(cuò)誤函數(shù)的影響。
函數(shù)計(jì)算在用戶粒度設(shè)置了函數(shù)***并發(fā)調(diào)用限制(允許用戶自定義),保證用戶的費(fèi)用不會超過一個(gè)上限。同時(shí),整個(gè)系統(tǒng)從不同層次,不同維度對用戶使用的資源進(jìn)行流控,確保在多租戶的環(huán)境中,用戶不會互相影響。此外,提供豐富的監(jiān)控和報(bào)警功能,能夠及時(shí)通知用戶處理。
總結(jié)
云的***階段,是基礎(chǔ)設(shè)施的云化,使得用戶有能力使用大規(guī)模的計(jì)算能力。云的下一階段的發(fā)展,是要解決用戶使用云的成本和效率問題,幫助用戶實(shí)現(xiàn)業(yè)務(wù)能力的云化。本文從架構(gòu)設(shè)計(jì)的角度,剖析了函數(shù)計(jì)算這樣的無服務(wù)器計(jì)算服務(wù)(serverless computing)是如何幫助用戶快速構(gòu)建低成本、高可用、實(shí)時(shí)伸縮的cloud-native應(yīng)用。當(dāng)這些通用的問題在平臺層面解決后,用戶就能以很高的效率專注于業(yè)務(wù)層的創(chuàng)新。歡迎大家使用阿里云函數(shù)計(jì)算,進(jìn)入無服務(wù)器計(jì)算的世界。
新聞名稱:僅為代碼實(shí)際運(yùn)行資源付費(fèi)解構(gòu)國內(nèi)首個(gè)函數(shù)計(jì)算
網(wǎng)頁地址:http://www.5511xx.com/article/codhdii.html


咨詢
建站咨詢
