zoukankan      html  css  js  c++  java
  • [译]ZOOKEEPER RECIPES-TWO PHASED COMMIT

    两段式提交

    两段式提交协议可以让所有分布式系统中的客户端达成协议同时提交或回滚事务。
    在ZooKeeper中你可以通过协调者(coordinator)创建一个事务节点来实现两段式提交。例如"/app/Tx",并为每个参与者分配一个子节点例如"/app/Tx/s_i"。当协调者创建完子节点,其中的内容是undefined。一旦每个相关节点收到协调者的事务请求,节点会读取这个子节点,并设置watch。每个节点往自己节点写数据,进行投票是否提交。一旦写完,其他节点会被唤醒,一旦所有节点都投票完成,就可以最终决定是否提交。注意,节点可能在其他节点回滚时提前回滚。
    一个有趣的地方是,协调者的唯一角色是决定节点组,用于创建ZooKeeper节点,并将事务传播给所有的节点。实时上,传播也可以在ZooKeeper内实现,通过在事务节点上配置。
    以上方法有两个重要缺陷。一个是消息的复杂度O(n²)。第二个是ephemeral节点无法检测节点失效。需要检测节点失效,就必须让每个节点自己创建ephemeral节点。
    为了解决第一个问题,你可以让变化只告诉协调者,再在可以做出决断时唤醒其他所有节点。注意这个方法是可扩展的,但是会比较慢,因为所有交流需要通过协调者。
    为了解决第二个问题,你可以让协调者将事务传播通知到每个节点,并让每个节点创建自己的ephemeral节点。

  • 相关阅读:
    [leetcode] Maximum Depth of Binary Tree
    [leetcode] Binary Tree Zigzag Level Order Traversal
    [leetcode] Binary Tree Level Order Traversal
    软工第二次极限测试
    动手动脑的问题以及课后实验性的问题3
    计算几何--半平面交与平面区域
    拉格朗日插值法
    计算几何--最小圆覆盖与最小球覆盖
    计算几何--圆与球
    程序员修炼之道读后感1
  • 原文地址:https://www.cnblogs.com/resentment/p/6246760.html
Copyright © 2011-2022 走看看