一、简介
正常情况下,Client 通过显式调用unregister()进行服务主动下线。异常情况时,Server 端通过剔除过期Lease,使得服务被动下线。
从全局来看,为了防止网络故障导致所有Lease超时,清空注册表registry,并级联传播到其他Server,从而导致全局不可用,需要开启全局服务自我保护功能。
二、服务正常下线
1、流程简介
2、设计要点
2.1、流程设计
类似Java Executor 关闭过程
2.2、取消所有调度任务
2.3、Threshold ?
三、服务异常下线
1、流程简介
策略:“分批 + 随机”摘取
2、设计要点
2.1、时间漂移补偿
时钟倾斜或gc,会导致下一次任务执行时间晚于期望时间,因此需要基于补偿时间,将任务执行时间点重新校准到期望时间。
2.2、分批摘取
2.3、随机摘取

备注:随机选择N个
四、服务保护

