文章目录

  • 一、概念
  • 二、用途
  • 三、体系结构
  • 四、文件结构
  • 五、访问接口
  • 六、一致性

一、概念

提供存储服务并为其他基础设施(GFS和Bigtable) 提供协调服务

  • GFS使用Chubby选取master服务器,Bigtable使用chubby指定master服务器并发现、控制相关的子表服务器。

提供粗粒度的分布式锁

  • Advisory lock,不是mandatory lock
  • 锁持有时间可以长达几天

提供一个文件系统,为小文件提供可靠存储,补充GFS提供的服务做Google内部的名字服务
核心服务:提供分布式共识解决方案

  • 其他服务从这一服务衍生
    通常一个数据中心运行一个chubbycell (服务实例)

二、用途

Google没有直接实现包含Paxos算法的函数库来保持数据一致性,而是设计实现了锁服务Chubby

  • 单独的锁服务可以保证原有系统架构不发生改变
  • 避免应大量系统组件之间的事件通信导致的系统性能下降
    ➢系统中很多事件的发生需要告知其它用户和服务器,使用基于文件系统的锁服务可以将变动写入文件,从而需要了解变动的用户和服务器直接访问文件,
  • 相比一致性算法,基于锁的开发接口容易被开发者接受
  • 单独的锁服务使用一台服务器可以保证高可用性
    ➢实现chubby服务采用多台服务器实现高可用性,而外部用户则需一台服务器保证高可用性
  • Chubby采用建议性锁而不是强制性锁
    ➢当用户访问拥有锁的文件时,强制性锁阻止访问,而建议性锁不会阻止。

三、体系结构

两个部分: client和server, 通过RPC通信

  • 客户端每个客户有一个Chubby library,客户端应用调用这个库中的函数
  • 服务端称作Chubbycell,通常由5个副本组成,其中一个副本被指定为主副本(master),并且一段时间只有一个master。
    ➢这段时间成为master lease

每个副本维护一个小型数据库,管理Chubby命名空间中的实体,即目录和锁

数据库的一致性使用底层的共识协议、(Paxos算法)实现

基于操作日志

支持创建快照snapshots (在给定时间点上完整的系统状态)

四、文件结构

  • Chubby提供基于文件系统的抽象,每一个数据对象是一个文件,文件组织成层次的命名空间,采用目录结构,所有操作在文件的基础上完成

  • Chubby的名字空间结构类似于文件系统,这样就使得可以为应用提供特定的API,也可以使用他文件系统的接口,例如GFS

  • 文件系统与Unix文件系统类似,文件名形式: /s/chubby_ cell/directory_ name/–/file_ name
    ➢Is指锁服务lock service, 指明是chubby系统的一部分
    ➢Chubby_ cell 是chubby系统的一个特定实例的名字

  • 名字空间由文件和目录组成,统称为node。每个node在一个Chubby cell单元中只有一个名称与之关联。

  • 实现时,文件系统由多个节点组成,分为永久型和临时型,每个节点是一个文件或目录,包含元数据,三个访问控制列表(ACLs):用于控制读、写操作及修改节点的访问控制列表(ACL)。

  • 每个节点的元数据还包含4个严格递增的64位数字,通过它们客户端可以很方便的检测出变化
    ●实例号
    ●内容生成号
    ●锁生成号
    ●ACL生成号

五、访问接口

六、一致性

  • Chubby cell有5个副本,通过选举产生主服务器(主副本),存在一致性问题, 采用Paxos算法
  • 客户端所有读写操作由主服务器负责完成,写操作面临数据一致性,采用Paxos算法

