问题场景
多个 pod 里有定时任务,怎么避免重复执行,才比较好?
DIY
假定,为了解决这个问题,多 pod 之间需要进行通信。
在上述假定下,按照是否有一个单点协调通信,就可以分出两类方法:一类有这单点,一类没有。
如果有单点,那问题就变成,用什么单点,于是,容易得到答案:
- redis
- mysql
- etcd
- zookeeper
- k8s 的一些特性(这其实最后也是基于 etcd 的)
- ……
如果没有单点,那么,解决问题所需要的通信,就落在 pod 身上,那就得考虑各种节点间的通信方式:
- raft ……
人家是怎么解决的?
Simple leader election with Kubernetes and Docker: 注意到这是一个很老的文章。