微服务项目的整合和测试--简单的商城管理系统(一)

一、微服务项目整合
1.1.1:这个简单的的商城管理系统,其项目整体结构如下图所示:
microservice-mallmanagement:Maven父工程
microservice-eureka-server:用于服务注册发现
microservice-gateway-zuul:用于API网关
microservice-orderservice:用于订单管理服务
microservice-userservice:用于用户管理服务
微服务项目的整合和测试--简单的商城管理系统(一)
在这四个子项目中,microservice-orderservice和microservice-userservice就是我们开发的微服务项目,也是商城管理项目的核心;microservice-eureka-server和microservice-gateway-zuul子项目属于辅助项目。
1.1.2:微服务项目功能介绍
1、microservice-eureka-server(Eureka注册中心)
该子项目使用了spring cloud的组件Eureka,主要用于搭建一个服务注册中心,microservice-gateway-zuul、microservice-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接口方法。
对应的配置文件application.yml的具体内容如下图所示:
微服务项目的整合和测试--简单的商城管理系统(一)
从上图可知,除了配置服务的应用名称、端口以及Eureka注册中心外,还额外增加的Mysql数据库的配置。
该项目对应的控制器类OrderController的具体内容如下图所示:
微服务项目的整合和测试--简单的商城管理系统(一)
从上图看出,该订单管理项目的接口控制器类OrderController中只是简单的定义了一个根据userid查询订单集合的方法,同时该方法还通过@HystrixCommand注解配置了spring cloud的熔断器Hystrix,并编写了回调方法。
4、microservice-userservice(用户管理微服务)
该子项目就是一个使用传统的spring boot框架开发的用户管理微服务项目,主要进行用户管理,并提供有关订单管理的RESTFUL风格的API接口方法。
对应的配置文件application.yml的具体内容如下图所示:
微服务项目的整合和测试--简单的商城管理系统(一)
从上图可知,用户管理微服务的配置和订单管理微服务的配置基本相同。除了服务名称和端口外,只是增加了一个spring cloud组件Ribbon提供的客户端负载均衡常量ORDERSERVICEURL的配置。
该项目对应的控制器类UserController的具体内容如下图所示:
微服务项目的整合和测试--简单的商城管理系统(一)
从上图可知,UserController中只是简单定义了一个根据username查询订单集合的getOrderByUsername()方法。执行方法时,会通过@Value注解使用Ribbon客户端负载均衡的功能引入配置文件中订单微服务的常量值ORDERSERVICEURL,然后在方法中先通过username查询出对应的userid,然后使用RestTamplate的exchange()方法远程调用订单管理微服务接口进行订单集合查询。
1.1.3:微服务项目的启动和测试
1、创建对应的数据库和表,并进行初始化相关数据,具体操作如下:
微服务项目的整合和测试--简单的商城管理系统(一)
微服务项目的整合和测试--简单的商城管理系统(一)
微服务项目的整合和测试--简单的商城管理系统(一)
微服务项目的整合和测试--简单的商城管理系统(一)
成功创建了microservice-mallmanagement的数据库,同时在该数据库中创建了tb_order和tb_user两个表,并插入了一些数据进行初始化。
2、启动所有子项目使用http://localhost:8761即可访问Eureka服务注册中心,具体效果如下图所示:
微服务项目的整合和测试--简单的商城管理系统(一)
从上图可知,所有服务已经全部正常启动,三个子项目已经正确的注册到了Eureka注册中心。
启动成功后,即可对系统的功能进行测试,具体步骤如下:
(1):测试接口方法。分别通过microservice-orderservice和microservice-userservice两个微服务项目的地址来访问各自暴露的API接口方法进行测试,效果如下图所示:
微服务项目的整合和测试--简单的商城管理系统(一)
微服务项目的整合和测试--简单的商城管理系统(一)
以上两种微服务的接口调用方法就是通过调用各自的服务地址和对应的API接口方法进行的测试。
(2):测试API网关服务。针对上面的microservice-orderservice和microservice-userservice两个微服务项目,可以通过Zuul组件提供的API网关进行对应的接口代理测试,效果如下图所示:
微服务项目的整合和测试--简单的商城管理系统(一)
微服务项目的整合和测试--简单的商城管理系统(一)
从上图可知,使用spring cloud的zuul组件实现API网关服务时,只需要访问microservice-gateway-zuul的服务地址并连接其他的微服务映射的路径即可访问其他注册到Eureka注册中心的服务。