天天看點

教你 4 步搭建彈性可擴充的 WebAPI

教你 4 步搭建彈性可擴充的 WebAPI

作者 | 蕭起 阿裡雲雲原生團隊

本文整理自

《Serverless 技術公開課》

,關注“Serverless”公衆号,回複“入門”,即可擷取 Serverless 系列文章 PPT。

導讀:本節課程主要分為三個部分,基本概念中介紹基于函數計算的 WebAPI 與普通的 WebAPI 的差別及優勢;開發流程中介紹如何在函數計算的控制台進行 WebAPI 的開發;操作示範中會執行個體示範函數計算 WebAPI 的開發過程。

基本概念

教你 4 步搭建彈性可擴充的 WebAPI

常見的 WebAPI 架構如上圖所示,主要包括用戶端(浏覽器)、伺服器、資料庫,WebAPI 由伺服器提供,同時伺服器要完成負載均衡、登入鑒權的相關操作。

當用戶端流量快速增大時,伺服器端隻能通過水準擴充加機器的方式來增加提高服務能力。

這種正常模式主要有兩點局限性:

  • 技術同學除了開發業務代碼,有大量的伺服器運維成本,來保證服務的穩定性、可用性,技術同學要花費很多時間進行運維工作,占用開發時間,降低項目研發效率。
  • 流量突然增加時,需要水準擴充加機器,彈性的響應能力差,擴容速度往往要數十分鐘,無法實作秒級極速擴容,導緻一段時間内的服務能力不足。同時當流量變少時,難以做到及時縮容,造成機器的成本浪費。
教你 4 步搭建彈性可擴充的 WebAPI

基于函數計算的 WebAPI 架構如上圖所示,與正常的 WebAPI 架構相比,用戶端和資料庫未發生變化,但伺服器變化巨大,主要展現在:

  • 之前需要開發團隊維護的路由子產品以及鑒權子產品都将接入服務商提供的 API 網關系統以及鑒權系統,開發團隊無須再維護這兩部分的業務代碼,隻需要持續維護相關規則即可。
  • 在這個結構下,業務代碼也被拆分成了函數粒度,不同函數表示不同的功能。
  • 我們已經看不到伺服器的存在,是因為 Serverless 的目的是讓使用者隻關注自己的業務邏輯即可,是以一部分安全問題、資源排程問題(例如使用者量暴增、如何實作自動擴容等)全都交給雲廠商負責。
  • 相對于傳統項目而言,傳統項目無論是否有使用者通路,服務都在運作中,都是有成本支出,而 Serverless 而言,隻有在用去發起請求時,函數才會被激活并執行,且會按量收費,可以實作在有流量的時候才有支援,沒有流量的時候就沒有支出,相對來說,成本會進一步降低。

開發流程

1. 登入函數計算控制台,建立應用

教你 4 步搭建彈性可擴充的 WebAPI

可以通過兩種方式來建立應用,如果是已有的 Web 項目,可以選擇上圖中的第一種方式:“常見 Web 應用”;對于新項目則推薦使用第二種方式:“基于模闆建立應用”。我們這裡使用模闆方式,選擇基于 Python 的 Web 應用。

模闆可以當做應用腳手架,選擇适合的模闆,可以自動完成相關依賴資源的建立,如角色、OSS、域名網關等,降低開發成本。

2. 建立函數

教你 4 步搭建彈性可擴充的 WebAPI

在應用下,建立函數,我們是開發 WebAPI,是以選擇“HTTP”函數,這種函數會将指定的 http 請求作為觸發器,來排程對應函數的執行。

函數建立好之後,是個傳回 helloWorld 的 demo,我們在此基礎上來開發我們的業務邏輯。

教你 4 步搭建彈性可擴充的 WebAPI

首先介紹下上圖代碼中的 handler 函數,這個函數是入口函數,http 觸發器接收到調用後會通過這個入口來啟動整個函數。函數有兩個入參,environ 和 start_response:

  • environ

environ 中主要包含兩部分内容:http 請求的入參和函數執行上下文 fcContext,函數上下文參數中包含一些函數運作時的資訊(例如 request id 、 臨時 AK ),您在代碼中可以使用這些資訊。資訊類型是 FCContext。

  • start_response

該參數主要用于生成 http 請求的 response。

3. 配置觸發器,綁定域名

教你 4 步搭建彈性可擴充的 WebAPI

在建立函數時會自動建立一個 http 觸發器,這個觸發器的路徑是“aliyun.com”的一個測試路徑,隻能用于測試,真實的應用需要通過自定義域名将真實域名與函數綁定,這樣通路指定域名時,對應函數就會被觸發執行。

4. 日志與監控

在每個函數編輯頁面,日志和監控服務,函數的每次執行都會生成唯一的 requestId,日志中通過 requestId 進行查詢,看到本次函數執行的所有日志。

教你 4 步搭建彈性可擴充的 WebAPI

操作示範

點選連結即可觀看示範視訊:

https://developer.aliyun.com/lesson_2024_18999

課程推薦

為了更多開發者能夠享受到 Serverless 帶來的紅利,這一次,我們集結了 10+ 位阿裡巴巴 Serverless 領域技術專家,打造出最适合開發者入門的 Serverless 公開課,讓你即學即用,輕松擁抱雲計算的新範式——Serverless。

點選即可免費觀看課程:https://developer.aliyun.com/learning/roadmap/serverless
Serverless 公衆号 ,釋出 Serverless 技術最新資訊,彙集 Serverless 技術最全内容,關注 Serverless 趨勢,更關注你落地實踐中的遇到的困惑和問題。