本节主要介绍新蜂商城微服务版本的源代码下载和项目启动,包括准备基础环境、安装和配置微服务组件、下载源代码、介绍源代码的目录结构、准备数据库、配置项目启动和注意事项,让读者能够顺利启动最终的微服务架构项目并进行个性化修改。
把JDK、Maven、IDEA、Lombok、MySQL、Redis这类基础环境都安装和配置完成,以便进行后续的项目启动工作。
目前已经集成和改造的微服务组件整理如下。
(1)微服务框架——Spring Cloud Alibaba。
(2)服务中心——Nacos。
(3)通信服务——OpenFeign。
(4)网关服务——Spring Cloud Gateway。
(5)负载均衡器——LoadBalancer。
(6)分布式事务处理——Seata。
(7)流控组件——Sentinel。
(8)链路追踪——Sleuth+Zipkin。
(9)日志中心——ElasticSearch+Logstash+Kibana。
对这些微服务组件,读者应该都不陌生,在启动项目前,依次参考对应章节中的讲解完成组件的搭建和启动即可。
在部署项目之前,需要把项目的源代码下载到本地,最终的微服务架构项目在GitHub和Gitee平台上都创建了代码仓库。由于国内访问GitHub网站的速度可能缓慢,因此笔者在 Gitee 上创建了一个同名的代码仓库,两个代码仓库会保持同步更新,它们的网址分别如下:
读者可以直接在浏览器中输入上述链接到对应的代码仓库中查看源代码及相关文件。
1.使用clone命令下载源代码
如果在本地计算机中安装了 Git 环境,就可以直接在命令行中使用 clone 命令把代码仓库中的文件全部下载到本地。
通过GitHub下载源代码,执行如下命令:
通过Gitee下载源代码,执行如下命令:
打开cmd命令行,切换到对应的目录。比如,下载到D盘的java-dev目录,先执行cd命令切换到该目录下,再执行clone命令。
等待文件下载,全部下载完成后就能够在java-dev目录下看到新蜂商城项目微服务版的所有源代码了。
2.通过开源网站下载源代码
除通过命令行下载外,读者也可以选择更直接的下载方式。GitHub和Gitee两个开源平台都提供了对应的下载功能,读者可以在代码仓库中直接单击对应的“下载”按钮进行源代码下载。
在GitHub网站上直接下载源代码,需要进入newbee-mall-cloud在GitHub网站中的代码仓库主页。
在newbee-mall-cloud代码仓库页面上有一个带有下载图标的绿色“Code”按钮,单击该按钮,再单击“Download Zip”按钮就可以下载newbee-mall-cloud源代码的压缩包文件,下载完成后解压,导入IDEA或Eclipse编辑器进行开发或修改。
在 Gitee 网站上下载源代码更快一些。在 Gitee 网站上直接下载源代码,需要进入newbee-mall-cloud在Gitee网站上的代码仓库页面,在代码仓库页面上有一个“克隆/下载”按钮,单击该按钮,再单击“下载Zip”按钮。在Gitee网站上下载源代码多了一步验证操作,单击“下载 Zip”按钮后会跳转到验证页面,输入正确的验证码就可以下载源代码的压缩包文件,下载完成后解压缩,导入IDEA或Eclipse编辑器进行开发或修改。
3.通过本书提供的源代码地址下载源代码
除在开源网站中下载完整的源代码外,本书还提供了对应章节的源代码,按照笔者提供的下载地址就可以进行源代码的下载。
下载源代码并解压缩后,在代码编辑器中打开项目,这是一个标准的Maven多模块项目。笔者使用的开发工具是IDEA,导入之后newbee-mall-cloud源代码的目录结构如图1-5所示。
图1-5 newbee-mall-cloud源代码的目录结构
下面介绍一下目录的内容和作用,整理如下。
以上是项目结构的整体概览,具体到某一个Maven模块中,有些内容依然需要讲解。笔者以 newbee-mall-cloud-gateway-mall 模块和 newbee-mall-cloud-goods-service 模块为例,介绍子模块中的详细目录结构。
图1-6是商城端的网关服务的目录结构,这是一个标准的Maven项目。
图1-6 商城端的网关服务的目录结构
在newbee-mall-cloud-gateway-mall模块中,代码目录的内容和作用整理如下。
图1-7是商品微服务的目录结构,这也是一个多模块的Maven项目,包括三个Maven配置文件,分别是商品微服务的主配置文件,以及api和web两个子配置文件。当然,这三个Maven配置文件都依赖root节点的Maven配置文件。
图1-7 商品微服务的目录结构
在newbee-mall-cloud-goods-service模块中,代码目录的内容和作用整理如下。
除基本目录中的源代码外,笔者在 static-files 目录中也上传了数据库文件和与本项目相关的一些图片文件。
下面讲解微服务架构项目的启动和启动前的准备工作。
1.数据库准备
在最终的微服务架构项目中,共有五个微服务需要连接 MySQL 数据库,分别是用户微服务、购物车微服务、商品微服务、订单微服务和推荐微服务。因此,需要分别创建五个数据库,并导入对应的建表语句。
打开MySQL软件,新建五个数据库,SQL语句如下:
当然,读者在实际操作时也可以使用其他数据库名称,如自行定义的数据库名称。在数据库创建完成后就可以将五份数据库建表语句和初始化数据文件导入各个数据库,导入成功后可以看到数据库的表结构,如图1-8所示。
图1-8 newbee-mall-cloud项目所需的数据库表结构
这五个数据库可以在不同的 MySQL 实例中,如果只是测试,则可以放在同一个MySQL实例中,读者可以自行决定。
2.修改数据库连接配置
数据库准备完毕,接下来修改数据库连接配置。分别在newbee-mall-cloud-goods-web模块、newbee-mall-cloud-order-web 模块、newbee-mall-cloud-recommend-web 模块、newbee-mall-cloud-shop-cart-web模块、newbee-mall-cloud-user-web模块中打开resources目录下的application.properties配置文件,修改数据库连接的相关信息。代码中默认的数据库配置如下。
需要修改的配置如下。
(1)数据库地址和数据库名称为localhost:3306/newbee_mall_cloud_goods_db。
(2)数据库登录账户名称为root。
(3)账户密码为123456。
根据开发人员所安装的数据库地址和账号信息进行修改。这五个微服务的配置文件中都有数据库连接的默认配置,如果与默认配置文件中的数据库名称不同,则需要将数据库连接中的数据库名称进行修改。数据库地址、登录账户名称、账户密码也需要修改为开发人员自己的配置内容。
3.修改Nacos连接配置
分别在 newbee-mall-cloud-gateway-admin 模块、newbee-mall-cloud-gateway-mall 模块、newbee-mall-cloud-goods-web模块、newbee-mall-cloud-order-web模块、newbee-mall-cloud-recommend-web模块、newbee-mall-cloud-shop-cart-web模块和newbee-mall-cloud-user-web 模块中打开 resources 目录下的 application.properties 配置文件,修改服务中心Nacos连接的相关信息。代码中默认的Nacos配置如下。
需要修改的配置如下。
(1)Nacos连接地址。
(2)Nacos登录用户名。
(3)Nacos登录密码。
根据开发人员所安装和配置的Nacos组件进行修改。这七个微服务的配置文件中都有服务中心连接的默认配置,如果与默认配置文件中的内容不同,则需要自行修改。当然,这七个微服务的配置文件中的Nacos配置都是一致的,所有服务都必须注册到同一个服务中心。
4.修改Redis连接配置
分别在 newbee-mall-cloud-gateway-admin 模块、newbee-mall-cloud-gateway-mall 模块和newbee-mall-cloud-user-web模块中打开resources目录下的application.properties配置文件,修改Redis连接的相关信息。代码中默认的Redis配置如下。
需要修改的配置如下。
(1)Redis服务器连接地址。
(2)Redis服务器连接端口。
(3)Redis服务器连接密码。
根据开发人员所安装和配置的 Redis数据库进行修改。项目中只有这三个模块使用Redis,主要用于同步用户的登录信息和用户鉴权操作。三个模块的配置文件中都有Redis连接的默认配置,如果与默认配置文件中的内容不同,则需要自行修改。当然,这三个模块的配置文件中的Redis配置都是一致的,连接的是相同的Redis实例和相同的数据库。
5.启动所有的微服务实例
做完以上工作后,就可以启动整个项目了,过程如图1-9所示。
依次启动 NewBeeMallCloudGoodsServiceApplication 类、NewBeeMallCloudOrder ServiceApplication类、NewBeeMallCloudRecommendServiceApplication类、NewBeeMall CloudShopCartServiceApplication 类、NewBeeMallCloudUserServiceApplication 类、New BeeMallCloudMallGatewayApplication类、NewBeeMallCloudAdminGatewayApplication类,共七个微服务实例。其中,前五个类分别是商品微服务、订单微服务、推荐微服务、购物车微服务、用户微服务的启动主类,剩下的两个类是网关服务的启动主类。
之后,耐心等待所有实例启动即可。笔者选择的是通过运行main()方法的方式启动Spring Boot项目,读者也可以选择其他方式。
如果未能成功启动,则需要查看控制台中的日志是否报错,并及时确认问题和修复。启动成功后进入Nacos控制台,单击“服务管理”→“服务列表”选项,可以看到列表中已经存在这七个微服务的服务信息,如图1-10所示。
至此,微服务实例的启动及微服务实例的注册就完成了。
图1-9 微服务实例启动过程
图1-10 newbee-mall-cloud项目中的所有微服务实例都完成了注册
6.简单的功能验证
尽管微服务架构项目实战的启动和各微服务实例的注册都已经完成了,但是为了确认项目运行正常,还需要进行一些简单的验证。
因为各个微服务实例中的接口都使用Swagger接口文档工具,所以读者可以通过访问各个微服务实例的Swagger接口文档进行简单的测试。除微服务实例外,在网关服务层也做了Swagger文档的整合,方便开发人员做接口测试。各个微服务实例的接口文档网址见表1-3。
表1-3 各个微服务实例的接口文档网址
如果读者在启动时修改了项目的启动端口号,那么访问网址也需要进行对应的修改。有了Swagger接口文档工具,测试起来就方便多了,读者可以依次测试各个微服务实例的接口是否正常。
笔者在本小节的功能验证中,简单地测试一下首页接口是否正常,在地址栏中依次输入如下网址进行测试。
(1)推荐微服务:http://localhost:29020/swagger-ui/index.html。
(2)商城端的网关服务:http://localhost:29110/swagger-ui/index.html。
推荐微服务的Swagger接口文档页面如图1-11所示。
图1-11 推荐微服务的Swagger接口文档页面
单击“新蜂商城首页接口”选项卡,可以看到“获取首页数据”的接口。打开该接口描述,单击页面中的“Try it out”按钮(单击后变为“Cancel”按钮)发送测试请求,之后单击页面上的“Execute”按钮,接口响应结果如图1-12所示。
图1-12 新蜂商城首页接口测试过程
测试通过!
接下来通过网关服务来访问首页接口。在一般情况下,微服务实例中的接口是不会对外暴露的,想要获取对应的数据,可以直接访问网关服务,由网关服务进行请求的转发和处理。
商城端的网关服务的Swagger接口文档页面如图1-13所示。
由于网关服务层是没有任何接口的,因此只能做下游微服务实例的Swagger接口文档聚合。单击页面右上方的“Select a definition”下拉列表框中的下拉按钮,选择“recommend-service-swagger-route”选项就能够看到推荐微服务的Swagger接口文档了。当然,通过网关服务访问与直接访问URL是不同的,通过网关服务实例的Swagger接口文档页面访问,由网关服务做一次转发。“获取首页数据”的接口访问结果如图1-14所示。
图1-13 商城端的网关服务的Swagger接口文档页面
图1-14 通过网关服务发起对新蜂商城首页接口测试
接口响应正常,结果与直接访问推荐微服务时的结果一样。读者在测试时需要注意,直接访问与通过网关服务访问,请求的 URL 是不同的,虽然结果相同,但是两种请求方式有着本质的区别。
对应到实际的项目页面中,是新蜂商城项目的首页,获取首页接口数据后的显示效果如图1-15所示。
图1-15 新蜂商城首页的显示效果图