浅谈分布式锁服务——以Chubby为例

简介: Chubby是一个由Google设计的提供粗粒度锁服务的文件系统。基于松耦合分布式系统,解决了分布式一致性的问题。
本文首发于稀土掘金。该平台的作者 逐光而行 也是本人。

Chubby简介

Chubby是一个由Google设计的提供粗粒度锁服务的文件系统。基于松耦合分布式系统,解决了分布式一致性的问题。

  • 特点:是一种advisory lock,不是mandatory(强制) lock,系统有很大的灵活性。
  • 用途:

    • GFS(Google file system)使用其选取一个主服务器;
    • Google内部使用其进行Name Server
    • Bigtable使用其指定一个主服务器并发现、控制与其相关的子表服务器;
    • 其还可单独作为一个稳定的存储系统存储一些小数据

Chubby一致性问题解决原理————Paxos算法及原理及其实现

分布式一致性问题

简言之,即保证系统中初始状态相同的各个节点在 执行相同的操作序列时, 看到的指令序列完全一致,并且 最终得到的结果完全一致。

(我的理解:并不是要时刻同步,但是在关键的地方要同步,最终结果也要一致)

解决思路

设置一个专门的结点,该结点接收每次进行新操作时第一个节点发送的状态信息,并以此为基准,其他结点通过查询该结点获取信息后也同样执行该操作。

问题

如果该结点崩了,整个系统就崩了,不够可靠。

解决思路

同时设置多个这样的特殊结点,由它们共同决定操作序列。这也是Paxos的基本思想。

Paxos内容

概述

Paxos是由Leslie Lamport最先提出的基于消息传递的一致性算法。

其中的结点分为三种类型:

  • proposers
  • acceptors
  • learners

    proposers提出提议,acceptors批准提议,learner从acceptors获取被批准的提议并执行。

保证数据一致性的三大条件

  • 只有经proposers提出的提议才有可能被批准
  • 每次只批准一个提议
  • 只有提议被批准后learner才能获取这个提议

为了保证以上三大条件而设定的一些约束条件

  • 每次进行新操作时,每个acceptor只接受它得到的第一个决议

(类似于最初单个特殊结点那样,这次是为了保证能有少数服从多数的局面,即使最初的提议并不是最完备的,但总比卡住什么都不干好)

  • 一旦某个决议通过,之后的决议必须要与它保持一致

一个决议的阶段

  • 准备阶段
  • 批准阶段

参考文献

相关文章
|
14天前
|
监控 负载均衡 Cloud Native
ZooKeeper分布式协调服务详解:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析ZooKeeper分布式协调服务原理,涵盖核心概念如Server、Client、ZNode、ACL、Watcher,以及ZAB协议在一致性、会话管理、Leader选举中的作用。讨论ZooKeeper数据模型、操作、会话管理、集群部署与管理、性能调优和监控。同时,文章探讨了ZooKeeper在分布式锁、队列、服务注册与发现等场景的应用,并在面试方面分析了与其它服务的区别、实战挑战及解决方案。附带Java客户端实现分布式锁的代码示例,助力提升面试表现。
30 2
|
2月前
|
监控 负载均衡 Dubbo
|
27天前
|
消息中间件 算法 Java
【亿级数据专题】「分布式服务框架」 盘点本年度我们探索服务的保障容量的三大关键方案实现
【亿级数据专题】「分布式服务框架」 盘点本年度我们探索服务的保障容量的三大关键方案实现
185 0
|
3月前
|
Dubbo Java 应用服务中间件
Spring Boot Dubbo 构建分布式服务
Spring Boot Dubbo 构建分布式服务
47 0
|
3月前
|
消息中间件 算法 Java
【亿级数据专题】「分布式消息引擎」 盘点本年度我们探索服务的保障容量的三大关键方案实现
尽管经过了上一篇文章 《【亿级数据专题】「分布式消息引擎」 盘点本年度我们探索服务的低延迟可用性机制方案实现》有了低延迟的优化保障,消息引擎仍需精心规划其容量。为了提供无与伦比的流畅体验,消息引擎必须实施有效的容量管理策略。
52 2
【亿级数据专题】「分布式消息引擎」 盘点本年度我们探索服务的保障容量的三大关键方案实现
|
5月前
|
监控 微服务
微服务技术系列教程(28) - SpringCloud- 分布式服务跟踪Sleuth
微服务技术系列教程(28) - SpringCloud- 分布式服务跟踪Sleuth
22 0
|
2月前
|
消息中间件 存储 负载均衡
【亿级数据专题】「分布式消息引擎」 盘点本年度我们探索服务的HA高可用解决方案
昔之善战者,先为不可胜,以待敌之可胜。不可胜在己,可胜在敌。故善战者,能为不可胜,不能使敌之必可胜。故曰:胜可知,而不可为。
80 2
【亿级数据专题】「分布式消息引擎」 盘点本年度我们探索服务的HA高可用解决方案
|
2月前
|
存储 Oracle 关系型数据库
分布式事物【Seata实现、下载启动Seata服务、搭建聚合父工程构建】(四)-全面详解(学习总结---从入门到深化)
分布式事物【Seata实现、下载启动Seata服务、搭建聚合父工程构建】(四)-全面详解(学习总结---从入门到深化)
45 0
|
3月前
|
消息中间件 存储 Java
【亿级数据专题】「分布式消息引擎」 盘点本年度我们探索服务的低延迟可用性机制方案实现
在充满挑战的2023年度,我们不可避免地面对了一系列棘手的问题,例如响应速度缓慢、系统陷入雪崩状态、用户遭受不佳的体验以及交易量的下滑。这些问题的出现,严重影响了我们的业务运行和用户满意度,为了应对这些问题,我们所在团队进行了大量的研究和实践,提出了低延迟高可用的解决方案,并在分布式存储领域广泛应用。
43 2
【亿级数据专题】「分布式消息引擎」 盘点本年度我们探索服务的低延迟可用性机制方案实现
|
3月前
|
Cloud Native Java 开发工具
云原生 阿里云分布式文件系统 对象存储OSS 服务配置
【1月更文挑战第8天】云原生 阿里云分布式文件系统 对象存储OSS 服务配置

热门文章

最新文章