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
我们想要使用的服务以及我们将发送请求的位置(我们需要锁定)
据我所知,步骤是:
客户端 1 将 lock_request()
发送到 Chubby 细胞,Chubby 回复 Sequencer
(假设为 SequenceNumber = 1
)
客户端 1 使用 Sequencer (SequenceNumber = 1) 向服务发送请求 modify_data()
LeasePeriod
(锁定过期时间为(假设)60 秒)
!在此期间没有人能够获得锁
确认后,Service将Client 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 的用途是啥的主要内容,如果未能解决你的问题,请参考以下文章