【发布时间】:2018-10-08 15:07:24
【问题描述】:
我有一个 Spring 微服务架构应用程序,但我们没有使用 eureka 或任何其他服务发现。我的要求是创建一个动态负载均衡器。因此,对于每项服务,都会有一组独特且动态的服务器。 配置将类似于:
ribbon:
listOfServices: say-hello-service, say-hi-service
我不想做的是,为我将使用的每个服务客户端重复 @RibbonClient 注释。
我发现RibbonClientSpecification是Ribbon工厂的关键组件。如果我使用名称say-hello-service.RibbonClientSpecification 和say-hi-service.RibbonClientSpecification 注册它,即使我没有@RibbonClient 和任何与功能区相关的配置,它也会尝试调用相应的服务。所以我的问题是
- 为什么
@RibbonClient注释是必要的,因为我们可以从定义的属性中识别服务?在我看来,我们必须在属性文件中定义功能区属性以及具有相同名称的注释是多余的。 - 如何为我动态创建的每个功能区客户端注册负载平衡器?
- 在没有多个
@RibbonClient配置类的情况下动态创建多个功能区客户端的权利是什么?
【问题讨论】:
-
所有功能区负载平衡器都是动态的。
@RibbonClient仅在需要时才需要自定义特定的功能区负载平衡器。 -
@spencergibb 所以,我想自定义它。我想根据服务名称从数据库中提取每个服务的服务器列表。但我不想多次写@RibbonClient。我想要一种通用的方法来获得与
@RibbonClient在提供自定义配置时所做的相同的结果。我该怎么做? -
@cosmos 你能完成这个吗?方法是什么?
标签: java spring spring-cloud spring-cloud-netflix