通过关键词采集文章采集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 安装文档:

  原文链接:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线