雲開發的雲函式路由高階玩法介紹

2022-09-23 18:03:18 字數 1928 閱讀 8031

李成熙,騰訊雲高階工程師。2023年度畢業加入騰訊alloyteam,先後負責過qq群、花樣直播、騰訊文件等專案。2023年加入騰訊云云開發團隊。專注於效能優化、工程化和小程式服務。微博|知乎|github

概念回顧

在掘金開發者大會上,在推薦實踐那裡,我有提到一種雲函式的用法,我們可以將相同的一些操作,比如使用者管理、支付邏輯,按照業務的相似性,歸類到乙個雲函式裡,這樣比較方便管理、排查問題以及邏輯的共享。甚至如果你的小程式的後台邏輯不複雜,請求量不是特別大,完全可以在雲函式裡面做乙個單一的微服務,根據路由來處理任務。

用下面三幅圖可以概括,我們來回顧一下:

比如這裡就是傳統的雲函式用法,乙個雲函式處理乙個任務,高度解耦。

第二幅架構圖就是嘗試將請求歸類,乙個雲函式處理某一類的請求,比如有專門負責處理使用者的,或者專門處理支付的雲函式。

最後一幅圖顯示這裡只有乙個雲函式,雲函式裡有乙個分派任務的路由管理,將不同的任務分配給不同的本地函式處理。

tcb-router介紹及用法

為了方便大家試用,咱們騰訊雲 tencent cloud base 團隊開發了tcb-router,雲函式路由管理庫方便大家使用。

那具體怎麼使用tcb-router去實現上面提到的架構呢?下面我會逐一舉例子。

架構一:乙個雲函式處理乙個任務

這種架構下,其實不需要用到tcb-router,像普通那樣寫好雲函式,然後在小程式端呼叫就可以了。

雲函式// 函式 router

exports.main = (event, context) => ).then((res) => ).catch((e) => );

app.router('register', async (ctx, next) => , async (ctx, next) => , async (ctx) => , async (ctx, next) => , async (ctx) => );

app.router('makeorder', async (ctx, next) => , async (ctx, next) => , async (ctx) => , async (ctx, next) => , async (ctx) => ).then((res) => ).catch((e) => ).then((res) => ).catch((e) => );

app.router('user/register', async (ctx, next) => , async (ctx, next) => , async (ctx) => , async (ctx, next) => , async (ctx) => , async (ctx, next) => , async (ctx) => , async (ctx, next) => , async (ctx) => ).then((res) => ).catch((e) => ).then((res) => ).catch((e) => , async (ctx, next) => , async (ctx, next) => ).catch(reject);

那麼compose是怎麼組合好這些中介軟體的呢?這裡擷取部份**進行分析

function compose(middleware) ).catch(reject);

看到promise.resolve乙個async function,許多人都會很困惑。其實撇除next這個往下呼叫中介軟體的邏輯,我們可以很好地將邏輯簡化成下面這段示例:

let a = async () => {

console.log(1);

let b = async () => {

console.log(2);

return 3;

let fn = async () => {

await a();

return b();

promise.resolve(fn()).then((res) => {

console.log(res);

// 輸出

雲開發02 雲函式

核心在於其返回值上,還有他傳遞時的event值 onlaunch function 雲函式獲取加法 獲取使用者openidpage success res fail err 獲取使用者openid getopenid fail err 雲函式入口檔案 const cloud require wx s...

阿里雲的介紹

正如單機作業系統的核心,在阿里雲os中,飛天大規模分布式計算平台起到了承上啟下的關鍵作用。飛天執行在通過網路互聯的通用伺服器集群上,隱藏了海量硬體所帶來的複雜度和不可靠,向雲os的其他元件提供可信賴的的計算能力和儲存能力。具體來講,飛天本身是乙個由多個元件所構成的複雜的分布式系統,其中的核心元件是以...

雲計算的介紹

什麼是雲計算 資源與服務的互動方式 雲計算就是按需使用,按需付費 定義 雲計算是一種能通過網路以便利的 按需付費的方式獲取計算資源 網路 伺服器 儲存 應用 和服務 並提高其可用性的模式,這些資源來自乙個共享的 可配置的資源池,並能夠以最省力和無人干預的方式 獲取和釋放 雲計算的特點 1.大規模 分...