确定功能区(+ Feign)客户端中的缓存实例

Determine cached instances in a Ribbon (+ Feign) client

我们正在 Spring 云 + NetflixOSS 上构建微服务架构,到目前为止 它令人惊叹。但是我们注意到,当我们第一次启动 Eureka + 2 个单独的微服务时,Service1 无法连接到 Service2 大约 30 秒,即使两者都非常快速地注册到 Eureka 并单独出现。这发生在本地或部署(通过 Tutum 在 AWS 上)

我们得到的错误是:

Load balancer does not have available server for client: Service1

我们几乎所有的超时和设置都被指定为默认值,所以我们觉得有些地方不对劲。我们担心的是滚动更新到 Service1 并将其注册到 Eureka & 然后有 30 秒的停机时间(或者可能是依赖于 Service1 的 Service2 停机)

有没有人见过这种行为?有没有办法检查/调试/记录客户端负载平衡候选者?我们已经研究了很多 Netflix 代码(有/没有调试器),但我们没有看到很多有用的日志记录和自省点(特别是因为 Observables 在深度调试会话期间往往会超时)

建议?建议?渴望牺牲的异教神灵?

谢谢

ribbon.ServerListRefreshInterval=2000 将客户端设置为每 2 秒刷新一次。