用springcloud zuul ribbon集群服务的时候遇到的坑

使用zuul网关做服务映射的时候,部署了3个相同service   端口分别是:8769 8770 8771  当我们断掉8769服务的时候,ribbon按理说会认定8769断掉了,从而后面的请求不会再命中8769这个服务端口。然而并不是想的那样,还是一样会命中失败的服务。直接跳坑了~


做集群映射离不开eureka,以上三个服务都注册在eureka,当8769断掉后,eureka自身有心跳检测,默认是15分钟,如果服务在15分钟内没有响应则认定该服务出现故障,即下线该服务。在这期间ribbon把请求还是一样会均衡各个集群节点,因为它获取节点是否正常是通过eureka中心得到的,所以eureka如果没有下线服务,那么ribbon会一直认为该服务在线。那么这种情况怎么处理呢?

在eureka项目yml 设置eureka.server.enableSelfPreservation = false  关闭自我保护机制

在service项目yml  设置 eureka.instance.leaseRenewalIntervalInSeconds = 5 

                                                                leaseExpirationDurationInSeconds = 10

你可能感兴趣的:(用springcloud zuul ribbon集群服务的时候遇到的坑)