libi / dcron

轻量分布式定时任务库 a lightweight distributed job scheduler library
MIT License
422 stars 73 forks source link

[Question] 故障转移是怎样实现的?具体逻辑在哪里?为什么是10秒?这个时间可以配置吗? #46

Closed Casper-Mars closed 1 year ago

Casper-Mars commented 1 year ago

@libi PTLA

dxyinme commented 1 year ago

故障转移目前的实现方式(如果我理解的没错的话),应该是按照如下几步来进行的:

  1. 一共有三个node,node1, node2, node3,假设存在一个task1, 需要在node1运行
  2. node1因为某种原因crash了,过了一定时间,他被从hash ring中清除掉
  3. node2, node3更新hash ring
  4. task1到执行时间了,根据最新的hash ring进行重新执行,node2, node3都计算出task1需要在node2执行
  5. node2执行task1

这个时间可以在创建dcron的时候,通过设置TimeoutDuration来设置。