zoukankan      html  css  js  c++  java
  • 基于 API 网关 + 云函数 SCF 部署 Serverless 外卖订单系统

    API 网关结合云函数 SCF 的使用场景非常丰富,本文将介绍如何基于 API 网关+云函数 SCF 快速部署 Serverless 的外卖订单系统。

    消息推送使用的典型场景

    外卖订单系统架构图

    Demo 实战

    1. 安装Serverless Framework

    npm install -g serverless
    

    2. 初始化项目模板

    sls init -t websocket-order
    

    3. 查看项目目录

    下载到本地后,查看项目目录结构如下:

    包含 DB、网关、函数等多个子模块。

    • db 目录用于创建 PG Serverless 数据库实例

    • apigateway 用于创建对应的 API :

      • /bill 下单 API,HTTP 类型
      • /get_shop_info,获取店铺菜单 API
      • /pgws,用于做消息推送的 websocket API
    • 函数列表如下:

      • 消息推送相关函数:
        • 注册函数 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 网关服务域名

    店家厨房系统.html 更改 17 行 xxxx 为 API 网关服务域名

    效果演示:
    效果演示

    One More Thing

    3 秒你能做什么?喝一口水,看一封邮件,还是 —— 部署一个完整的 Serverless 应用?

    复制链接至 PC 浏览器访问:https://serverless.cloud.tencent.com/deploy/express

    3 秒极速部署,立即体验史上最快的 Serverless HTTP 实战开发!

    传送门:

    欢迎访问:Serverless 中文网,您可以在 最佳实践 里体验更多关于 Serverless 应用的开发!


    推荐阅读:《Serverless 架构:从原理、设计到项目实战》

  • 相关阅读:
    Coursera机器学习week11 单元测试
    关于 TypeReference 的解释
    getModifiers 方法解释。
    instanceof isInstance isAssignableFrom 比较
    elasticsearch 基础 语法总结
    kibana 启动 关闭 和进程查找
    MD5 SHA1 SHA256 SHA512 SHA1WithRSA 的区别
    spring boot 项目 热启动
    java zip 压缩文件
    Packet for query is too large (1660 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.
  • 原文地址:https://www.cnblogs.com/serverlesscloud/p/13293129.html
Copyright © 2011-2022 走看看