使用SpringCloudGateway的重要功能 – 权重路由
由于后端的服务器有时候性能不同,或者是由于需要灰度发布,需要上线一部分新版本的服务
注:灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度,而我们平常所说的金丝雀部署也就是灰度发布的一种方式。
spring-cloud-gateway自身提供一个predicate叫WeightRoutePredicateFactory,在启动的时候也可以看到
2019-05-29 23:06:47.321 INFO 4736 --- [ main] o.s.c.g.r.RouteDefinitionRouteLocator : Loaded RoutePredicateFactory [After]
2019-05-29 23:06:47.321 INFO 4736 --- [ main] o.s.c.g.r.RouteDefinitionRouteLocator : Loaded RoutePredicateFactory [Before]
2019-05-29 23:06:47.322 INFO 4736 --- [ main] o.s.c.g.r.RouteDefinitionRouteLocator : Loaded RoutePredicateFactory [Between]
2019-05-29 23:06:47.322 INFO 4736 --- [ main] o.s.c.g.r.RouteDefinitionRouteLocator : Loaded RoutePredicateFactory [Cookie]
2019-05-29 23:06:47.322 INFO 4736 --- [ main] o.s.c.g.r.RouteDefinitionRouteLocator : Loaded RoutePredicateFactory [Header]
2019-05-29 23:06:47.322 INFO 4736 --- [ main] o.s.c.g.r.RouteDefinitionRouteLocator : Loaded RoutePredicateFactory [Host]
2019-05-29 23:06:47.322 INFO 4736 --- [ main] o.s.c.g.r.RouteDefinitionRouteLocator : Loaded RoutePredicateFactory [Method]
2019-05-29 23:06:47.322 INFO 4736 --- [ main] o.s.c.g.r.RouteDefinitionRouteLocator : Loaded RoutePredicateFactory [Path]
2019-05-29 23:06:47.322 INFO 4736 --- [ main] o.s.c.g.r.RouteDefinitionRouteLocator : Loaded RoutePredicateFactory [Query]
2019-05-29 23:06:47.322 INFO 4736 --- [ main] o.s.c.g.r.RouteDefinitionRouteLocator : Loaded RoutePredicateFactory [ReadBodyPredicateFactory]
2019-05-29 23:06:47.322 INFO 4736 --- [ main] o.s.c.g.r.RouteDefinitionRouteLocator : Loaded RoutePredicateFactory [RemoteAddr]
2019-05-29 23:06:47.322 INFO 4736 --- [ main] o.s.c.g.r.RouteDefinitionRouteLocator : Loaded RoutePredicateFactory [Weight]
2019-05-29 23:06:47.322 INFO 4736 --- [ main] o.s.c.g.r.RouteDefinitionRouteLocator : Loaded RoutePredicateFactory [CloudFoundryRouteService]
但是不知道为什么在文档里面没有相关的描述,在官方ISSUE里面也有人提到了这个问题