目标:使用Spring Cloud Zuul建立服务网关
开发环境:IntelliJ IDEA
操作步骤:基础环境配置->Zuul组件配置->应用参数配置->客户端微服务编写->应用运行测试(Eureka/Zuul/Client)
1.基础环境配置
与Eureka组件类似,新建一个项目Spring_Cloud_Zuul,配置参考博客:
https://blog.csdn.net/xingyuzhe/article/details/79907748
2.Zuul组件配置
API网关在应用系统中的作用为统一处理外部客户端访问,实现请求路由、负载均衡、校验过滤等功能。
Spring Cloud Zuul是基于Netflix Zuul实现的API网关组件,通过与服务注册中心Eureka组件协作,解决了服务实例维护的问题。
Netflix Zuul项目地址:https://github.com/Netflix/zuul
Zuul组件核心功能:
(1)Zuul、Ribbon以及Eureka相结合,可以实现智能路由和负载均衡的功能,Zuul能够将请求流量按某种策略分发到集群状态的多个服务实例。
(2)网关将所有服务的API接口统一聚合,并统一对外暴露。外界系统调用API接口时,都是由网关对外暴露的API接口。保护内部微服务单元的API接口。
(3)网关服务可以做用户身份认证和权限认证,防止非法请求操作API接口,对服务器起到保护作用。
(4)网关可以实现监控功能,实时日志输出,对请求进行记录。
(5)网关可以用来实现流量监控,在高流量的情况下对服务进行降级。
(6)API接口从内部服务分离出来,方便做测试。
网关实现基于HTTP协议,并分为多个过滤器:
开发流程:
(1)新建Module工程-CaaS_Zuul_Gateway
项目结构:
(2)添加依赖配置
添加Eureka Client组件支持,功能为将自身作为一个应用注册到服务注册中心:
添加Zuul组件支持,提供网关服务:
添加Spring Boot的web功能以及测试功能:
添加Maven插件支持:
(3)编写Module项目主程序
@EnableEurekaClient注解开启EurekaClient的功能
@EnableZuulProxy注解开启Zuul的功能
3.应用参数配置
路由配置在application.yml中实现
4.客户端微服务编写
为测试网关功能,需编写客户端微服务,其中包含简单接口调用。
开发流程:
(1)新建一个Module工程-CaaS_Zuul_Client
(2)添加配置依赖
添加eureka客户端以及spring boot配置依赖
添加maven插件依赖
(3)编写Module项目主程序
@EnableEurekaClient注解开启注册服务功能
(4)编写Module项目控制器
新建EurekaClientController.java
(5)编写应用运行配置文件
编写application.yml
5.应用运行测试(Eureka/Zuul/Client)
应用运行测试过程启用4个微服务:服务注册中心Eureka、两个Client服务、服务网关Zuul
其中两个客户端服务使用不同端口号:
java -jar xx.jar --server.port=8762
java -jar xx.jar --server.port=8763
查看服务注册中心:网关服务和客户端服务已经注册成功
通过网关调用客户端服务接口:http://localhost:5000/zuulclientapi/hello?name=caoxin
刷新页面:自动完成负载均衡