微服务项目的整合与测试---商城管理系统

1.1 微服务项目整合
商城微服务项目在GitHub可以进行下载查看,其具体地址为https://github.com/shi469391tou/microservice-mallmanagement
1.1.1 微服务项目结构预览
本项目模拟的是一个简单的商城管理系统,其项目整体结构如下图所示:
在这里插入图片描述
从上图可以看出,本项目通过一个名为microservice_mallmanagement的Maven父项目构建了四个子项目,关于这四个子项目的描述具体如下。
—microservice-eureka-server:用于服务注册发现。
—microservice-gateway-zuul:用于API网关。
—microservice-oderservice:用于订单管理服务。
—microservice-userservice:用于用户管理服务。
1.1.2 微服务项目功能介绍
1.microservice-eureka-server(Eureka注册中心)
该子项目使用了Spring Cloud的组件Eureka,主要用于搭建一个服务注册中心,microservice-gateway-zuul、mocroservice-orderservice和microservice-userservice都将通过配置注册到该注册中心。
其对应的配置文件application.yml的具体内容,如下图所示:
在这里插入图片描述
在上述配置文件中配置了应用名称和服务端口,同时通过Eureka的相关配置指定了Eureka注册中心的地址为http://localhost:${server.port}/eureka/(即http://localhost:8761/eureka/),当部署到测试或线上环境时,需要根据上面注释中的提示信息进行地址更改。
2.microservice-gateway-zuul(Zuul API网关)
该子项目使用了Spring Cloud的组件Zuul,主要作为其他微服务项目的API网关,来实现其他微服务接口的动态管理。microservice-orderservice和microservice-userservice微服务都可以使用Zuul网关服务进行代理请求。
其对应的配置文件application.yml的具体内容如下:
在这里插入图片描述
在这里插入图片描述
再上述文件中同样先配置了应用名称和服务端口,同时通过Eureka的相关配置将该API网关服务注册到了Eureka注册中心(这里需要注意当部署到测试或线上环境时,需要根据上面注释中的提示信息进行注册地址修改)。最后部分实现了Zuul的相关配置,分别配置了serviceId为user-service和order-service的两个应用的路径映射。
3.microservice-orderservice(订单管理微服务)
该子项目就是一个使用传统的Spring Boot框架开发的订单管理微服务项目,主要用于进行商城订单管理,并提供有关订单管理的RESTFUL风格的API接口方法。
其对应的配置文件如下图所示:
在这里插入图片描述
在这里插入图片描述
在上述配置文件中,配置了服务的应用名称、端口、Eureka注册中心以及MySql数据库。
该项目对应的控制器类OrderController的具体内容如下:
在这里插入图片描述
该订单管理项目的接口控制器类OrderController中只是简单地定义了一个根据userid查询订单集合的方法,同时该方法还通过@HystrixCommand注解配置了Spring Cloud的熔断器Hystrix,并编写了回调方法。
4.microservice-userservice(用户管理微服务)
该子项目也是一个传统的Spring Boot框架开发的用户管理微服务项目,主要用于进行商城用户管理,并提供有关用户管理的RESTFUL风格的API接口方法。
其对应的配置文件application.yml的具体内容如下:
在这里插入图片描述
在这里插入图片描述
上述配置文件与订单管理微服务的配置基本相同。除了服务名称和端口外只是增加了一个Spring Cloud组件Ribbon提供的客户端负载均衡常量ORDERSERVICEURL的配置(原本是订单服务的ip+端口号)。
该项目对应的控制器类UserController的具体内容,如下图所示:
在这里插入图片描述
从上述文件可以看出,UserController中也只是简单的定义了一个根据username查询订单集合的getOrderByUsername()方法。执行方法时,会通过@Value注解使用Ribbon客户端负载均衡的功能引入配置文件中订单微服务的常量值ORDERSERVICEURL,然后在方法中先通过username查询出对应的userid,然后使用RestTemplate的exchange()方法远程调用订单管理微服务接口进行订单集合查询。
RestTemplate的exchange()方法用于远程调用其他RESTFUL接口方法,并返回指定的对象集合。其方法的四个参数分别表示请求地址、请求方式、请求参数实体以及返回结果对象。
至此,商城管理系统的整体结构和子项目功能及主要配置已经完成。

1.1.3 微服务项目的启动和测试
先启动注册服务中心microservice-eureka-server然后再启动网关服务,订单管理服务和用户管理服务。
由于microservice-orderservice(订单微服务)和microservice-userservice(用户微服务)都需要后台数据作为支撑,所以在启动项目之前先创建数据库,我直接在cmd命令行中用SQL语句进行创建数据库和表,执行过程如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在上述过程中创建了一个名为microservice_mallmanagement的数据库,同时在该数据库中分别创建tb_order和tb_user表,并插入了一些初始化数据。
完成数据库的创建和全部项目的启动并运行成功后,通过地址http://localhost:8761/,即可访问Eureka服务注册中心,效果如下图所示:
在这里插入图片描述
从上图可以看出,所有服务均已正常启动,并且其他的三个子项目都已正确注册到了Eureka注册中心。
启动成功后,即可对系统的功能进行测试,具体执行步骤如下:
(1)测试接口方法。
分别通过microservice-orderservice和microservice-userservice两个微服务项目的地址来访问各自暴露的API接口方法(分别为http://localhost:7900/order/findOrders/1和http://localhost:8030/user/findOrders/shitou)进行测试,效果分别如下图所示:
在这里插入图片描述
在这里插入图片描述
以上两种微服务的接口调用方法是通过调用各自的服务地址和对应的API接口方法进行的测试。
(2)测试API网关服务。
针对上面的microservice-orderservice和microservice-userservice两个微服务项目,可以通过Zuul组件提供的API网关进行对应的接口代理测试(代理访问地址分别为http://localhost:8050/order-service/order/findOrders/1和http://localhost:8050/user-service/user/findOrders/shitou),效果如下图所示。
在这里插入图片描述
在这里插入图片描述 从上图的访问地址和显示结果可以看出,使用Spring Cloud的Zuul组件实现API网关服务时,只需要访问microservice-gateway-zuul的服务地址并连接其他微服务映射的路径即可访问其他注册到Eureka注册中心的服务。 注意:我在数据库中插入数据时有插入“北京”的字符串,但查询结果中并为显示,原因是不支持中文编码可以在创建数据库时加一条命令 #create database 数据库名 default character set utf8 collate utf8_general_ci;