导读:SpringBoot 是基于 Java Spring 框架的套件,它预装了 Spring 的一系列组件,让开发者只需要很少的配置就可以创建独立运行的应用程序。在云原生的世界里,有大量的平台可以运行 Spring Boot 应用,例如虚拟机、容器等。但其中最有吸引力的,是以 Serverless 的方式运行 Spring Boot 应用。我将通过一系列文章,从架构,部署,监控、性能、安全等 5 个方面来分析 Serverless 平台运行 Spring Boot 应用的优劣。为了让分析更有代表性,我选择了 Github 上 star 数超过 50k 的电商应用 mall 作为示例。
我们在上一篇的“Spring Boot on FC - 架构”一文中,对 Mall 应用架构以及 Serverless 平台有了一个基本的介绍,下面我会在本篇中为各位介绍如何将 Mall 应用部署到函数计算平台上。
前置条件
准备阶段:
- 您需要有一个阿里云的账户
- 您需要有一台能通过公网 ip 访问的机器,安装 MySQL,Redis 等 Mall 应用依赖的软件。
- 您需要在运行依赖软件的机器上安装 Git, Docker,Java 和 Maven 软件
- 您需要安装并配置 Serverless Devs 工具
注意,如果您使用了云主机,请先检查主机对应的安全组配置是否允许入方向的网络请求。一般的主机在创建后,对于入方向的网络端口访问做了严格限制。我们需要手动允许访问 MySQL 的 3306 端口,Redis 的 6379 端口等。如下图所示,我手动设置了安全组,允许所有入方向的网络请求。
1. 部署依赖软件
Mall 应用依赖 MySQL,Redis,MongoDB,ElasticSearch,RabbitMQ 等软件。这些软件在云上都有对应的云产品。在生产环境,推荐使用云产品获得更好的性能和可用性。在个人开发或者 POC 原型演示场景下,我们选择一台 VM 来容器化部署所有依赖的软件。
1.1. Clone 代码仓库
git clone https://github.com/hryang/mall
国内访问 github 网络不太好,如果 clone 太慢,可使用 Gitee 地址。
git clone https://gitee.com/aliyunfc/mall.git
1.2. 构建和运行 Docker 镜像
在代码根目录的 docker 文件夹下,有每个依赖软件对应的 Dockerfile。运行代码根目录下的 run.sh 脚本,会自动构建所有依赖软件的 Docker 镜像,并在本机运行。
sudo bash docker.sh
1.3. 验证依赖软件运行状态
执行 docker ps 命令,检查依赖软件是否正常运行。
sudo docker ps
2.部署 mall 应用
2.1. 修改 mall 应用配置
修改 mall-admin/src/main/resources/application-prod.yml,mal