java - 使用功能区负载均衡器获取所有可访问服务器的列表,无论区域如何
问题描述
我们有 4 个区域,每个区域都有一个 zuul 和 UI 服务运行。Ribbon 是我们跨服务的负载均衡器。
我们正在使用 Zuul 中指定的自定义负载平衡规则实现粘性会话
正如您在上面的文件中看到的,有一行获取特定服务的可访问服务器列表
List<Server> servers = getLoadBalancer().getReachableServers();
由于启用了区域关联,服务器列表将只有一台服务器。
有没有办法在不考虑区域的情况下获得所有可用的服务器?
我们正在寻找可以替代上述负载均衡器调用的东西。
在当前的粘性会话规则中,我们使用的是 ZoneAvoidanceRule。我们还尝试了 AvailabilityFilteringRule、BaseLoadBalancer 和 RoundRobinRule。但他们都没有提供所有 4 个服务器实例参考。
什么可以读取所有服务器列表?
解决方案
终于要达到这个目的了。
我所要做的就是删除线
List<Server> servers = getLoadBalancer().getReachableServers();
然后注入包含所有应用程序实例信息的 EurekaClient bean,然后将服务器列表读取为
Application app = eurekaClient.getApplication("application-name");
List<InstanceInfo> allinstances = app.getInstances();
推荐阅读
- combobox - 如何在 MS Access 2010 及更高版本中阻止子窗体上的 ComboBox 刷新(请求)
- python - 对列中的行进行分组并降序
- firebase - 是否可以根据flutter应用程序中firebase云存储中的地图列表中的值获取特定文档?
- android - C/C++:平台版本 '31' 超过 '30',此 NDK 支持的最大 API 级别
- android - 如何为 MotionLayout 调整 GONE 视图的出现方向?
- go - 如何将资产更新限制为仅一个组织,但允许所有人读取资产?
- css - Prestashop - 特色产品 - 破碎
- python - 如何在scrapy中跳过页面?
- wpf - 程序需要.net5 SDK,为什么?
- python - 以下正则表达式的最简化形式/从 nvidia-smi 输出中提取所有值