共识服务 vs 锁服务?

Roh*_*gam 2 distributed-computing distributed-system apache-zookeeper

浏览 Google 的Chubby Paper

与锁服务一样,共识服务允许客户端即使只有一个活动客户端进程也能安全地取得进展;类似的技术已被用来减少拜占庭容错所需的状态机数量[24]。然而,假设共识服务不专门用于提供锁(这将其简化为锁服务),这种方法无法解决上述任何其他问题

他们提到 Chubby 不是共识服务,而是锁定服务,以及共识服务如何用于在节点对等点之间达成共识

根据我的理解,我认为像 Chubby 和 Zookeeper 这样的服务用于将分布式应用程序问题(例如领导者选举、集群管理、共享资源访问)卸载到不同的应用程序(chubby/zookeeper),并且这些是基于锁的服务。在如何达成共识方面对文件/znode 进行锁定。

什么是共识服务?它们与锁定服务有何不同?

什么时候会使用它们中的任何一个?

小智 5

Zookeeper是一个协调服务,仿照Google的Chubby,它提供的主要功能有

  • 线性化原子操作
  • 操作总排序
  • 故障检测
  • 更改通知

其中,Linearizable atomic operations需要 ZooKeeper 实现共识算法(Zab),因此线性化可用于使用 ZooKeeper 锁在分布式系统中的对等点之间达成共识

引自书中Designing Data-Intensive Application

Apache ZooKeeper [15] 和 etcd [16] 等协调服务通常用于实现分布式锁和领导者选举。他们使用共识算法以容错方式实现线性化操作

根据我的理解,共识服务和协调服务都运行在某种共识算法之上,只是锁服务通过分布式锁来代表共识

与 Chubby 论文中也提到的类似,

然而,假设共识服务不专门用于提供锁(这将其简化为锁服务)

我发现《设计数据密集型应用程序》一书中的第 9 章“一致性和共识”对这个主题非常有帮助,如果您想进一步挖掘,肯定会推荐阅读该书