自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

騰訊云:我們究竟如何推出無服務(wù)器云函數(shù)?

企業(yè)動(dòng)態(tài)
4月26日消息,騰訊云推出國(guó)內(nèi)首款FaaS(Function as a Service,函數(shù)即服務(wù)) 產(chǎn)品——無服務(wù)器云函數(shù)SCF。那么,云函數(shù)的真正內(nèi)涵是什么、架構(gòu)原理,關(guān)鍵技術(shù)和發(fā)展趨勢(shì)是什么?騰訊云基礎(chǔ)產(chǎn)品團(tuán)隊(duì)下文將對(duì)上述問題進(jìn)行解答。

 4月26日消息,騰訊云推出國(guó)內(nèi)首款FaaS(Function as a Service,函數(shù)即服務(wù)) 產(chǎn)品——無服務(wù)器云函數(shù)SCF。那么,云函數(shù)的真正內(nèi)涵是什么、架構(gòu)原理,關(guān)鍵技術(shù)和發(fā)展趨勢(shì)是什么?騰訊云基礎(chǔ)產(chǎn)品團(tuán)隊(duì)下文將對(duì)上述問題進(jìn)行解答。

背景:無服務(wù)器云函數(shù)的用戶價(jià)值核心信息:第一,用戶只需要上傳代碼即可以最簡(jiǎn)捷的方式使用騰訊云高效穩(wěn)定的基礎(chǔ)設(shè)施;第二,兼具成本低廉的特點(diǎn),代碼按需運(yùn)行,空閑時(shí)不收費(fèi)。經(jīng)測(cè)試,按調(diào)用次數(shù)和運(yùn)行時(shí)間付費(fèi),在每個(gè)月請(qǐng)求不足百萬時(shí),使用無服務(wù)器云函數(shù)比使用多臺(tái)云主機(jī)搭建集群的成本減少約70%。

無服務(wù)器云函數(shù)(Serverless Cloud Function)是騰訊云提供的無服務(wù)器(serverless)執(zhí)行環(huán)境,幫助用戶在沒有購(gòu)買和管理服務(wù)器時(shí)仍能運(yùn)行代碼。用戶只需要使用云平臺(tái)支持的語言編寫核心代碼及設(shè)置代碼運(yùn)行的條件,代碼即可在騰訊云基礎(chǔ)設(shè)施上彈性、安全地運(yùn)行,并可完全管理底層計(jì)算資源,包括服務(wù)器CPU、內(nèi)存、網(wǎng)絡(luò)、代碼部署、彈性伸縮、負(fù)載均衡等服務(wù)。使用無服務(wù)器云函數(shù)將可免除所有運(yùn)維性操作,企業(yè)和開發(fā)者可以更加專注于核心業(yè)務(wù)的開發(fā),實(shí)現(xiàn)快速上線和迭代,把握業(yè)務(wù)發(fā)展的節(jié)奏。

一、云函數(shù)的價(jià)值及使用場(chǎng)景

隨著云計(jì)算服務(wù)市場(chǎng)的成熟,用戶對(duì)云計(jì)算接受程度逐漸提高,借助各類基礎(chǔ)云組件,將業(yè)務(wù)上線時(shí)間從月級(jí)縮短到天級(jí),但對(duì)比傳統(tǒng)模式,用戶仍需基于云組件重構(gòu)非功能性需求;云函數(shù)嘗試將業(yè)務(wù)算法和流程提煉出來交由用戶實(shí)現(xiàn),打通各種云服務(wù),并實(shí)現(xiàn)通用的負(fù)載均衡、自動(dòng)伸縮、故障容災(zāi)、安全監(jiān)管等通用功能,真正使得用戶像搭積木一樣打造個(gè)性化服務(wù),將業(yè)務(wù)上線時(shí)間從天級(jí)縮短到分鐘級(jí)。


 

