基於 API 網關 + 雲函數 SCF 部署 Serverless 外賣訂單系統

API 網關結合雲函數 SCF 的使用場景很是豐富,本文將介紹如何基於 API 網關+雲函數 SCF 快速部署 Serverless 的外賣訂單系統。html

消息推送使用的典型場景

外賣訂單系統架構圖

Demo 實戰

1. 安裝Serverless Framework

npm install -g serverless

2. 初始化項目模板

sls init -t websocket-order

3. 查看項目目錄

下載到本地後,查看項目目錄結構以下:git

包含 DB、網關、函數等多個子模塊。github

  • db 目錄用於建立 PG Serverless 數據庫實例web

  • apigateway 用於建立對應的 API :數據庫

    • /bill 下單 API,HTTP 類型
    • /get_shop_info,獲取店鋪菜單 API
    • /pgws,用於作消息推送的 websocket API
  • 函數列表以下:express

    • 消息推送相關函數:
      • 註冊函數 ws_register.py, 配置 DB 的環境變量
      • 傳輸函數 ws_trans.py ,配置 DB 的環境變量以及 apiid= 消息推送API
      • 註銷函數 ws_unregister.py ,配置 DB 的環境變量以及 apiid= 消息推送API
    • 下單函數 bill.py , 配置 DB 的環境變量以及 apiid= 消息推送API
    • 拉取店鋪信息函數 get_shop_info.py,配置 DB 的環境變量
    • 初始化 DB 函數 init_db.py ,配置 DB 的環境變量

4. 修改配置信息。將 .env.example 文件爲 .env 文件,在 API 密鑰管理 中獲取 SecretId 和 SecretKey。

# secret for credential
TENCENT_SECRET_ID=xxxxxx
TENCENT_SECRET_KEY=xxxxxx

# global config
REGION=ap-shanghai
  1. 項目部署
sls deploy --all

6. 更新配置及部署

  • 執行 init_db-dev 函數,進行數據庫初始化。在控制檯或者 vscode 插件中,點擊測試 init_db-dev 函數,對數據庫進行初始化的建表等操做
  • 更新 apiid 配置,再次部署
    serverless
    查看輸出信息,在 function_bill 目錄和 function_ws_trans 目錄的 serverless.yml 中,分別配置 websocket API 的 apiid ,並從新部署兩個函數,刷新環境變量配置。
    serverless
sls deploy --target=./function_ws_trans 
sls deploy --target=./function_bill

7. 更改客戶端與廚房訂單系統的地址

App點單系統.html 更改 29 行 以及 88 行中 xxxx 爲:生成的 API 網關服務域名npm

店家廚房系統.html 更改 17 行 xxxx 爲 API 網關服務域名api

效果演示:
效果演示瀏覽器

One More Thing

3 秒你能作什麼?喝一口水,看一封郵件,仍是 —— 部署一個完整的 Serverless 應用?websocket

複製連接至 PC 瀏覽器訪問:https://serverless.cloud.tencent.com/deploy/express

3 秒極速部署,當即體驗史上最快的 Serverless HTTP 實戰開發!

傳送門:

歡迎訪問:Serverless 中文網,您能夠在 最佳實踐 裏體驗更多關於 Serverless 應用的開發!


推薦閱讀:《Serverless 架構:從原理、設計到項目實戰》

相關文章
相關標籤/搜索