一、简介

正常情况下,Client 通过显式调用unregister()进行服务主动下线。异常情况时,Server 端通过剔除过期Lease,使得服务被动下线。
从全局来看,为了防止网络故障导致所有Lease超时,清空注册表registry,并级联传播到其他Server,从而导致全局不可用,需要开启全局服务自我保护功能。


二、服务正常下线

1、流程简介

点击查看【processon】

2、设计要点

2.1、流程设计

类似Java Executor 关闭过程

2.2、取消所有调度任务

2.3、Threshold ?


三、服务异常下线

1、流程简介

点击查看【processon】

策略:“分批 + 随机”摘取

2、设计要点

2.1、时间漂移补偿

时钟倾斜或gc,会导致下一次任务执行时间晚于期望时间,因此需要基于补偿时间,将任务执行时间点重新校准到期望时间。
image.png
image.png

2.2、分批摘取

image.png

2.3、随机摘取

image.png

备注:随机选择N个


四、服务保护

服务下线 - 图5