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

2022-01-10 11:00:25 字數 1764 閱讀 4703

作者 | 蕭起 阿里云云原生團隊

本文整理自《serverless 技術公開課》

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

當客戶端流量快速增大時,伺服器端只能通過水平擴充套件加機器的方式來增加提高服務能力。

這種常規模式主要有兩點侷限性:

基於函式計算的 webapi 架構如上圖所示,與常規的 webapi 架構相比,客戶端和資料庫未發生變化,但伺服器變化巨大,主要體現在:

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

可以通過兩種方式來建立應用,如果是已有的 web 專案,可以選擇上圖中的第一種方式:「常見 web 應用」;對於新專案則推薦使用第二種方式:「基於模板建立應用」。我們這裡使用模板方式,選擇基於 python 的 web 應用。

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

2. 新建函式

在應用下,建立函式,我們是開發 webapi,所以選擇「http」函式,這種函式會將指定的 http 請求作為觸發器,來排程對應函式的執行。

函式新建好之後,是個返回 helloworld 的 demo,我們在此基礎上來開發我們的業務邏輯。

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

environ 中主要包含兩部分內容:http 請求的入參和函式執行上下文 fccontext,函式上下文引數中包含一些函式執行時的資訊(例如 request id 、 臨時 ak ),您在**中可以使用這些資訊。資訊型別是 fccontext。

該引數主要用於生成 http 請求的 response。

3. 配置觸發器,繫結網域名稱

在新建函式時會自動建立乙個 http 觸發器,這個觸發器的路徑是「aliyun.com」的乙個測試路徑,只能用於測試,真實的應用需要通過自定義域名將真實網域名稱與函式繫結,這樣訪問指定網域名稱時,對應函式就會被觸發執行。

4. 日誌與監控

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

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

作者 蕭起 阿里云云原生團隊 本文整理自 serverless 技術公開課 常見的 webapi 架構如上圖所示,主要包括客戶端 瀏覽器 伺服器 資料庫,webapi 由伺服器提供,同時伺服器要完成負載均衡 登入鑑權的相關操作。當客戶端流量快速增大時,伺服器端只能通過水平擴充套件加機器的方式來增加提...

web設計 4 可擴充套件的行

不要指定橫向頁面元件的高度,要讓它們能夠在縱向自由擴充套件。常見的包含文章正文或大段文字的區域,應該適應任何篇幅和大小的文字。但是例如文章標題 登陸資訊欄等也要考慮文字內容數量及高度的變化。例如 下圖中標題文字數量過多時固定高度就會破壞樣式 如何修改 1.html結構為 利用h5的header標籤 ...

構建可擴充套件的Web站點(二)

五,拓展開發模型 當你的開發團隊變得越來越大的時候,你可能會需要以下 1 編碼規範 對同一小組的人而言,對一種編碼風格達成共識,遠比找到完美的風格更加重要。編碼規範通常包含的規則有 縮排,空白字元,括號,注釋,命名,檔案布局,行結束符。2 測試 一種是自動測試,其中重要部分就是回歸測試。第二種就是手...