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

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

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

一个决议的阶段

  • 准备阶段
  • 批准阶段

参考文献

相关文章
|
7月前
|
监控 负载均衡 Cloud Native
ZooKeeper分布式协调服务详解:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析ZooKeeper分布式协调服务原理,涵盖核心概念如Server、Client、ZNode、ACL、Watcher,以及ZAB协议在一致性、会话管理、Leader选举中的作用。讨论ZooKeeper数据模型、操作、会话管理、集群部署与管理、性能调优和监控。同时,文章探讨了ZooKeeper在分布式锁、队列、服务注册与发现等场景的应用,并在面试方面分析了与其它服务的区别、实战挑战及解决方案。附带Java客户端实现分布式锁的代码示例,助力提升面试表现。
598 2
|
7月前
|
监控 负载均衡 Dubbo
|
7月前
|
消息中间件 算法 Java
【亿级数据专题】「分布式服务框架」 盘点本年度我们探索服务的保障容量的三大关键方案实现
【亿级数据专题】「分布式服务框架」 盘点本年度我们探索服务的保障容量的三大关键方案实现
239 0
|
2月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
88 3
|
4月前
|
存储 监控 负载均衡
检索服务elasticsearch分布式结构
【8月更文挑战第22天】
50 3
|
3月前
|
数据采集 分布式计算 MaxCompute
MaxCompute 分布式计算框架 MaxFrame 服务正式商业化公告
MaxCompute 分布式计算框架 MaxFrame 服务于北京时间2024年09月27日正式商业化!
100 3
|
7月前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
299 0
|
6月前
|
消息中间件 传感器 Cloud Native
事件驱动作为分布式异步服务架构
【6月更文挑战第25天】本文介绍事件驱动架构(EDA)是异步分布式设计的关键模式,适用于高扩展性需求。EDA提升服务韧性,支持CQRS、数据通知、开放式接口和事件流处理。然而,其脆弱性包括组件控制、数据交换、逻辑关系复杂性、潜在死循环和高并发挑战。EDA在云原生环境,如Serverless,中尤其适用。
210 2
事件驱动作为分布式异步服务架构
|
4月前
|
Java 应用服务中间件 数据库
SpringCloud:服务保护和分布式事务详解
SpringCloud:服务保护和分布式事务详解
134 0