万丈高楼平地起。
接下来,笔者进行微服务架构项目第一个步骤的编码:新建一个文件夹,把项目的基础骨架搭建出来。
由于已经构建过Spring Cloud Alibaba整合服务治理后的多模块模板项目,因此这里直接使用spring-cloud-alibaba-multi-service-demo进行简单的改造即可。
先把项目名称修改为newbee-mall-cloud-dev-step01,再将order-service-demo修改为newbee-mall-cloud-gateway-admin、将 shopcart-service-demo 修改为 newbee-mall-cloud-user-service,并删除goods-service-demo模块(本开发步骤中只需要两个Maven模块),然后删除newbee-mall-cloud-gateway-admin项目和newbee-mall-cloud-user-service项目中已存在的包和代码,只保留项目中基础的Maven目录结构。
下面整理项目中的依赖项和依赖关系。
修改root节点的pom.xml配置文件,代码如下:
主要工作是配置项目的名称和模块的依赖关系,同时管理和配置 Spring Cloud Alibaba基础依赖、微服务发现依赖和网关依赖。
子节点newbee-mall-cloud-gateway-admin的pom.xml配置代码如下:
这是一个网关微服务,主要引入Spring Cloud Gateway依赖、微服务发现依赖和负载均衡依赖。
子节点newbee-mall-cloud-user-service的pom.xml配置代码如下:
这是整个实战项目中的用户微服务,主要引入微服务发现依赖和We b开发依赖。因为这是开发的第一个步骤,所以主要测试基础功能和代码,后续会引入MyBatis、MySQL、Swagger等实际开发时的依赖。
以上操作主要保证基础目录搭建成功、微服务注册成功、网关层能够正常与微服务实例通信,并且项目中没有代码报错。以上操作顺利完成后,再往项目中加入业务代码。不急,一步一步来。
1.newbee-mall-cloud-user-service项目编码
打开newbee-mall-cloud-user-service项目,新建ltd.user.cloud.newbee包。之后创建启动类NewBeeMallCloudUserServiceApplication,代码如下:
新建 ltd.user.cloud.newbee.controller 包,在该包下新建 NewBeeMallCloudAdmin UserController类,并添加一个测试接口,代码如下:
修改该项目的配置文件,application.properties文件代码如下:
这里主要配置微服务名称、启动端口号,修改服务中心的相关配置项。
2.newbee-mall-cloud-gateway-admin项目编码
打开 newbee-mall-cloud-gateway-admin项目,并新建 ltd.gateway.cloud.newbee包。之后创建启动类NewBeeMallCloudAdminGatewayApplication,代码如下:
修改该项目的配置文件,application.properties文件中的配置项如下:
这里主要配置微服务名称、启动端口号、路由,修改服务中心的相关配置项。
上述操作完成后,项目的目录结构如图2-1所示。
3.效果演示
接下来需要启动Nacos Server,之后依次启动这两个项目。如果未能成功启动,那么开发者需要查看控制台中的日志是否报错,并及时确认问题和修复。启动成功后进入Nacos 控制台,单击“服务管理”中的服务列表,就可以看到列表中已经存在这两个微服务的信息了。
打开浏览器并在地址栏中输入如下网址:http://localhost:29000/users/admin/test/13。
响应结果如图2-2所示。
图2-1 项目的目录结构
图2-2 响应结果
验证网关层与用户微服务是否能够正常通信。打开浏览器并在地址栏中输入如下网址:http://localhost:29100/users/admin/test/13。
响应结果如图2-3所示。
图2-3 通过网关层访问的响应结果
希望读者能够根据笔者提供的开发步骤顺利地完成开发工作。
万事开头难。这句话对newbee-mall-cloud实战项目的开发同样适用。凭空开发一个微服务架构项目,对大部分开发人员来说都会有一定的难度,笔者刚开始做这个实战项目教程的时候同样有些束手束脚,会遇到如“先做哪一步呢?”“先引入哪个组件呢?”“先改造哪个微服务呢?”“先配置什么东西呢?”之类的问题。
在开发前期肯定要保证项目结构、依赖关系都配置正确。同时,要保证微服务实例能够正常注册到服务中心,服务接口能够正常调用。当然,这里也加了网关模块,没有选择在开发后期引入网关服务,主要是为了在保证服务正常通信的同时,网关模块能够正常使用。虽然只是短短的一节内容,但是涉及的知识点是非常多的,如Spring Cloud Alibaba依赖配置、微服务实例与服务中心Nacos的通信、网关服务Spring Cloud Gateway的配置等。