这是我的需求。
我有一群机器组成的集群(比如4台,A、B、C、D)。A的任务是轮询数据库以获取更新(例如,在订单表中查找新订单)。一旦A收到更新,它会验证B、C、D哪个相对空闲(负载平衡是正确的词语),然后命令其中一个(B、C或者D)开始处理该订单。A跟踪B/C/D正在处理哪个订单。
B、C和D就像从属于A的节点 - 它们只接收来自A的更新,并在完成订单处理时通知A。如果A出现故障(由于网络问题或其他原因),那么B、C或D中的一个将成为主节点并执行A的职责。A关于正在运行的作业的元数据也定期备份到备份节点E。因此,当B/C/D成为新的主节点时,它会从E中读取元数据。
我知道这听起来有点像Hadoop,但是订单处理无法适应MapReduce模型,因此我正在寻找利用其他框架(如ZooKeeper)来协调A、B、C和D之间的协调的方法。
ZooKeeper在这里合适吗?
我有一群机器组成的集群(比如4台,A、B、C、D)。A的任务是轮询数据库以获取更新(例如,在订单表中查找新订单)。一旦A收到更新,它会验证B、C、D哪个相对空闲(负载平衡是正确的词语),然后命令其中一个(B、C或者D)开始处理该订单。A跟踪B/C/D正在处理哪个订单。
B、C和D就像从属于A的节点 - 它们只接收来自A的更新,并在完成订单处理时通知A。如果A出现故障(由于网络问题或其他原因),那么B、C或D中的一个将成为主节点并执行A的职责。A关于正在运行的作业的元数据也定期备份到备份节点E。因此,当B/C/D成为新的主节点时,它会从E中读取元数据。
我知道这听起来有点像Hadoop,但是订单处理无法适应MapReduce模型,因此我正在寻找利用其他框架(如ZooKeeper)来协调A、B、C和D之间的协调的方法。
ZooKeeper在这里合适吗?