:在之前的文章《SpringBootonFC-架构》中,我们对商城应用架构和Serverless平台进行了基本的介绍。在本文中,我将介绍如何将商城应用程序部署到函数计算平台。本系列连载于Serverless公众号,欢迎订阅查看更多内容。导读:SpringBoot是一个基于JavaSpring框架的套件。它预装了一系列Spring组件,允许开发人员使用很少的配置创建独立的应用程序。在云原生的世界里,可以运行SpringBoot应用的平台有很多,比如虚拟机、容器等,但其中最吸引人的还是以serverless的方式运行SpringBoot应用。通过系列文章,我将从架构、部署、监控、性能、安全五个方面分析在Serverless平台上运行SpringBoot应用的优缺点。为了让分析更具有代表性,我选择了Github上50k以上star的电商应用商城作为例子。在之前的文章《SpringBootonFC-架构》中,我们对商城应用架构和Serverless平台进行了基本的介绍。接下来,我将介绍如何在本文中将商城应用程序部署到函数计算平台。优越的。前提准备阶段:需要有阿里云账号。你需要有一台可以通过公网ip访问的机器,并安装MySQL、Redis等商城应用依赖的软件。需要在运行依赖软件的机器上安装Git、Docker、Java和Maven软件需要安装并配置ServerlessDevs工具注意,如果使用云主机,请先查看主机对应的安全组配置允许入站网络询问。通用主机创建后,严格限制入站方向的网口访问。我们需要手动允许MySQL访问3306端口,Redis访问6379端口等。如下图所示,我手动设置安全组允许所有传入的网络请求。1、部署依赖软件商城应用依赖MySQL、Redis、MongoDB、ElasticSearch、RabbitMQ等软件。这些软件在云端都有相应的云产品。在生产环境中,建议使用云产品以获得更好的性能和可用性。在个人开发或者POC原型演示场景下,我们选择一个VM来容器化部署所有依赖的软件。1.1.克隆代码仓库gitclonehttps://github.com/hryang/mall国内访问github网络不是很好,如果clone太慢,可以使用Gitee地址。gitclonehttps://gitee.com/aliyunfc/ma...1.2。构建并运行Docker镜像在代码根目录下的docker文件夹下,有一个Dockerfile对应每一个依赖的软件。运行代码根目录下的run.sh脚本,所有依赖该软件的Docker镜像都会自动构建并在本地运行。sudobashdocker.sh1.3.验证依赖软件运行状态执行dockerps命令查看依赖软件是否正常运行。sudodockerps部署商城应用2.1。修改商城应用配置修改mall-admin/src/main/resources/application-prod.yml、mall-portal/src/main/resources/application-prod.yml、mall-search/src/main/resources/application-prod.yml3个yaml文件,把里面的host字段改成你第一步安装了MySQL等软件的节点的公网ip。2.2.生成商城应用容器镜像执行maven打包命令生成docker镜像。本地环境为java8或java11。sudo-Emvnpackage成功后,会显示如下成功信息。执行sudodockerimages,你应该可以看到mall/mall-admin、mall/mall-portal、mall/mall-search的1.0-SNAPSHOT镜像。2.3.将镜像推送到阿里云镜像仓库首先登录阿里云镜像仓库控制台,选择个人版实例,根据提示让docker登录阿里云镜像仓库。然后创建命名空间。如下图所示,我们创建了一个名为quanxi-hryang的命名空间。根据前面的步骤,我们已经在本地生成了mall/mall-admin、mall/mall-portal、mall/mall-search的镜像。执行如下命令将mall-admin镜像推送到杭州地区quanxi-hryang命名空间下的镜像仓库。请将以下命令中的cn-hangzhou和quanxi-hryang改为自己的镜像仓库区域和命名空间。商城/商城门户、商城/商城搜索等。sudodockertagmall/mall-admin:1.0-SNAPSHOTregistry.cn-hangzhou.aliyuncs.com/quanxi-hryang/mall-admin:1.0-SNAPSHOTsudodockerpushregistry.cn-hangzhou.aliyuncs.com/quanxi-hryang/商城-admin:1.0-SNAPSHOT2.4。修改ServerlessDevs工具的应用定义我们使用ServerlessDevs工具来定义和部署应用。项目根目录下有s.yaml文件,是ServerlessDevs工具的项目定义文件。这定义了函数计算的资源。如下图所示,我们在函数计算上定义了一个名为mall-admin的服务和其下的一个mall-admin函数。函数中定义了端口、内存大小、超时和运行时间等属性。红框内的内容是你需要根据自己的配置修改的。access是你用sconfig配置的身份,default是default。如果您使用默认设置,则无需更改此处的区域,即您要部署的区域。有cn-杭州、cn-上海、cn-北京、cn-深圳等多种选择。函数使用custom-container运行时,需要指定镜像地址。请将s.yaml中的镜像地址修改为你上一步推送的mall-admin镜像地址。同样,你也需要在s.yaml中更改mall-portal和mall-search的镜像地址。建议:以上镜像地址最好使用registry-vpc.cn-hangzhou.aliyuncs.com/fc-demo/mall-admin:1.0-SNAPSHOT。2.5.将商城应用部署到函数计算平台,执行sdeploy命令,部署成功,会看到对应的访问地址。在浏览器中输入生成的URL,如果显示“未登录或token已过期”,则表示服务部署成功。注意:Serverless的特点是请求到达后系统默认创建一个实例,所以第一次启动时间比较长,称为冷启动。商城应用程序启动通常需要大约30秒。我们会在后面的性能调优文章中回顾这个问题,使用一系列的手段进行优化。访问对应的swaggerapi调试页面host/swagger-ui.html,调试相关后端API。2.6.查看应用日志我们在s.yaml中为每个服务设置了logConfig:auto,也就是说serverless-devs工具会自动为该服务创建一个日志库(LogStore),所有服务共享一个日志库。应用的所有日志都输出到.可以使用slogs命令查看某个时间点所有服务的日志;也可以使用small-adminlogs查看mall-admin功能的日志;也可以使用small-adminlogs-t以followmodeLaterlogs实时显示当前时间点;您还可以使用small-adminlogs--keyword=abc查看包含关键字abc的日志。s日志对于您了解服务的运行方式和诊断问题非常有用。比如我们执行small-adminlogs-t进入如下模式,然后在浏览器中访问mall-admin服务的端点,就可以看到整个应用的启动和请求处理日志。2.7.部署商城前端项目(可选)商城也提供了前端接口,基于Vue+Element实现。主要包括商品管理、订单管理、会员管理、推广管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等功能。这个项目也可以在函数计算上无缝运行。首先在你的机器上安装nodejs12和npm,并下载项目源码。gitclonehttps://github.com/hryang/mal...国内访问github网络不是很好,如果clone太慢,可以使用下面的代理地址。gitclonehttps://gitee.com/aliyunfc/ma...注意:必须是nodejs12或者14,太新的node版本会编译不通过!修改config/prod.env.js,将BASE_API修改为函数计算上部署成功的mall-adminendpoint。在项目根目录下执行以下命令构建前端项目。npminstallnpmrunbuild运行成功后,会生成一个dist目录。运行项目根目录下的docker.sh脚本生成镜像。sudobashdocker.sh运行dockerimages命令,你会看到mall/mall-admin-web镜像已经成功生成。将镜像推送到阿里云镜像仓库。同样,请将以下命令中的cn-hangzhou和quanxi-hryang修改为自己的镜像仓库区域和命名空间。sudodockertagmall/mall-admin-web:1.0-SNAPSHOTregistry.cn-hangzhou.aliyuncs.com/quanxi-hryang/mall-admin-web:1.0-SNAPSHOTsudodockerpushregistry.cn-hangzhou.aliyuncs.com/quanxi-hryang/mall-admin-web:1.0-SNAPSHOT修改项目根目录下的s.yaml,和部署mall-admin类似,根据自己的配置调整权限和区域,图片改成图片地址在上一步中成功推送。执行sdeploy,部署成功后可以看到mall-admin-web服务的url。通过浏览器访问,您将看到登录页面。填写密码macro123以查看完整效果。注意:第一次由于冷启动,登录页面可能会报超时错误。再次刷新页面即可。我们会在后续的性能调优文章中优化冷启动性能。小结由于Serverless平台内置了负责路由、实例启动/运行/容错/自动扩缩容的网关,开发者在上传应用代码包或图片后发布了一个弹性高可用的服务。综上所述,只要完成以下5个步骤,商城应用就完全部署在了函数计算平台上。后续更新应用只需要重复步骤4和5即可。可见Serverless省去了环境配置、运维等重复性工作,大大提高了开发和运维的效率。Clone项目代码找到一个VM,运行脚本一键安装MySQL、Redis等依赖软件。修改应用配置中的host项,填写值为步骤2中的VM公网ip生成应用镜像,推送到阿里云镜像仓库部署应用到函数计算平台原文链接本文为原创阿里云内容,未经许可不得转载。
