Zuul 的配置
这一篇主要介绍Zuul的配置。为了大家快速上手,主要通过示例来演示如何进行Zuul配置。
说明
配置可以分为几个部分:
-
Zuul自己的配置对应的类是
ZuulProperties
,配置的前缀是zuul
-
自定义的路由配置在代码中对应的是
ZuulProperties
的属性:Map<String, ZuulRoute> routes = new LinkedHashMap<>()
-
routes是一个Map,key代表route名称,value是路由规则配置的详细信息
Ribbon配置信息:主要提供负载均衡、重试、超时等配置。配置类是CommonClientConfigKey,其中要注意配置key是大小写敏感的!
Hytrix配置信息:主要提供熔断策略、超时等配置
路由配置分为两种
- 转发到物理地址
- 转发到服务
转发到物理路径的配置
配置说明
Example - 1 - 最简洁配置
Request URL:http://127.0.0.1:8001/test
Zuul Forward URL:http://127.0.0.1:9000/
Example - 2 - 试验其他配置(sensitiveHeaders & stripPrefix)
Request:
- URL: http://127.0.0.1:8001/test
- Header:
- Test-Sensitive-Header : ThisIsSensitiveHeader
- Test-nomal-Header: ThisIsNomalHeader
Zuul Forward:
- URL:http://127.0.0.1:9000/test
- Header:
- Test-Sensitive-Header - 是敏感Header不转发
- Test-nomal-Header - 进行转发
转发到Service的配置
配置说明
基本配置是和前面提到的转发到物理地址的配置是相同的,不同的是这里增加了Ribbon和Hytrix的相关配置。
匹配路由映射到服务,服务是由服务治理框架提供,如Eureka、Consul。之后通过Ribbon,进行负载均衡,Hytrix负责防护熔断。
所以说Zuul除了路由配置是自身提供的,其余的配置是由Ribbon和Hytrix提供的。
Example - 3 - Ribbon的简单配置
Request URL:http://127.0.0.1:8001/test Zuul Forward URL:http://127.0.0.1:9000/test
Example - 4 - 重试
Request URL:http://127.0.0.1:8001/test
第一步:
- 转发到:http://127.0.0.1:9000/test
- 返回:code: 500
第二步:
- 重试:http://127.0.0.1:9000/test
- 返回:code: 500
第三步和第四步:
- 重试:http://127.0.0.1:9001/test
- 返回:因为9001端口没有启动服务,返回没有连接
至此,本次请求,一共重试了3次。
测试代码:https://github.com/goldpumpkin/learn-demo
总结
Zuul的配置,包括了自己的路由配置、Ribbon配置以及Hytrix配置。其中路由配置分为两种,一种是把请求转发到物理地址,另一种是把请求转发到微服务。要想掌握和配置好Zuul,那么必须学习Ribbon和Hytrix,这样才能很好的驾驭Zuul。
我的个人水平有限,欢迎大家指正,欢迎交流~