相比云主機(jī),云函數(shù)更適合于支持微服務(wù)架構(gòu)業(yè)務(wù)場(chǎng)景。以圖片多規(guī)格壓縮服務(wù)為例,該服務(wù)在用戶上傳圖片至COS時(shí),自動(dòng)將原始圖片壓縮成適配手機(jī)、平板、電腦等多種大小的規(guī)格。如利用云函數(shù)實(shí)現(xiàn)該服務(wù),用戶只需創(chuàng)建函數(shù),定義函數(shù)觸發(fā)條件為“圖片上傳”,在線編輯或使用IDE完成代碼編寫后上傳,服務(wù)即構(gòu)建完成。用戶上傳圖片時(shí),自動(dòng)調(diào)用定義的函數(shù)完成圖片的多規(guī)格壓縮,云函數(shù)平臺(tái)根據(jù)上傳并發(fā)量自動(dòng)擴(kuò)縮容函數(shù)實(shí)例,并最終按照實(shí)際調(diào)用消耗計(jì)費(fèi)。

 


 

從該示例可以看出,云函數(shù)為用戶帶來的主要價(jià)值為:

  加快用戶服務(wù)上線時(shí)間,用戶只需實(shí)現(xiàn)業(yè)務(wù)算法及流程,上線時(shí)間縮短為分鐘級(jí);

  減少用戶的運(yùn)營(yíng)負(fù)擔(dān),用戶無須承擔(dān)服務(wù)擴(kuò)容,故障恢復(fù)運(yùn)維工作;

   消除用戶的資源成本,用戶無需承擔(dān)資源閑置費(fèi)用,只為實(shí)際調(diào)用消耗付費(fèi);

二、云函數(shù)架構(gòu)原理

云函數(shù)平臺(tái)整體架構(gòu)原理如圖所示。云函數(shù)為用戶提供SDK/WEBUI兩種使用方式,并通過事件注冊(cè)與回調(diào)機(jī)制與其它云組件打通,提供標(biāo)準(zhǔn)的API接口;調(diào)用分發(fā)根據(jù)函數(shù)所屬的區(qū)域,用戶,名字,版本號(hào),鑒權(quán)等信息申請(qǐng)函數(shù)實(shí)例,并將調(diào)用均勻的分發(fā)到可用函數(shù)實(shí)例;函數(shù)管理負(fù)責(zé)創(chuàng)建/修改/刪除函數(shù),并提供函數(shù)代碼管理,版本管理等功能;函數(shù)調(diào)度根據(jù)函數(shù)資源需求選擇合適的位置創(chuàng)建/銷毀函數(shù)實(shí)例;函數(shù)實(shí)例部署用戶定義的函數(shù),負(fù)責(zé)函數(shù)的執(zhí)行及監(jiān)管。

 

從云函數(shù)的定位及架構(gòu)原理看,衡量云函數(shù)平臺(tái)的關(guān)鍵技術(shù)指標(biāo)可概括為:

  不僅支持業(yè)務(wù)快速上線,且能實(shí)現(xiàn)持續(xù)發(fā)展;

  不僅支持業(yè)務(wù)按需取用,且能釋放閑置資源;

  不僅支持業(yè)務(wù)永不中斷,且能擴(kuò)展運(yùn)行范圍;

  不僅支持業(yè)務(wù)自由運(yùn)行,且能避免干擾入侵;

下文將展開詳述。

三、支持業(yè)務(wù)快速上線,且能實(shí)現(xiàn)持續(xù)發(fā)展

支持業(yè)務(wù)分鐘級(jí)上線,需要盡可能的減少用戶研發(fā)工作量,云函數(shù)用戶僅需提供簡(jiǎn)單的函數(shù)配置及代碼即可完成上線。以圖片壓縮為例,用戶自行編輯python代碼如下,即可實(shí)現(xiàn)一個(gè)圖片壓縮服務(wù):

 

其中第1行引入依賴庫,第4~9行解析輸入?yún)?shù),第11行調(diào)用庫完成圖片壓縮,12~15行判斷結(jié)果及返回。用戶可在線完成代碼的編輯并提交,也可像開發(fā)本地程序一樣使用喜歡的IDE編輯,調(diào)試通過后打成zip包通過SDK提交,提交成功服務(wù)即上線。

