溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么搭建彈性可擴(kuò)展的WebAPI

發(fā)布時(shí)間:2021-12-10 18:35:57 來(lái)源:億速云 閱讀:140 作者:柒染 欄目:云計(jì)算

怎么搭建彈性可擴(kuò)展的WebAPI,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

基本概念

怎么搭建彈性可擴(kuò)展的WebAPI

常見(jiàn)的 WebAPI 架構(gòu)如上圖所示,主要包括客戶端(瀏覽器)、服務(wù)器、數(shù)據(jù)庫(kù),WebAPI 由服務(wù)器提供,同時(shí)服務(wù)器要完成負(fù)載均衡、登錄鑒權(quán)的相關(guān)操作。

當(dāng)客戶端流量快速增大時(shí),服務(wù)器端只能通過(guò)水平擴(kuò)展加機(jī)器的方式來(lái)增加提高服務(wù)能力。

這種常規(guī)模式主要有兩點(diǎn)局限性:

  • 技術(shù)同學(xué)除了開(kāi)發(fā)業(yè)務(wù)代碼,有大量的服務(wù)器運(yùn)維成本,來(lái)保證服務(wù)的穩(wěn)定性、可用性,技術(shù)同學(xué)要花費(fèi)很多時(shí)間進(jìn)行運(yùn)維工作,占用開(kāi)發(fā)時(shí)間,降低項(xiàng)目研發(fā)效率。

  • 流量突然增加時(shí),需要水平擴(kuò)展加機(jī)器,彈性的響應(yīng)能力差,擴(kuò)容速度往往要數(shù)十分鐘,無(wú)法實(shí)現(xiàn)秒級(jí)極速擴(kuò)容,導(dǎo)致一段時(shí)間內(nèi)的服務(wù)能力不足。同時(shí)當(dāng)流量變少時(shí),難以做到及時(shí)縮容,造成機(jī)器的成本浪費(fèi)。

怎么搭建彈性可擴(kuò)展的WebAPI

基于函數(shù)計(jì)算的 WebAPI 架構(gòu)如上圖所示,與常規(guī)的 WebAPI 架構(gòu)相比,客戶端和數(shù)據(jù)庫(kù)未發(fā)生變化,但服務(wù)器變化巨大,主要體現(xiàn)在:

  • 之前需要開(kāi)發(fā)團(tuán)隊(duì)維護(hù)的路由模塊以及鑒權(quán)模塊都將接入服務(wù)商提供的 API 網(wǎng)關(guān)系統(tǒng)以及鑒權(quán)系統(tǒng),開(kāi)發(fā)團(tuán)隊(duì)無(wú)須再維護(hù)這兩部分的業(yè)務(wù)代碼,只需要持續(xù)維護(hù)相關(guān)規(guī)則即可。

  • 在這個(gè)結(jié)構(gòu)下,業(yè)務(wù)代碼也被拆分成了函數(shù)粒度,不同函數(shù)表示不同的功能。

  • 我們已經(jīng)看不到服務(wù)器的存在,是因?yàn)?Serverless 的目的是讓使用者只關(guān)注自己的業(yè)務(wù)邏輯即可,所以一部分安全問(wèn)題、資源調(diào)度問(wèn)題(例如用戶量暴增、如何實(shí)現(xiàn)自動(dòng)擴(kuò)容等)全都交給云廠商負(fù)責(zé)。

  • 相對(duì)于傳統(tǒng)項(xiàng)目而言,傳統(tǒng)項(xiàng)目無(wú)論是否有用戶訪問(wèn),服務(wù)都在運(yùn)行中,都是有成本支出,而 Serverless 而言,只有在用去發(fā)起請(qǐng)求時(shí),函數(shù)才會(huì)被激活并執(zhí)行,且會(huì)按量收費(fèi),可以實(shí)現(xiàn)在有流量的時(shí)候才有支持,沒(méi)有流量的時(shí)候就沒(méi)有支出,相對(duì)來(lái)說(shuō),成本會(huì)進(jìn)一步降低。

開(kāi)發(fā)流程

1. 登錄函數(shù)計(jì)算控制臺(tái),創(chuàng)建應(yīng)用

怎么搭建彈性可擴(kuò)展的WebAPI

可以通過(guò)兩種方式來(lái)創(chuàng)建應(yīng)用,如果是已有的 Web 項(xiàng)目,可以選擇上圖中的第一種方式:“常見(jiàn) Web 應(yīng)用”;對(duì)于新項(xiàng)目則推薦使用第二種方式:“基于模板創(chuàng)建應(yīng)用”。我們這里使用模板方式,選擇基于 Python 的 Web 應(yīng)用。

模板可以當(dāng)做應(yīng)用腳手架,選擇適合的模板,可以自動(dòng)完成相關(guān)依賴資源的創(chuàng)建,如角色、OSS、域名網(wǎng)關(guān)等,降低開(kāi)發(fā)成本。

2. 新建函數(shù)

怎么搭建彈性可擴(kuò)展的WebAPI

在應(yīng)用下,創(chuàng)建函數(shù),我們是開(kāi)發(fā) WebAPI,所以選擇“HTTP”函數(shù),這種函數(shù)會(huì)將指定的 http 請(qǐng)求作為觸發(fā)器,來(lái)調(diào)度對(duì)應(yīng)函數(shù)的執(zhí)行。

函數(shù)新建好之后,是個(gè)返回 helloWorld 的 demo,我們?cè)诖嘶A(chǔ)上來(lái)開(kāi)發(fā)我們的業(yè)務(wù)邏輯。

怎么搭建彈性可擴(kuò)展的WebAPI

首先介紹下上圖代碼中的 handler 函數(shù),這個(gè)函數(shù)是入口函數(shù),http 觸發(fā)器接收到調(diào)用后會(huì)通過(guò)這個(gè)入口來(lái)啟動(dòng)整個(gè)函數(shù)。函數(shù)有兩個(gè)入?yún)?,environ 和 start_response:

  • environ

environ 中主要包含兩部分內(nèi)容:http 請(qǐng)求的入?yún)⒑秃瘮?shù)執(zhí)行上下文 fcContext,函數(shù)上下文參數(shù)中包含一些函數(shù)運(yùn)行時(shí)的信息(例如 request id 、 臨時(shí) AK ),您在代碼中可以使用這些信息。信息類型是 FCContext。

  • start_response

該參數(shù)主要用于生成 http 請(qǐng)求的 response。

3. 配置觸發(fā)器,綁定域名

怎么搭建彈性可擴(kuò)展的WebAPI

在新建函數(shù)時(shí)會(huì)自動(dòng)創(chuàng)建一個(gè) http 觸發(fā)器,這個(gè)觸發(fā)器的路徑是“aliyun.com”的一個(gè)測(cè)試路徑,只能用于測(cè)試,真實(shí)的應(yīng)用需要通過(guò)自定義域名將真實(shí)域名與函數(shù)綁定,這樣訪問(wèn)指定域名時(shí),對(duì)應(yīng)函數(shù)就會(huì)被觸發(fā)執(zhí)行。

4. 日志與監(jiān)控

在每個(gè)函數(shù)編輯頁(yè)面,日志和監(jiān)控服務(wù),函數(shù)的每次執(zhí)行都會(huì)生成唯一的 requestId,日志中通過(guò) requestId 進(jìn)行查詢,看到本次函數(shù)執(zhí)行的所有日志。

怎么搭建彈性可擴(kuò)展的WebAPI

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI