定制的路由规则的主要功能:
1、路由表中包含源路径,微服务名称,目标路径
2、Endpoint粒度配置支持
3、路由支持1对1精确路由
4、源路径可以前缀/**格式来模糊路由
5、目标路径可以使用前缀/**格式来装配目标路径
6、保留默认动态路由规则:服务名称/** --> 是否截去前缀 --> 目标路径
7、保留默认动态路由规则是否支持截去前缀的配置参数stripPrefix特性
8、路由规则可以在不重启服务动态更新,这个功能通过外化配置来支持
9、匹配股则采取谁先匹配路由谁,也就是说在路由表中有2个或以上的路由规则可能被匹配到时,匹配最先查询到的规则
路由规则格式采用properties格式:
源路径 = 微服务名称, 目标路径
启动时读取配置并解析,放入路由表。请求时通过查询匹配到合适的路由转发。
例如:
/api/v1/trade=trade,/v1/trade /api/customer/**=customer,/api/v1/** /api/user/**=user
在上面的例子中:
- /api/v1/trade会精确的路由到trade微服务的/v1/trade;
- /api/customer/开头的api会路由转发到customer微服务的/api/v1/**,其中后面的**会被前面的**部分替换,比如/api/customer/card->/api/v1/card的转换
- /api/user/开头的api会路由转发到user微服务的/api/user/**,endppoint不变
一、直观显示路径到微服务的映射
#localhost:8888/routes(Zuul对应的IP及端口) management: security: enabled: false
二、路由配置
1、静态路由
#除了“users”服务,其他的服务都会被忽略 zuul: ignoredServices: ‘*‘ routes: users: /myusers/** #前端通过/myusers的http访问,将会被后端“users”服务处理(例如:/myusers/101将会转发的/101) zuul: routes: users: /myusers/** #将xxx/books后面的所有请求,添加到url后面去 示例:http://localhost:8888/books/xxx->http://localhost:5000/books/avaiable/xxx zuul: routes: books: http://localhost:5000/books/available #books/xxx=>转化为http://localhost:5000/books/available/xxx 示例:http://localhost:8888/books/xxx==>http://localhost:50000/books/available/xxx server: port: 8888 spring: application: name: zuul-gateway zuul: routes: books: url: http://localhost:5000/books/available #/baidu后的所有直接添加到http://localhost:8080后 示例:http://localhost:8888/baidu/**=>http://localhost:8080/** zuul: routes: baidu: path: /baidu/** url: http://localhost:8080
时间: 2024-12-18 00:32:30