偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

騰訊云無服務(wù)器云函數(shù)架構(gòu)精解

云計算
繼虛擬機,容器技術(shù),無服務(wù)器化成為新的行業(yè)熱點,無服務(wù)器云函數(shù)可以讓用戶無需關(guān)心服務(wù)器的部署運營,只需開發(fā)最核心的業(yè)務(wù)邏輯,即可實現(xiàn)上線運營,具備分布容災(zāi)能力,可依據(jù)負載自動擴縮容,按照實際調(diào)用次數(shù)與時長計費。本次主要分享騰訊云無服務(wù)器云函數(shù)在技術(shù)實現(xiàn)上的挑戰(zhàn)及架構(gòu)實現(xiàn)原理。

繼虛擬機,容器技術(shù),無服務(wù)器化成為新的行業(yè)熱點,無服務(wù)器云函數(shù)可以讓用戶無需關(guān)心服務(wù)器的部署運營,只需開發(fā)最核心的業(yè)務(wù)邏輯,即可實現(xiàn)上線運營,具備分布容災(zāi)能力,可依據(jù)負載自動擴縮容,按照實際調(diào)用次數(shù)與時長計費。本次主要分享騰訊云無服務(wù)器云函數(shù)在技術(shù)實現(xiàn)上的挑戰(zhàn)及架構(gòu)實現(xiàn)原理。

主要從以下四個方面來分享一下無服務(wù)器云函數(shù):

  1. 云函數(shù)的價值及使用場景
  2. 云函數(shù)架構(gòu)原理
  3. 云函數(shù)關(guān)鍵技術(shù)點
  4. 云函數(shù)行業(yè)進展趨勢

無服務(wù)器云函數(shù)(Serverless Cloud Function)是騰訊云提供的無服務(wù)器(serverless)執(zhí)行環(huán)境,幫助用戶在沒有購買和管理服務(wù)器時仍能運行代碼。用戶只需要使用云平臺支持的語言編寫核心代碼及設(shè)置代碼運行的條件,代碼即可在騰訊云基礎(chǔ)設(shè)施上彈性、安全地運行,并可完全管理底層計算資源,包括服務(wù)器CPU、內(nèi)存、網(wǎng)絡(luò)、代碼部署、彈性伸縮、負載均衡等服務(wù)。

使用無服務(wù)器云函數(shù)將可免除所有運維性操作,企業(yè)和開發(fā)者可以更加專注于核心業(yè)務(wù)的開發(fā),實現(xiàn)快速上線和迭代,把握業(yè)務(wù)發(fā)展的節(jié)奏。

一、云函數(shù)的價值及使用場景

隨著云計算服務(wù)市場的成熟,用戶對云計算接受程度逐漸提高,借助各類基礎(chǔ)云組件,將業(yè)務(wù)上線時間從月級縮短到天級,但對比傳統(tǒng)模式,用戶仍需基于云組件重構(gòu)非功能性需求。

云函數(shù)嘗試將業(yè)務(wù)算法和流程提煉出來交由用戶實現(xiàn),打通各種云服務(wù),并實現(xiàn)通用的負載均衡、自動伸縮、故障容災(zāi)、安全監(jiān)管等通用功能,真正使得用戶像搭積木一樣打造個性化服務(wù),將業(yè)務(wù)上線時間從天級縮短到分鐘級。

騰訊云無服務(wù)器云函數(shù)架構(gòu)精解

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

騰訊云無服務(wù)器云函數(shù)架構(gòu)精解

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

  • 加快用戶服務(wù)上線時間,用戶只需實現(xiàn)業(yè)務(wù)算法及流程,上線時間縮短為分鐘級;
  • 減少用戶的運營負擔,用戶無須承擔服務(wù)擴容,故障恢復(fù)運維工作;
  • 消除用戶的資源成本,用戶無需承擔資源閑置費用,只為實際調(diào)用消耗付費

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

云函數(shù)平臺整體架構(gòu)原理如圖所示。

