zk,一般来说还好,服务注册和发现,都是很快的
eureka,必须优化参数
如果完全按上面默认的时间,整个响应时间会很慢,超过几十秒或两三分钟。
1 在eureka服务增加如下配置,让写缓存同步时间减短
eureka.server.responseCacheUpdateIntervalMs = 3000 ---->可以改为默认的30000ms改为3000ms
2 在应用服务上加下配置,让服务发现时间间隔减短
eureka.client.registryFetchIntervalSeconds = 30000 ---->可以改为默认的30000ms改为3000ms
3 在应用服务上加下配置,让服务心跳间隔减短
eureka.client.leaseRenewalIntervalInSeconds = 30 ---->可以改为默认的30s改为3s
4 在eureka服务上加下配置,让检查服务心跳间隔减短
eureka.server.evictionIntervalTimerInMs = 60000 ---->可以改为默认的60000ms改为6000ms
5 在eureka服务上加下配置,表示范监听心跳如果s没有响应就表示服务断开
eureka.instance.leaseExpirationDurationInSeconds = 90 ---->可以改为默认的90s改为6s
6 eureka自我保护机制最好关闭。如果突然网络故障,导致大量服务实例不发心跳(超过某百分比)。如果打开保护机制(true),就不会把实例从注册表中删除,保持原有不变,因为认为是网络问题。所以上生产环境要关闭它
eureka.server.enable-self-preservation=false
如果一个服务挂了,感知用时: 6+3+3 =12s
服务发现的时效性变成秒级,几秒钟可以感知服务的上线和下线