前言
这是一个 JAVA 开发的订单后台应用(没错!就是那个让无数大学生痛不欲生的订单后台系统),结合 Serverless 这一无服务器思想,尝试通过云函数 + API 网关 + 云数据库的组合来部署 Springboot 的成功之作。
```` 本文作者:Freeeeeedom
该应用提供了完整的用户登录验证、接口数据验证、订单流 (CRUD) 等强大的功能,而且在本地开发调试时也能模拟 API 网关调用云函数(本地 Java 开发云端部署不是问题),还兼容了云消息队列 CMQ 的调用,以便后续开发引入云中间件。
同时,这种部署方式也能让其他的 Springboot 很快地转换为云函数部署。
为响应国家「十四五计划」的环保计划,特地的研究了一下传说中的 **Serverless** 方案(省服务器 😄),于是便有了这次尝试。
## 语言和框架
- JAVA 天下第一**,当然 c/c++/c#/node/python/go/php/vb 这些也不错
- JAVA 的单体应用还能选什么呢?只能是 Springboot 啊
## 部署准备
1. 注册个腾讯云账号
2. 开通以下产品权限(云函数、API 网关、对象存储)
3. 财力允许的话还可以购买数据库服务(因为年少轻狂打折时我购买了这俩很长很长时间)
- mysql数据库
- redis数据库
![](https://img-blog.csdnimg.cn/20201123113916255.png)
## 部署方案
订单应用来说的话,必然是提供 restful 的接口,所以在统一 VPC 内采用了云函数 + API 网关的模式提供接口,于是就有了以下方案:
1. 应用主体部署在云函数
2. 使用 API 网关作为函数入口
3. 页面则是使用了对象存储部署
4. 数据库方面则使用了同一 vpc 下的云数据库(财力有限只尝试了 mysql、redis,理论上其他应该都可行)
## 尝试部署
要让 JAVA 工程部署到云函数上,首先了解什么是云函数(以下摘自微信开放文档)
云函数即在云端(服务器端)运行的函数。在物理设计上,一个云函数可由多个文件组成,占用一定量的 CPU 内存等计算资源;各云函数完全独立;可分别部署在不同的地区。开发者无需购买、搭建服务器,只需编写函数代码并部署到云端即可在小程序端调用,同时云函数之间也可互相调用。
云函数其实就是将业务拆分成函数粒度部署在云上,那么就写了个简单的 demo 部署到云函数上,并且配