騰訊云無服務(wù)器云函數(shù)架構(gòu)精解

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

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

  • 不僅支持業(yè)務(wù)快速上線,且能實現(xiàn)持續(xù)發(fā)展;
  • 不僅支持業(yè)務(wù)按需取用,且能釋放閑置資源;
  • 不僅支持業(yè)務(wù)永不中斷,且能擴展運行范圍;
  • 不僅支持業(yè)務(wù)自由運行,且能避免干擾入侵;

下文將展開詳述。

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

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

騰訊云無服務(wù)器云函數(shù)架構(gòu)精解

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

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

騰訊云無服務(wù)器云函數(shù)架構(gòu)精解

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

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

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

騰訊云無服務(wù)器云函數(shù)架構(gòu)精解

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

  • 分發(fā)調(diào)用階段:需減少調(diào)用分發(fā)層級,比如對于用戶主動發(fā)起的http同步調(diào)用,正常路徑可免去存入持久化隊列過程;
  • 鏡像及代碼下載階段:需盡量預(yù)部署以減少下載時間,比如對新提交函數(shù),并行啟動預(yù)加載,使得第一次調(diào)用發(fā)起時無須再去實時下載;
  • 容器啟動過程:需簡化容器啟動腳本,使得啟動過程盡量輕量,對于對延時敏感的業(yè)務(wù),提供實例預(yù)留機制,用戶可選擇預(yù)留少量實例以減少第一次調(diào)用的額外延時;
  • 執(zhí)行函數(shù)調(diào)用:需盡量減少函數(shù)參數(shù),返回數(shù)據(jù)及日志傳遞導(dǎo)致的內(nèi)存拷貝次數(shù);
  • 返回調(diào)用:需盡量減少返回層級;

通過逐層優(yōu)化,第一次調(diào)用平臺耗時可控制在2s左右,后續(xù)調(diào)用平臺耗時控制在5ms左右。隨著客戶請求量的增加或減少,函數(shù)實例隨著自動擴縮容,一般算法如下:

  • If 當前請求數(shù)/當前實例數(shù) > 擴容閾值:擴容實例
  • else 當前請求數(shù)/當前實例數(shù) < 縮容閾值:縮容實例

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

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

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

  • 硬件故障時服務(wù)不中斷
  • 平臺升級時服務(wù)不中斷

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

  • 接入層:基于騰訊云CLB實現(xiàn)橫向擴展,負載均衡,7層路由能力;
  • 邏輯層:實現(xiàn)模塊無狀態(tài)化,模塊內(nèi)部無狀態(tài)數(shù)據(jù),可隨意啟停替換;
  • 數(shù)據(jù)層:采用一致性存儲倉庫存儲關(guān)鍵數(shù)據(jù);
  • 節(jié)點層:實現(xiàn)快速節(jié)點故障檢測及替換恢復(fù)。

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

騰訊云無服務(wù)器云函數(shù)架構(gòu)精解

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

騰訊云無服務(wù)器云函數(shù)架構(gòu)精解

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

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

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

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

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

騰訊云無服務(wù)器云函數(shù)架構(gòu)精解

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

騰訊云無服務(wù)器云函數(shù)架構(gòu)精解

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

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

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

Q&A

Q:請問代碼怎么部署到docker中?

A:直接將代碼下載至母機,再將代碼目錄掛載至Docker

Q:云函數(shù)是通用的 還是只能在云平臺運行?

A:云提供了云函數(shù)服務(wù),自己也可搭建,目前github上有不少開源云函數(shù)平臺,比如openlambda,iron.io等,建議直接使用云的服務(wù),因為可以和多個云產(chǎn)品打通,單靠云函數(shù)自身難以構(gòu)建完整服務(wù)。

Q:事件傳遞使用的是隊列嗎?

A:異步事件用了CMQ消息隊列持久化存儲,同步事件未使用

Q:請問云函數(shù)對開發(fā)語言有限制否?如果有,目前對Go語言的支持如何?

A:目前支持python 2.7/3.6, node.js 4.3/6.10, Java8,如果有通用的用戶需求,可以支持其它語言,比如php,go等

Q:有系統(tǒng)函數(shù)調(diào)用嗎?自定義函數(shù)的顆粒度有何建議?

