API 网关能否动态找到在服务注册中心注册的微服务的 URI?
Can an API Gateway find URIs of microservices registered on a Service Registry dynamically?
我正在使用 Spring Boot,并且我有一个 Eureka 服务器设置,其中注册了一些微服务以进行服务发现。
现在,我希望注册为 Eureka 客户端的 API 网关能够动态重定向到这些微服务,而不是对它们的 URI 进行硬编码。
类似这样,其中“AuthMicroservice”是已注册微服务的名称:
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route(p -> p
.path("/auth/asdh26627s8")
//.uri("http://localhost:8080/auth")
.uri("http://AuthMicroservice")
)
.build();
}
当我尝试时,它告诉我有一个“java.net.UnknownHostException:在 2 个查询后无法解析 'AuthMicroservice'”。
所以我想知道这是否可能?如果是,我将如何处理?
找到解决方案。我所要做的就是将 URI 中的“http”替换为“lb”以启用负载平衡。
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route(p -> p
.path("/auth/asdh26627s8")
.uri("lb://AuthMicroservice/auth")
)
.build();
}
我正在使用 Spring Boot,并且我有一个 Eureka 服务器设置,其中注册了一些微服务以进行服务发现。 现在,我希望注册为 Eureka 客户端的 API 网关能够动态重定向到这些微服务,而不是对它们的 URI 进行硬编码。
类似这样,其中“AuthMicroservice”是已注册微服务的名称:
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route(p -> p
.path("/auth/asdh26627s8")
//.uri("http://localhost:8080/auth")
.uri("http://AuthMicroservice")
)
.build();
}
当我尝试时,它告诉我有一个“java.net.UnknownHostException:在 2 个查询后无法解析 'AuthMicroservice'”。
所以我想知道这是否可能?如果是,我将如何处理?
找到解决方案。我所要做的就是将 URI 中的“http”替换为“lb”以启用负载平衡。
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route(p -> p
.path("/auth/asdh26627s8")
.uri("lb://AuthMicroservice/auth")
)
.build();
}