支持業(yè)務(wù)可持續(xù)發(fā)展,需提供用戶函數(shù)平滑升級(jí)及版本變更能力,當(dāng)用戶更新函數(shù)代碼或配置后,新調(diào)用請(qǐng)求被分發(fā)至新函數(shù)實(shí)例,原調(diào)用請(qǐng)求執(zhí)行完成后,舊函數(shù)實(shí)例自動(dòng)消亡,服務(wù)在客戶不感知情況下平滑更新。即將支持用戶函數(shù)多版本管理,將函數(shù)別名映射至用戶指定版本,在客戶不感知情況下實(shí)現(xiàn)多版本間平滑切換。

 

函數(shù)運(yùn)行過程中間,用戶打印日志,標(biāo)準(zhǔn)輸出/錯(cuò)誤輸出日志分類上傳至騰訊云日志服務(wù)平臺(tái),用戶可實(shí)時(shí)監(jiān)控函數(shù)運(yùn)行情況。

四、支持業(yè)務(wù)按需取用,且能釋放閑置資源

要支持云函數(shù)真正按需取用,需實(shí)現(xiàn)用戶第一次調(diào)用時(shí)延遲分配資源,函數(shù)調(diào)用過程如下圖所示:

 

云函數(shù)平臺(tái)在調(diào)用分發(fā)時(shí),會(huì)判斷是否有函數(shù)實(shí)例存在,如若不存在,則實(shí)時(shí)啟動(dòng)實(shí)例,實(shí)例啟動(dòng)完成后,才開始執(zhí)行函數(shù)調(diào)用。為了達(dá)到第一次調(diào)用足夠快的目標(biāo),在調(diào)用過程中需分階段逐層優(yōu)化:

  分發(fā)調(diào)用階段:需減少調(diào)用分發(fā)層級(jí),比如對(duì)于用戶主動(dòng)發(fā)起的http同步調(diào)用,正常路徑可免去存入持久化隊(duì)列過程;

  鏡像及代碼下載階段:需盡量預(yù)部署以減少下載時(shí)間,比如對(duì)新提交函數(shù),并行啟動(dòng)預(yù)加載,使得第一次調(diào)用發(fā)起時(shí)無須再去實(shí)時(shí)下載;

  容器啟動(dòng)過程:需簡(jiǎn)化容器啟動(dòng)腳本,使得啟動(dòng)過程盡量輕量,對(duì)于對(duì)延時(shí)敏感的業(yè)務(wù),提供實(shí)例預(yù)留機(jī)制,用戶可選擇預(yù)留少量實(shí)例以減少第一次調(diào)用的額外延時(shí);

  執(zhí)行函數(shù)調(diào)用:需盡量減少函數(shù)參數(shù),返回?cái)?shù)據(jù)及日志傳遞導(dǎo)致的內(nèi)存拷貝次數(shù);

  返回調(diào)用:需盡量減少返回層級(jí);

通過逐層優(yōu)化,第一次調(diào)用平臺(tái)耗時(shí)可控制在3s左右,后續(xù)調(diào)用平臺(tái)耗時(shí)控制在10ms左右。

隨著客戶請(qǐng)求量的增加或減少,函數(shù)實(shí)例隨著自動(dòng)擴(kuò)縮容,一般算法如下:

If 當(dāng)前請(qǐng)求數(shù)/當(dāng)前實(shí)例數(shù) > 擴(kuò)容閾值:擴(kuò)容實(shí)例

else 當(dāng)前請(qǐng)求數(shù)/當(dāng)前實(shí)例數(shù) < 縮容閾值:縮容實(shí)例

當(dāng)縮容至最后一個(gè)函數(shù)實(shí)例時(shí),為避免函數(shù)實(shí)例短時(shí)間內(nèi)重復(fù)啟動(dòng)/停止導(dǎo)致客戶調(diào)用延時(shí)增加,需保留一段時(shí)間延遲釋放。

