四、Zuul-服务网关
a. 简介、功能
Zuul简介
Zuul相当于是第三方调用(app应用端和PC端)和服务提供方之间的防护门。作为前端服务(Edge Service也称边缘服务,前端服务的作用是对后端服务做必要的聚合和裁剪后暴露给外部不同的设备,如PC,Pad或者Phone),Zuul旨在实现动态路由,监控,弹性和安全性。它具备根据需求将请求路由到多个AWS自动弹性伸缩组的能力。
Zuul能做什么
Netflix API流量的量级和多样性随时可能导致生产环境故障而没有预警。因此需要一个系统能使我们迅速改变策略行为,以便应对各种情况。 Zuul使用一些不同类型的过滤器,使我们能够快速灵活地将功能应用于我们的前端服务。这些过滤器具有以下功能:
(1)- 权限控制和安全性–为每个请求提供身份认证,并拒绝不满足条件的请求。
(2)- 预警和监控–跟踪前端有意义的请求和统计数据,以便我们准确了解生产环境运行状况。
(3)- 动态路由–根据需求将请求动态地路由到不同的后端集群。
(4)- 压力测试–逐渐增大到集群的流量,以便进行性能评估。
(5)- 负载均衡–为每种类型的请求分配容量并丢弃超过限额的请求。
(6)- 静态资源处理–直接在Zuul处理静态资源并响应,而并非转发这些请求到内部集群中。
(7)- 多区域弹性–实现跨AWS区域请求路由,扩大了ELB的使用范围,并使前端服务更接近我们的成员
b. 项目使用
1)添加依赖:
<!--添加zuul路由网关 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
2)配置文件信息:
server:
port: 9527
spring:
application:
name: microservicecloud-zuul-gateway
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka
instance:
instance-id: gateway-9527.com
prefer-ip-address: true
info:
app.name: taosun-microservicecloud
company.name: www.taosun.com
build.artifactId: ${project.artifactId}
build.version: ${project.version}
zuul:
prefix: /taosun #访问前缀
ignored-services: "*" #不能使用微服务名访问,只能使用别名
routes:
microservicecloud-dept: /mydept/** #前面为注册的微服务名: 微服务别名,因此可以注册多个微服务名
microservicecloud-feign: /myfeign/** #前面为注册的微服务名: 微服务别名,因此可以注册多个微服务名
3)配置类注解:
4)添加网关过滤器,实现过滤拦截:
currentContext.setSendZuulResponse(false);设置为false时,请求将不会往下进行!
5)启动服务测试:
未设置token信息请求被拦截!
注意!
ignored-services: “*” #不能使用微服务名访问,只能使用别名
此属性表示无法通过服务注册名进行访问!
添加token信息后服务正常返回: