日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

教你 4 步搭建弹性可扩展的 WebAPI

發(fā)布時間:2025/3/20 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 教你 4 步搭建弹性可扩展的 WebAPI 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

作者 | 蕭起 阿里云云原生團(tuán)隊(duì)

本文整理自《Serverless 技術(shù)公開課》,關(guān)注“Serverless”公眾號,回復(fù)“入門”,即可獲取 Serverless 系列文章 PPT。

**導(dǎo)讀:**本節(jié)課程主要分為三個部分,基本概念中介紹基于函數(shù)計(jì)算的 WebAPI 與普通的 WebAPI 的區(qū)別及優(yōu)勢;開發(fā)流程中介紹如何在函數(shù)計(jì)算的控制臺進(jìn)行 WebAPI 的開發(fā);操作演示中會實(shí)例演示函數(shù)計(jì)算 WebAPI 的開發(fā)過程。

基本概念

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

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

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

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

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

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

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

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

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

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

開發(fā)流程

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

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

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

2. 新建函數(shù)

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-iQ5uqAL0-1599790642253)(https://ucc.alicdn.com/pic/developer-ecology/c75ecf8ed1824448aaf6d4d65b57b2be.png)]

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

函數(shù)新建好之后,是個返回 helloWorld 的 demo,我們在此基礎(chǔ)上來開發(fā)我們的業(yè)務(wù)邏輯。

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

  • environ

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

  • start_response

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

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

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-2Ve7kuk6-1599790642256)(https://ucc.alicdn.com/pic/developer-ecology/ec3fe5734f8c4340a5b1e39f6ab51b14.png)]

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

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

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

操作演示

點(diǎn)擊鏈接即可觀看演示視頻:https://developer.aliyun.com/lesson_2024_18999

課程推薦

為了更多開發(fā)者能夠享受到 Serverless 帶來的紅利,這一次,我們集結(jié)了 10+ 位阿里巴巴 Serverless 領(lǐng)域技術(shù)專家,打造出最適合開發(fā)者入門的 Serverless 公開課,讓你即學(xué)即用,輕松擁抱云計(jì)算的新范式——Serverless。

點(diǎn)擊即可免費(fèi)觀看課程:https://developer.aliyun.com/learning/roadmap/serverless

Serverless 公眾號,發(fā)布 Serverless 技術(shù)最新資訊,匯集 Serverless 技術(shù)最全內(nèi)容,關(guān)注 Serverless 趨勢,更關(guān)注你落地實(shí)踐中的遇到的困惑和問題。

總結(jié)

以上是生活随笔為你收集整理的教你 4 步搭建弹性可扩展的 WebAPI的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。