五、支持業(yè)務(wù)永不中斷,且能擴(kuò)展運(yùn)行范圍

要支持云函數(shù)永不中斷,需實(shí)現(xiàn)2個(gè)容災(zāi)目標(biāo):

  硬件故障時(shí)服務(wù)不中斷

  平臺(tái)升級(jí)時(shí)服務(wù)不中斷

為實(shí)現(xiàn)這三個(gè)容災(zāi)目標(biāo),整體架構(gòu)需實(shí)現(xiàn)set化,且在各層均需對(duì)應(yīng)的支持:

  接入層:基于騰訊云CLB實(shí)現(xiàn)橫向擴(kuò)展,負(fù)載均衡,7層路由能力;

  邏輯層:實(shí)現(xiàn)模塊無狀態(tài)化,模塊內(nèi)部無狀態(tài)數(shù)據(jù),可隨意啟停替換;

  數(shù)據(jù)層:采用一致性存儲(chǔ)倉庫存儲(chǔ)關(guān)鍵數(shù)據(jù);

  節(jié)點(diǎn)層:實(shí)現(xiàn)快速節(jié)點(diǎn)故障檢測(cè)及替換恢復(fù);

比如平臺(tái)內(nèi)部Invoker模塊實(shí)例硬件故障時(shí),如下圖所示,由于invoker模塊無狀態(tài),,故障時(shí)可由接入層CLB模塊自動(dòng)剔除,剔除后新請(qǐng)求分發(fā)至剩余invoker模塊實(shí)例,已接收的異步事件可由其它invoker重試完成,同步http調(diào)用會(huì)直接返回給用戶錯(cuò)誤請(qǐng)求,由用戶重試,在故障invoker實(shí)例恢復(fù)后,自動(dòng)添加至CLB中,繼續(xù)分擔(dān)負(fù)載。


 

當(dāng)平臺(tái)需要升級(jí)API接口時(shí),采用只增不改策略,提供新版本API接口,保持用戶原有服務(wù)兼容性,用戶采用新接口時(shí),CLB通過7層路由,路由至新版本invoker模塊實(shí)例,舊版本實(shí)例隨著負(fù)載的降低逐步縮容,新版本實(shí)例隨著負(fù)載升高逐步擴(kuò)容,以此實(shí)現(xiàn)了用戶透明的版本平滑升級(jí)。


 

要實(shí)現(xiàn)云函數(shù)需與各類云組件打通,需要云組件提供事件注冊(cè)及回調(diào)機(jī)制,云組件提供可注冊(cè)事件及對(duì)應(yīng)的回調(diào)接口,云函數(shù)確保云組件通信的用戶權(quán)限打通傳遞。當(dāng)前云函數(shù)實(shí)現(xiàn)了與騰訊云COS存儲(chǔ)組件的打通,馬上將實(shí)現(xiàn)與騰訊云CMQ、云監(jiān)控等其它云產(chǎn)品的打通,并將運(yùn)行范圍擴(kuò)展至CDN邊緣節(jié)點(diǎn),實(shí)現(xiàn)邊緣計(jì)算。

六、支持業(yè)務(wù)自由運(yùn)行,且能避免干擾入侵

云函數(shù)需支持用戶本地測(cè)試通過的代碼無縫在云函數(shù)平臺(tái),需具備足夠的兼容性,及用戶函數(shù)運(yùn)行時(shí)環(huán)境,需要具備和用戶開發(fā)測(cè)試環(huán)境類似的軟件包,安全等配置;同時(shí)避免函數(shù)間干擾,防止惡意入侵。

為了避免用戶函數(shù)間干擾,云函數(shù)使用了Docker容器來封裝函數(shù)實(shí)例,通過docker的名字隔離、空間隔離、權(quán)限限制等機(jī)制實(shí)現(xiàn)用戶間隔離,輔以實(shí)時(shí)沖突監(jiān)控調(diào)度等措施及時(shí)處理干擾。

