libi / dcron

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

结构优化及健壮性修改 #7

Closed dlvkin closed 4 years ago

dlvkin commented 4 years ago

在生产环境使用,不希望底层对SETEX 设置不合理,在使用效果不是很理想;对部分interface 进行修改,更符合对用户直接使用封装;增加 了 redis 重启,重连健壮检查

libi commented 4 years ago

1.interface部分 使用SetHeartBeat是为了可以适配更多驱动逻辑,心跳的执行逻辑应该由driver内部决定而非pool决定;不需要在外层为心跳启动协程,并非所有驱动都需要interval参数,比如要实现etcd的driver时。 2.心跳部分新增的获取节点数据失败时 获取节点数据和注册/重启心跳没有直接关系,没太懂这里为什么需要重新InitPoolGrabService。 3.心跳间隔需要尽可能短,可以避免节点宕机时其他节点没有感知导致的任务丢失或者在节点新启动时任务重复执行。 4.将InitPoolGrabService(有个问题 为什么nodeID=="" )和tickerUpdatePool放入Start是一个很好的改动,可以避免只初始化节点没有启动任务时丢失任务。