我有一个关于在zookeeper集群中实现两阶段提交协议的问题,以协调多个客户端连接之间的某些事务。现在我有以下想法:
C
注册交易节点/app/tx
/app/tx/%d (Ni)
Ni
Ni
新交易tx
Ni
检查其节点是否已创建Ni
将事务设置为prepare()/ abort()C
收到所有各方的结果并决定中止/继续Ni
执行查询N
我通知C
ok / fail C
决定abort | commit C
通知每个人结果。 tx
已提交但我不确定这是一个正确的方向吗?而且我不确定如何在python kazoo或任何其他语言(Java)中实现它?如果您能通过提供片段或更正我的算法来帮助我,那会很好吗? 此外,如何扩展此协议以进行动物园间管理员通信?比方说,我们维护多个不同的zookeeper集群,这些集群被包装到区域或任何其他抽象实体中,我们希望使用两阶段提交在特定区域上执行此类显式事务?
答案 0 :(得分:0)
基于2PC using Zk的算法的重要调整是,