设计基于 Redis 的定时任务系统(ZSET + Scripting)

王子亭 at 
这篇文章会带领大家实现一个基于 Redis 的分布式高可用定时任务系统,其中的 worker 以 Node.js 为例,但其实可以使用任何语言来实现。这篇文章不会给出完整的代码,更侧重于探索的过程。高可用设计首先我们希望让 worker 是无状态的,这样会大幅减少对于 worker 的高可用需求,也不涉及到 worker 之间的数据同步或者选举。我们将所有的状态集中到 Redis 上,Redis 可以用 Master-Slave + Sentinel 的方式达到一个相对较高的可用性。为什么不使用选举 Master 的方式?有一种很常见的做法是在单个实例上完成所有的工作,这样甚至连 Redis ……