spring-cloud-Zuul学习(二)【基础篇】--典型配置【重新定义spring cloud实践】
-- 2019-04-15 20:22:34
- 引言
上一节是一个最基本的zuul网关实例,它是整个spring-cloud生态里面“路由-服务”的一个缩影,后续也就是锦上添花。这节主要讲述zuul的一些基本典型配置,包括路由与一些增强配置。
- 路由配置
zuul作为微服务的“路由器”,有很多的路由功能:
- 路由配置简化与规则
前面单实例serviceId映射:
zuul: routes: client-a: path: /client/** serviceId: client-a
是从/client/**到client-a服务的映射规则,其实还有其他的方式配置:
zuul: routes: client-a: /client/**
还有:
1 zuul: 2 routes: 3 client-a:
这种情况会默认添加规则/client-a/**,相当于:
1 zuul: 2 routes: 3 client-a: 4 path: /client-a/** 5 serviceId: client-a
- 单实例url映射
除了写服务名,还可以写物理地址,将serviceId替换成url即可:
1 zuul: 2 routes: 3 client-a: 4 path: /client/** 5 url: http:localhost:7070 #client-a的地址
- 多实例路由
在默认情况下,Zuul会使用Eureka中集成的基本负载均衡功能(策略好像是随机),如果想要使用Ribbon的负载均衡功能,就需要指定一个serviceId,而且需要禁用Ribbon使用Eureka,在E版之后新增了负载均衡策略的配置:
1 spring: 2 application: 3 name: zuul-server 4 server: 5 port: 5555 6 7 #---------其他路由写法 8 zuul: 9 routes: 10 client-a: /client/** 11 12 client-a: 13 ribbon: 14 NIWSServerListClassName: com.netflix.loadbalancer.ConfigurationBasedServerList 15 listOfServers: http://localhost:7070,http://localhost:7071 #ribbon脱离eureka的使用,这里指定源服务列表 16 NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #声明策略模式为随机 17 eager-load: 18 clients: 19 enabled: #使用配置的方式对特定的源服务进行策略约束【规则:clientName.ribbon.*】 20 ribbon: 21 eureka: 22 enabled: false #禁用eureka
- 路由通配符规则
规则 | 释义 | 示例 |
/** | 匹配任意数量的路径与字符 |
client/add,/client/student/add, /client/a/b |
/* | 匹配任意数量的字符 | /client/add,/client/mul |
/? | 匹配单个字符 | /client/a,/client/b |