Chubby Sequencers 的用途是啥

Posted

技术标签:

【中文标题】Chubby Sequencers 的用途是啥【英文标题】:What is the purpose of Chubby SequencersChubby Sequencers 的用途是什么 【发布时间】:2020-03-12 10:44:24 【问题描述】:

在阅读article from google about chubby时,我并没有真正理解测序仪的用途

假设我们有 4 个实体:

    胖乎乎的细胞 客户端 1 客户端 2 我们想要使用的服务以及我们将发送请求的位置(我们需要锁定)

据我所知,步骤是:

    客户端 1lock_request() 发送到 Chubby 细胞,Chubby 回复 Sequencer(假设为 SequenceNumber = 1

    客户端 1 使用 Sequencer (SequenceNumber = 1) 向服务发送请求 modify_data()

    服务询问 Chubby cell SequenceNumber 是否有效 (=1) Chubby 确认,设置LeasePeriod(锁定过期时间为(假设)60 秒) !在此期间没有人能够获得锁 确认后,ServiceClient 1(SequenceNumber = 1)的数据缓存(假设)40秒

现在: 如果 Client 2 在我们设置的这 60 秒内尝试获取锁,它将被 Chubby cell

拒绝

这意味着 Client 2 不可能获取下一个 SequenceNumber = 2 的锁并将任何内容发送到 Service

据我了解,SequenceNumber 的所有目的只是针对 Service 的 2 个请求而 Service 可以比较 2 个 SequenceNumber 并拒绝较低的情况,而无需问胖乎乎的细胞

但是如果我们有缓存并且不可能在 Client 1 持有这个锁的同时获得 Client 2 的锁,这种情况会如何发生呢?

【问题讨论】:

请张贴“文章”的链接。您是指已发表的科学论文吗? 【参考方案1】:

在分布式系统中用实际时间(如秒)来考虑时间是错误的,但我会尝试使用相同的语义来回答。

如你所说,假设 client1 获得名为 foo1 的写锁, 这里的 foo 是锁名,1 是代号。

现在说,租用期是 60 秒。现在第 58 秒 Client1 发送了一个写操作,比如 R1。

很快,Client1 就死了。

现在,问题来了。您在分析中假设 R1 将达到 服务器在 2 秒内,在另一个客户端之前,比如 Client2 成为主服务器。

这只是不确定。

在分布式系统中,一方面网络延迟只有几分之一毫秒,另一方面网络分区, 您只是无法确定什么先到达主控,R1 或客户端 2 请求成为主控。

这就是序列号有帮助的地方。

Master,现在知道有 foo2,可以拒绝元数据中带有 foo1 的 R1。

阅读更多关于代时钟/逻辑时钟here。

逻辑时钟是一种在分布式系统中捕获时间顺序和因果关系的机制。通常,分布式系统可能没有物理上同步的全局时钟。幸运的是,在许多应用程序中(例如分布式 GNU make),如果两个进程从不交互,则无法观察到缺乏同步。此外,在这些应用程序中,进程就事件顺序(即逻辑时钟)而不是挂钟时间达成一致就足够了。[1]

【讨论】:

以上是关于Chubby Sequencers 的用途是啥的主要内容,如果未能解决你的问题,请参考以下文章

Javassist。主要思想是啥,真正的用途是啥?

jenkins 用户文件夹的用途是啥,这些配置文件是啥?

SCSI LUN id 是啥意思,它的用途是啥?

Lambda表达式的主要用途是啥?

系统表 master..spt_values 的用途是啥,其值的含义是啥?

Ember.Container 的用途是啥