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