Spring Cloud 2022.x版本使用gateway和nacos实现动态路由和负载均衡
@Configuration
public class GatewayConfig {
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route("path_route", r -> r.path("/api/test")
.uri("http://localhost:8081")
.id("test_route")
)
.build();
}
@Bean
public DiscoveryClientRouteDefinitionLocator discoveryClientRouteDefinitionLocator(ReactiveDiscoveryClient discoveryClient, Flux<ServiceInstance> serviceInstanceFlux) {
return new DiscoveryClientRouteDefinitionLocator(discoveryClient, serviceInstanceFlux, "lb://", 1);
}
}
这个配置类定义了两个Bean:一个是静态路由,一个是基于服务发现的动态路由。静态路由会将所有匹配 /api/test
路径的请求代理到 http://localhost:8081
;动态路由则会将请求代理到Nacos中注册的服务,并且使用负载均衡策略。在这个配置中,我们使用了ReactiveDiscoveryClient
和Flux<ServiceInstance>
来实现对服务实例的响应式监听,从而实时更新路由规则。
评论已关闭