通过关键词采集文章采集api(如何将Mall平台运行SpringBoot应用部署到函数计算平台)
优采云 发布时间: 2022-01-22 13:10通过关键词采集文章采集api(如何将Mall平台运行SpringBoot应用部署到函数计算平台)
简介:Spring Boot 是一个基于 Java Spring 框架的套件。它预装了一系列 Spring 组件,允许开发人员以最少的配置创建独立的应用程序。在云原生环境中,有大量的平台可以运行 Spring Boot 应用程序,例如虚拟机、容器等,但其中最吸引人的还是以 Serverless 的方式运行 Spring Boot 应用程序。
通过一系列文章,我将从架构、部署、监控、性能、安全五个方面分析在Serverless平台上运行Spring Boot应用的优缺点。在之前的文章《Spring Boot 上 FC 架构》中,我们对 Mall 应用架构和 Serverless 平台进行了基本的介绍。在本文中,我将告诉您如何将商城应用部署到函数计算平台。为了让分析更具代表性,我选择了 Github 上 Star 超过 50k 的电商应用商城作为例子。
前提
准备阶段:
注意,如果您使用云主机,请先检查主机对应的安全组配置是否允许入站网络请求。通用主机创建后,入方向的网口访问受到严格限制。我们需要手动允许访问 MySQL 的 3306 端口,Redis 的 6379 端口等。如下图所示,我手动设置了安全组以允许所有传入的网络请求。
部署依赖软件
Mall应用依赖于MySQL、Redis、MongoDB、ElasticSearch、RabbitMQ等软件。这些软件在云端都有相应的云产品。在生产环境中,建议使用云产品以获得更好的性能和可用性。在个人开发或者POC原型演示场景中,我们选择一个VM来容器化和部署所有依赖的软件。
1.1 克隆代码仓库
git clone https://github.com/hryang/mall
在中国访问Github网络不是很好。如果克隆太慢,可以使用 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.1 修改商城应用配置
修改以下三个yaml文件,将host字段修改为步骤1中安装MySQL等软件的节点的公网ip,如图:
mall-admin/src/main/resources/application-prod.yml
商城门户/src/main/resources/application-prod.yml
商场搜索/src/main/resources/application-prod.yml
2.2 生成商城应用容器镜像
执行maven package命令生成Docker镜像,本地Java8或Java11环境均可。
sudo -E mvn package
成功后会显示如下成功信息。
执行 sudo docker images,应该可以看到 1.0-SNAPSHOT 版本的 mall/mall-admin、 mall/mall-portal 和 mall/mall-search 的镜像。
2.3 将镜像推送到阿里云镜像仓库
首先登录阿里云镜像仓库控制台,选择*敏*感*词*实例,按照提示让docker登录阿里云镜像仓库。
然后创建命名空间。如下图所示,我们创建了一个名为 quanxi-hryang 的命名空间。
按照前面的步骤,我们已经在本地生成了 mall/mall-admin、 mall/mall-portal、 mall/mall-search 的图片。
执行以下命令,将 mall-admin 镜像推送到杭州地区 quanxi-hryang 命名空间下的镜像仓库。
请将以下命令中的 cn-hangzhou 和 quanxi-hryang 修改为自己的镜像仓库区域和命名空间。商城/商城门户、商城/商城搜索等。
sudo docker tag mall/mall-admin:1.0-SNAPSHOT registry.cn-hangzhou.aliyuncs.com/quanxi-hryang/mall-admin:1.0-SNAPSHOT
sudo docker push registry.cn-hangzhou.aliyuncs.com/quanxi-hryang/mall-admin:1.0-SNAPSHOT
2.4 修改Serverless Devs工具的应用定义
我们使用无服务器开发工具来定义和部署应用程序。项目根目录下有s.yaml文件,是Serverless Devs工具的项目定义文件。这定义了函数计算的资源。
如下图所示,我们在函数计算上定义了一个名为 mall-admin 的服务及其下的 mall-admin 函数。该函数定义了端口、内存大小、超时和运行时间等属性。红框内的内容是需要根据自己的配置进行修改的。
(建议:以上镜像地址最好使用/fc-demo/mall-admin:1.0-SNAPSHOT形式)
2.5 将商城应用部署到函数计算平台
执行 s 部署命令。部署成功后,会看到对应的访问URL。
在浏览器中输入生成的 URL。如果显示“尚未登录或token已过期”,则服务部署成功。
(注:Serverless的特点是系统默认会在请求到达后创建实例,所以第一次启动时间比较长,称为冷启动。一般需要30s左右才能启动Mall应用。稍后,我们将重点关注性能调优文章回来复习这个问题,用一系列手段进行优化。)
访问对应的swagger api调试页面host/swagger-ui.html,调试相关的后端API。
2.6 查看应用程序日志
我们在 s.yaml 中为每个服务设置了 logConfig:auto,也就是说 serverless-devs 工具会自动为服务创建一个日志存储(LogStore),所有服务共享一个日志存储。应用程序的所有日志都输出到 .
s 日志有助于您了解服务的运行情况和诊断问题。比如我们执行s mall-admin logs -t 进入follow模式,然后在浏览器中访问 mall-admin 服务的端点,就可以看到整个应用的启动和请求处理日志。
2.7 部署商城前端项目
Mall 还提供了基于 Vue+Element 实现的前端接口。主要包括商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等功能。该项目还可以在函数计算上无缝运行。
首先在你的机器上安装nodejs12和npm,并下载项目源代码。
git clone https://github.com/hryang/mall-admin-web
国内访问github网络不太好。如果克隆太慢,可以使用下面的代理地址。
git clone https://gitee.com/aliyunfc/mall-admin-web.git
(注意:必须是nodejs 12或者14,太新的node版本会编译失败)
修改 config/prod.env.js 并将 BASE_API 更改为在函数计算上成功部署的 mall-admin 端点。
在项目根目录下执行如下命令构建前端项目。
npm install
npm run build
运行成功后会生成dist目录。运行项目根目录下的docker.sh脚本生成镜像。
sudo bash docker.sh
运行 docker images 命令,可以看到 mall/mall-admin-web 镜像已经成功生成。将镜像推送到阿里云镜像仓库。
同理,请将以下命令中的 cn-hangzhou 和 quanxi-hryang 修改为自己的镜像仓库区域和命名空间。
sudo docker tag mall/mall-admin-web:1.0-SNAPSHOT registry.cn-hangzhou.aliyuncs.com/quanxi-hryang/mall-admin-web:1.0-SNAPSHOT
sudo docker push registry.cn-hangzhou.aliyuncs.com/quanxi-hryang/mall-admin-web:1.0-SNAPSHOT
修改项目根目录下的s.yaml,和部署mal-admin类似,根据自己的配置调整访问权限和区域,将镜像改成上一步推送成功的镜像地址。
执行s deploy,部署成功后可以看到 mall-admin-web 服务的URL。通过浏览器访问,您将看到登录页面。填写密码macro123查看完整效果。
(注意:登录页面可能会因为第一次冷启动而报超时错误,刷新页面即可,我们稍后会在性能调优文章中优化冷启动性能。)
总结
由于 serverless 平台内置网关,负责路由、实例拉取/运行/容错/自动伸缩等功能,开发者上传应用代码包或镜像后,就已经有了一个弹性高可用的服务。释放。综上所述,只要完成以下5个步骤,Mall应用就完全部署在了功能计算平台上。后续对应用的更新只需要重复第4步和第5步即可。可见Serverless省去了环境配置和运维等重复性工作,大大提高了开发和运维的效率。
Clone项目代码找到VM,运行脚本一键安装MySQL、Redis等依赖软件。修改应用配置中的host项,将值填入步骤2中的VM公网ip,生成应用镜像并推送到阿里云镜像仓库部署和应用到功能计算平台URL汇总
1)春季启动:
2)商城:
3)Serverless Devs 安装文档:
原文链接: