zookeeper中如何处理race condition的



  • 假设多个slave要写同一个znode,zookeeper怎么处理,加锁?


  • cid:76:privileges:topics:read

    @knightseu Hi,

    这是个很好的问题,涉及到Zookeeper的设计决策和内部的实现原理。
    回忆咱们课上聊的Zookeeper架构,它本身也是一个master-slave的结构。然后所有的写操作 (添加,删除,更新),都是通过master来进行的。所以可以说Zookeeper本身不支持写操作的并发,所以就不存在加锁这样的问题了,因为所有写操作都是针对于master进行的顺序操作。

    这要设计的好处是,可以保证Zookeeper更新znode的时候写操作的顺序。但是问题就是写操作的性能比较差。所以Zookeeper不适于write-dominant的工作流程。然而因为Zookeeper这个框架本身就不是拿来当数据库用的,而是作为分布式系统的一个source of truth,所以这样的设计决策也就比较合理了。


登录后回复
 

与 BitTiger Community 的连接断开,我们正在尝试重连,请耐心等待