这是我的要求。
我在一个集群中有一堆机器(比如大约 4 - A、B、C、D)。
A 的工作是轮询数据库以获取更新(因此,A 可以在订单表中查找新订单)。
一旦 A 收到更新,它会验证 B、C、D 中的哪一个是相对空闲的(我猜负载平衡是正确的词)。然后它命令 B、C、D 之一开始处理订单。A 跟踪 B/C/D 上正在处理的订单。
B、C、D 就像奴隶一样——它们只在完成订单处理后从 A 接收更新并通知 A。如果 A 出现故障(由于网络问题或其他原因),B、C、D 中的一个将成为主节点并执行 A 的职责。A 关于正在运行的作业的元数据也会定期备份到备份节点 E。所以当B/C/D 成为新的 master,它将从 E 读取元数据。
我知道这听起来有点像 hadoop,但是订单处理不适合 map reduce 模型,所以我正在寻找利用其他框架(如 ZooKeeper)的方法,它可以帮助 A、B、C 和 D 之间的协调。
ZooKeeper 适合这里吗?