A:絕大部分的系統(tǒng)調(diào)用都可調(diào)用,除了一些危險操作,比如關(guān)機,重啟,網(wǎng)絡(luò)服務(wù)監(jiān)聽等,函數(shù)顆粒度可參考微服務(wù)的設(shè)計原則,將功能盡量拆細

Q:可落地嗎?

A:已有不少用戶案例,后續(xù)會做些分享,不妨親自試試,當前是免費的,會一直提供免費包,有需求直接給我們提

Q:云函數(shù)支持kotlin語言嗎?

A:之前沒用戶反饋需要這種語言的支持,不過我個人挺看好,會持續(xù)保持關(guān)注

Q:請問將請求調(diào)度函數(shù)實例,這個調(diào)度算法的實現(xiàn)?

A:其實這里就是通用的負載均衡和擴縮容算法,這里比較復(fù)雜的是提前預(yù)測需要擴容,后續(xù)會詳細分享。

Q:能介紹下 將請求調(diào)度到函數(shù)實例的實現(xiàn)嗎?

A:這里有個invoker模塊對每個函數(shù)維持有一個請求隊列,目前沒設(shè)置優(yōu)先級,按照先來先到的順序依次調(diào)度,調(diào)度時會從函數(shù)所有可用的函數(shù)實例中,選擇一個下發(fā)。函數(shù)實例里有個循環(huán)接受請求,收到時傳遞參數(shù)調(diào)用用戶函數(shù)。

Q:代碼可以下云落地嗎?

A:代碼里一般會涉及其它云產(chǎn)品的調(diào)用,所以一般對云平臺有一些依賴,可以關(guān)注下開源的serverless框架,在公有云云函數(shù)上封裝了一層,用來解除依賴,實現(xiàn)在各個云平臺的平滑遷移。

Q:云函數(shù)的代碼有哪些限制?比如什么樣的函數(shù)不可以調(diào)用,什么樣的庫不能import?

A:可以基本認為無限制,但會禁止惡意行為,比如關(guān)機,重啟,端口掃描等;也會禁止端口監(jiān)聽,因為常駐進程不符合云函數(shù)按需啟用的原則。如果預(yù)裝庫不符合要求,可以自行將依賴庫打包至zip里上傳。

Q:下層的容器編排是基于什么做的?k8s么?

A:基于騰訊云的容器平臺,其底層是K8S

分享人:陳杰,騰訊云架構(gòu)平臺部技術(shù)專家,10年云計算經(jīng)驗,現(xiàn)供職于騰訊架構(gòu)平臺部,負責(zé)彈性計算及云函數(shù)技術(shù)研發(fā),致力于提供領(lǐng)先的基礎(chǔ)設(shè)施平臺以提升資源利用率及優(yōu)化提升程序員開發(fā)運維效率。

責(zé)任編輯:未麗燕 來源: DockOne
相關(guān)推薦

2017-04-26 15:07:56

騰訊云

2017-04-26 14:15:35

騰訊云

2023-07-05 08:00:45

架構(gòu)

2019-03-08 10:26:29

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

2018-02-28 11:19:41

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

2017-08-16 16:36:12

無服務(wù)器服務(wù)架構(gòu)

2012-07-06 15:48:59

華為服務(wù)器

2021-08-18 09:00:00

云原生混合云無服務(wù)器

2017-08-18 08:50:40

Azure服務(wù)器容器化

2018-04-23 12:28:24

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

2017-03-15 12:03:31

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

2019-04-26 10:57:26

無服務(wù)器應(yīng)用程序HTTP

2022-03-02 09:31:42

Serverless微服務(wù)架構(gòu)

2018-11-28 09:28:28

無服務(wù)器架構(gòu)網(wǎng)絡(luò)服務(wù)

2011-04-13 09:03:38

服務(wù)器進入云時代

2013-01-04 13:28:23

云服務(wù)器SaaSPaaS

2012-12-27 10:17:21

云服務(wù)器

2020-03-27 11:50:57

無服務(wù)器架構(gòu)技術(shù)

2020-01-09 10:27:36

騰訊云TencentOS內(nèi)核開源
點贊
收藏

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