為了避免用戶執(zhí)行代碼影響整個(gè)云函數(shù)平臺(tái),如下圖所示,實(shí)現(xiàn)了云函數(shù)管理平臺(tái)與用戶函數(shù)的隔離,用戶函數(shù)無法感知管理平臺(tái)的網(wǎng)絡(luò)地址,運(yùn)行日志等信息,從而無從影響云函數(shù)平臺(tái)的運(yùn)行。

 

為了避免用戶惡意代碼對(duì)網(wǎng)絡(luò)的探測(cè)和入侵,如下圖所示,用戶函數(shù)實(shí)例被限制到了受限的公共VPC網(wǎng)絡(luò),需通過網(wǎng)關(guān)實(shí)現(xiàn)與外網(wǎng)服務(wù)、其它函數(shù)實(shí)例、云組件的互訪,同時(shí),為了支持用戶函數(shù)實(shí)例與個(gè)人CVM虛擬機(jī)的集成,云函數(shù)平臺(tái)通過彈性網(wǎng)卡打通了與其私有VPC的網(wǎng)絡(luò)通信。


 

七、云函數(shù)行業(yè)進(jìn)展趨勢(shì)

近年Serverles、微服務(wù)等理念逐步深入人心,云函數(shù)開始被用戶了解接受。為了滿足用戶對(duì)于更快速上線、更低成本、更優(yōu)架構(gòu)的求索,騰訊云推出了云函數(shù)產(chǎn)品。用戶不妨從解決實(shí)際問題開始試用云函數(shù),比如實(shí)現(xiàn)存儲(chǔ)于COS的圖片、視頻、文件的計(jì)算,將定時(shí)任務(wù)從CVM遷移至云函數(shù),減少資源成本等。隨著云函數(shù)可聯(lián)動(dòng)云組件的拓展,支持語言的豐富,調(diào)試工具,流程引擎等逐步完善,云函數(shù)會(huì)逐步成為整個(gè)云平臺(tái)的粘合劑,將各種云組件融合一起,到時(shí)可支持更為復(fù)雜的狀態(tài)服務(wù)場(chǎng)景,成為用戶通用體貼厚實(shí)的后盾。

歡迎試用騰訊云-云函數(shù)產(chǎn)品,云函數(shù)解決安全接入、故障容災(zāi)、自動(dòng)伸縮、成本優(yōu)化、版本管理等后臺(tái)通用問題,用戶可更省心專注的投入到業(yè)務(wù)創(chuàng)新。希望通過云函數(shù)能更深入的開放騰訊多年在海量服務(wù)耕耘修煉的能力,共享給廣大用戶使用,與大家一起成長(zhǎng)。

責(zé)任編輯:Jane 來源: 51CTO
相關(guān)推薦

2017-09-08 11:22:04

容器云函數(shù)無服務(wù)器

2017-04-26 14:15:35

騰訊云

2018-02-28 11:19:41

服務(wù)器云計(jì)算公共云

2017-03-15 12:03:31

騰訊云25G網(wǎng)卡云服務(wù)器

2018-04-23 12:28:24

無服務(wù)器云成本云計(jì)算

2012-12-27 10:17:21

云服務(wù)器

2013-01-04 13:28:23

云服務(wù)器SaaSPaaS

2019-03-08 10:26:29

無服務(wù)器云計(jì)算德勤

2019-04-02 16:23:56

騰訊云網(wǎng)絡(luò)存儲(chǔ)

2023-08-25 13:25:00

云計(jì)算云平臺(tái)

2012-07-06 15:48:59

華為服務(wù)器

2023-07-05 08:00:45

架構(gòu)

2017-04-12 16:45:35

騰訊云CDN智能計(jì)算服務(wù)

2020-06-14 09:04:00

前端云計(jì)算無服務(wù)器

2017-04-26 11:42:55

騰訊云

2010-05-27 10:16:13

微軟私有云Windows Ser

2020-12-21 09:57:33

無鎖緩存并發(fā)緩存

2011-10-20 09:41:15

惠普云計(jì)算虛擬化

2019-04-26 10:57:26

無服務(wù)器應(yīng)用程序HTTP
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)