天天看點

Serverless在遊戲、電商行業的一個運用場景示例

Serverless 是一種架構理念,具有自己的獨特的優勢和适用場景。本文以使用阿裡雲函數計算為例,建構一個簡單具體的microservice為例,看看這種架構是如何達到快速開發和節約運維成本的。

某遊戲公司剛開發完一個新的遊戲,想要進行一些封閉測試,他們需要一個管理激活碼的service來邀請有激活碼的玩家來參與封閉測試,同時可能對積極參與封閉測試的玩家,等正式開服後,給予一定的禮包券碼

某垂直領域的電商,剛剛起步,流量不是特别大,但發展勢頭不錯。他們需要一個管理優惠碼的service

針對上面所說的兩個場景,無論是優惠碼,激活碼等相關碼的管理,一般有如下四個:

生成碼

使用碼

驗證碼

删除碼

使用者自己去架設伺服器,配置資料庫,再編寫對應的服務,再配備相應的運維人員,總之,不管是硬體成本還是人力成本都不少。

在本文中,我們運用阿裡雲API Gateway + 函數計算 + 表格存儲(OTS),就能快速搭建這個服務,API Gateway 會自動 scale 去應對請求流量,同樣函數計算也會根據流量自動 scale。開發方面,隻需要實作好對應的邏輯函數即可。運維方面,省去了管理密匙、打安全更新檔等工作,因為使用者根本沒有需要維護的機器。整個解決方案如下圖:

Serverless在遊戲、電商行業的一個運用場景示例

從上圖我們可以看出,主要有兩個步驟:

函數計算結合ots實作具體的邏輯,本文主要講解這個過程, 并給出具體的代碼。

1, 建立一個ots執行個體,并在執行個體中建立一張表;在本例中,是在華東2 region建立了<code>code-ots</code>執行個體,并在該執行個體中建立了一張表<code>code</code>, 主鍵是STRING類型

Serverless在遊戲、電商行業的一個運用場景示例
Serverless在遊戲、電商行業的一個運用場景示例
Serverless在遊戲、電商行業的一個運用場景示例
Serverless在遊戲、電商行業的一個運用場景示例

配置event

通過這個配置的event,設定的目标是産生1000個碼, 碼的有效期在<code>2017-12-22 00:00:00</code> 至 <code>2017-12-28 00:00:00</code>,預設産生的狀态都是UNACTIVED,未激活的

code

假設使用碼254804e8-e707-11e7-9c21-0242ac110004,隻有表中存在這個碼并且這個碼是<code>UNACTIVED</code>才傳回SUCCESS,并且把該碼的狀态設定為<code>ACTIVED</code>。其他情況,比如不存在這個碼,或者是存在這個碼但是已經被激活使用過,都傳回FAIL

假設查詢碼254804e8-e707-11e7-9c21-0242ac110004,隻有表中不存在這個碼傳回<code>NO EXISTED</code>, 存在的話,則傳回表中記錄的狀态

假設删除碼254804e8-e707-11e7-9c21-0242ac110004,不管表中是否存在這個碼,隻要表中沒有這個碼了就是成功删除,除非ots sdk delete_row抛出異常