数据库SQL(十二):分布式锁服务Chubby相关推荐

  1. 《云计算》学习笔记3——Google的云计算原理与应用(分布式锁服务——Chubby)

    一.分布式锁服务 今天,要接触有些难理解的知识点了,这也许就是涉及到当时赵致琢老师强调的在中国没人能有资格讲和讲得清的一块-分布式算法.说实话,这块看了两遍了,到现在还不敢说自己人懂了一半啊·! Ch ...

  2. springboot(十二)-分布式锁(redis)

    什么是分布式锁? 要介绍分布式锁,首先要提到与分布式锁相对应的是线程锁.进程锁. 线程锁:主要用来给方法.代码块加锁.当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段.线程锁只在同一 ...

  3. [论文笔记] Chubby 分布式锁服务

    开篇作者主要介绍了谷歌内部的分布式锁服务 Chubby,可以在分布式环境下提供粗粒度的锁服务,可在大规模小型机器组成的松耦合分布式系统中实现同步.存储元数据.拓扑结构或者配置信息等功能. 谈到如何实现 ...

  4. Zookeeper分布式一致性原理(三):Chubby分布式锁服务

    1. Chubby Google Chubby 是一个大名鼎鼎的分布式锁服务,GFS和Big Table等大型系统都用他来解决分布式协作.元数据存储和Master选择等一系列与分布式锁服务相关的问题. ...

  5. chubby分布式锁服务概述

    分布式锁与chubby 分布式锁,是控制分布式系统之间同步访问共享资源的一种方式.Chubby是一种面向松耦合的分布式系统的锁服务,通常用于为一个由适度规模的大量小型计算机构成的的松耦合的分布式系统提 ...

  6. 用数据库实现了一个分布式锁,虽简陋,但能用!

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 后台回复"k8s",可领取k8s资料 以前参加过一个库 ...

  7. [转载] zookeeper 分布式锁服务

    转载自http://www.cnblogs.com/shanyou/archive/2012/09/22/2697818.html 分布式锁服务在大家的项目中或许用的不多,因为大家都把排他放在数据库那 ...

  8. zookeeper 分布式锁服务

    分布式锁服务在大家的项目中或许用的不多,因为大家都把排他放在数据库那一层来挡.当大量的行锁.表锁.事务充斥着数据库的时候.一般web应用很多的瓶颈都在数据库上,这里给大家介绍的是减轻数据库锁负担的一种 ...

  9. springboot mysql行锁_SpringBoot基于数据库实现简单的分布式锁

    本文介绍SpringBoot基于数据库实现简单的分布式锁. 1.简介 分布式锁的方式有很多种,通常方案有: 基于mysql数据库 基于redis 基于ZooKeeper 网上的实现方式有很多,本文主要 ...

最新文章

  1. TCP端口状态说明ESTABLISHED、TIME_WAIT、 CLOSE_WAIT
  2. 关于数据库优化1——关于count(1),count(*),和count(列名)的区别,和关于表中字段顺序的问题...
  3. 使用jstack 发现死锁
  4. Java编译器、JVM、解释器
  5. 商品领域ddd_DDD领域驱动实战 - 限界上下文(bounded context)
  6. 【C++】38.类成员变量声明为 对象与指针的区别
  7. 服务器上有图片但是app不显示不出来,网络app图片显示不出来的
  8. 回顾JAVA---1.概述及基本语法
  9. 图灵机器人调用数据恢复_机器人也能撩妹?python程序员自制微信机器人,替他俘获女神芳心...
  10. Python中用字典的映射来代替switch语句
  11. zookeeper简单命令
  12. Java-GuardedBlocks与BusyWaitting忙等待
  13. windows删除「WIN+R」的历史记录
  14. golang 程序休眠_golang package time的用法具体详解
  15. 翻译《Git版本控制管理》
  16. python读取TXT、CSV、xml
  17. android studio adb 连接mumu 模拟器
  18. 链家租房-深圳租房分析(2/2)数据分析
  19. Centos系统如何开启关闭防火墙
  20. Coding life,云栖社区的个性化首页上线

热门文章

  1. Kooboo完全介绍二:创建第一个Kooboo站点
  2. 搭建全分布式集群全过程
  3. 火云开发课堂 - 《Shader从入门到精通》系列 第十节:在Shader中实现模糊滤镜
  4. redhat linux支持的文件系统,在RedHat Linux上使用LVM管理磁盘并创建文件系统
  5. matlab画矩形窗的频域图,矩形窗的频谱泄露
  6. matplotlib显示汉字和负号
  7. c++分布式游戏服务器架构设计
  8. c语言取消注释,实现去除c语言注释的小工具
  9. Python基础《扑克牌游戏》
  10. win10解决SQL 2008安装出现属性不匹配问题