Zuul —— SpringCloud
Posted 观沧听白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zuul —— SpringCloud相关的知识,希望对你有一定的参考价值。
什么是Zuul?
Zuul是Netflix开源的微服务网关。
Zuul可以和Eureka、Ribbon、Hystrix等组件配合使用。
Zuul的核心是一系列的过滤器,可以完成以下功能。
身份认证和安全:识别每个资源的验证请求,并拒绝那些与要求不符的请求。
审查与监控:在边缘位置追踪有意义的数据和统计结果,从而带来精确的生产视图。
动态路由:动态地将请求路由到不同的后端集群。
压力测试:逐渐增加指向集群的流量,以了解性能。
负载分配:为每一种负载类型分配对应容量,并弃用超出限定值的请求。
静态响应处理:在边缘位置直接建立部分响应,从而避免其转发到内部集群。
多区域弹性:跨越AWS Region进行请求路由,意图在实现ELB使用的多样化,以及让系统的边缘更加贴近系统的使用者。
SpringCloud对Zuul进行了整合和增强。
目前,Zuul使用的默认HTTP客户端是Apache Http Client,也可以使用RestClient或者okhttp3.0HttpClient。
如果想要使用RestClient,可以设置 ribbon.restclient.enable=true
想要使用okhttp3.0HttpClient,可以设置 ribbon.okhttp.enable=tue
初步使用Zuul
编写配置
server: port: 10010 #服务端口 spring: application: name: api-gateway #指定服务名
编写引导类
通过 @EnableZuulProxy 注解开启Zuul功能。
@SpringBootApplication @EnableZuulProxy // 开启网关功能 public class ItcastZuulApplication { public static void main(String[] args) { SpringApplication.run(ItcastZuulApplication.class, args); } }
编写路由规则
映射规则:
server: port: 10010 #服务端口 spring: application: name: api-gateway #指定服务名 zuul: routes: service-provider: # 这里是路由id,随意写 path: /service-provider/** # 这里是映射路径 url: http://127.0.0.1:8081 # 映射路径对应的实际url地址
负载均衡和熔断
Zuul中默认就已经继承了Ribbon负载均衡和Hystrix熔断机制。但是所有的超时策略都是默认值。
比如,熔断超时时间只有1s,很容易就被触发了,所以建议手动配置:
hystrix: command: default: execution: isolation: thread: timeoutInMilliseconds: 2000 # 设置hystrix的超时时间为6000ms
以上是关于Zuul —— SpringCloud的主要内容,如果未能解决你的问题,请参考以下文章