1.服务的正常退出流程。
eureka要求当client退出的时候,它显示的调用"注销"接口. 进行优雅退出.
2.self preservation mode是一种保护/容错机制
它主要是用来避免由于网络抖动或者故障带来的连接失败,看下面2种情况。
2.1 网络故障,或者若网,导致server没有收到client的心跳信息,这时候其实client服务是活着的
2.2 及时client和server直接断开了,但是服务A已经跟服务B建立了连接
3.看几个重要的配置参数
3.1 eureka.instance.lease-renewal-interval-in-seconds=30
这个标识多久发送一次心跳
3.2 eureka.instance.lease-expiration-duration-in-seconds=90
这个标识server过多久还没有收到来自客户端的心跳,就认为client已经挂了,把他踢掉的时间
3.3 eureka.server.eviction-interval-timer-in-ms=5000
每隔多久进行一次检查,看是不是有挂了的client[关联一个定时器]
3.4 eureka.server.renewal-threshold-update-interval-ms=6000
每隔多久计算一次期望的每分钟收到的心跳的次数[关联一个定时器]
3.5 eureka.server.renewal-percent-threshold=0.85
计算每分钟最小心跳次数的threshold,
3.6 还有一个定时器,每分钟执行一次,计算上一分钟实际收到的心跳次数.
4.案例说明
有2个服务,A 和 B, 假设配置的参数值就是上面的值
4.1 任何服务连续3次发生心跳失败(超过了90秒),就会被踢掉
4.2 正常情况,1分钟应收到的心跳次数是2(每分钟的次数)*2(服务的数量),最小次数是 2(每分钟的次数)*2(服务的数量)*0.85=3
4.3 每分钟计算一次最小的心跳次数(对应上面的3.4)
4.4 若实际的心跳次数小于最小的心跳次数,启动自我保护模式
参考:https://github.com/Netflix/eureka/wiki/Server-Self-Preservation-Mode
欢迎关注微信公众号: 假程序员