浅谈分布式锁服务——以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只接受它得到的第一个决议

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

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

一个决议的阶段

  • 准备阶段
  • 批准阶段

参考文献

相关文章
|
2月前
|
监控 负载均衡 Cloud Native
ZooKeeper分布式协调服务详解:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析ZooKeeper分布式协调服务原理,涵盖核心概念如Server、Client、ZNode、ACL、Watcher,以及ZAB协议在一致性、会话管理、Leader选举中的作用。讨论ZooKeeper数据模型、操作、会话管理、集群部署与管理、性能调优和监控。同时,文章探讨了ZooKeeper在分布式锁、队列、服务注册与发现等场景的应用,并在面试方面分析了与其它服务的区别、实战挑战及解决方案。附带Java客户端实现分布式锁的代码示例,助力提升面试表现。
437 2
|
2月前
|
监控 负载均衡 Dubbo
|
2月前
|
消息中间件 算法 Java
【亿级数据专题】「分布式服务框架」 盘点本年度我们探索服务的保障容量的三大关键方案实现
【亿级数据专题】「分布式服务框架」 盘点本年度我们探索服务的保障容量的三大关键方案实现
207 0
|
2月前
|
Dubbo Java 应用服务中间件
Spring Boot Dubbo 构建分布式服务
Spring Boot Dubbo 构建分布式服务
103 0
|
2月前
|
消息中间件 存储 负载均衡
【亿级数据专题】「分布式消息引擎」 盘点本年度我们探索服务的HA高可用解决方案
昔之善战者,先为不可胜,以待敌之可胜。不可胜在己,可胜在敌。故善战者,能为不可胜,不能使敌之必可胜。故曰:胜可知,而不可为。
230 2
【亿级数据专题】「分布式消息引擎」 盘点本年度我们探索服务的HA高可用解决方案
|
20天前
|
消息中间件 传感器 Cloud Native
事件驱动作为分布式异步服务架构
【6月更文挑战第25天】本文介绍事件驱动架构(EDA)是异步分布式设计的关键模式,适用于高扩展性需求。EDA提升服务韧性,支持CQRS、数据通知、开放式接口和事件流处理。然而,其脆弱性包括组件控制、数据交换、逻辑关系复杂性、潜在死循环和高并发挑战。EDA在云原生环境,如Serverless,中尤其适用。
42 2
事件驱动作为分布式异步服务架构
|
2月前
|
存储 算法
服务中一个简单的分布式系统
【5月更文挑战第21天】本文介绍一个分布式算法,旨在解决高速和低速网络环境下进程间保持相同通信频率的问题。算法通过frequencyEpoch防止过时信息导致无效切换,确保只有在多数节点检测到当前频率嘈杂时才会切换。
30 0
服务中一个简单的分布式系统
|
2月前
|
存储 Oracle 关系型数据库
分布式事物【Seata实现、下载启动Seata服务、搭建聚合父工程构建】(四)-全面详解(学习总结---从入门到深化)
分布式事物【Seata实现、下载启动Seata服务、搭建聚合父工程构建】(四)-全面详解(学习总结---从入门到深化)
63 0
|
1月前
|
存储 监控 负载均衡
Zookeeper 详解:分布式协调服务的核心概念与实践
Zookeeper 详解:分布式协调服务的核心概念与实践
28 0