Apache zookeeper 胖乎乎的测序器的用途是什么

Apache zookeeper 胖乎乎的测序器的用途是什么,apache-zookeeper,distributed-system,consensus,paxos,Apache Zookeeper,Distributed System,Consensus,Paxos,在阅读时,我并没有真正理解音序器的用途 假设我们有4个实体: 圆细胞 客户1 客户2 我们想要使用的服务以及我们将在哪里发送请求(我们需要锁) 据我所知,这些步骤是: 客户端1发送lock_request()到Chubby cell,Chubby使用Sequencer(假设SequenceNumber=1) 客户端1使用Sequencer(SequenceNumber=1)发送请求修改数据() 服务询问胖细胞SequenceNumber是否有效(=1) Chubby承认它,设置LeasePer

在阅读时,我并没有真正理解音序器的用途

假设我们有4个实体:

  • 圆细胞
  • 客户1
  • 客户2
  • 我们想要使用的服务以及我们将在哪里发送请求(我们需要锁)
  • 据我所知,这些步骤是:

  • 客户端1发送
    lock_request()
    Chubby cell,Chubby使用
    Sequencer
    (假设
    SequenceNumber=1

  • 客户端1使用Sequencer(SequenceNumber=1)发送请求
    修改数据()

  • 服务询问胖细胞SequenceNumber是否有效(=1)
  • Chubby承认它,设置
    LeasePeriod
    (锁过期时间为(假设)60秒) ! 在此期间,没有人能够获得锁
  • 确认后,服务将有关客户端1的数据(SequenceNumber=1)缓存(假设)40秒
  • 现在: 如果客户端2在我们设置的这60秒内尝试获取锁,它将被胖细胞拒绝

    这意味着客户端2不可能获取下一个SequenceNumber=2的锁,并向服务发送任何内容

    据我所知,SequenceNumber的所有用途仅适用于两个请求到达服务的情况,而服务可以比较两个SequenceNumber并拒绝较低的请求,而无需询问胖细胞

    但是,如果我们有缓存并且无法通过客户端2获取锁,而客户端1持有此锁,这种情况将如何发生?

    请发布“文章”的链接。你是说发表的科学论文吗?