Google Chubby介绍

       首先,Chubby是什么?Chubby主要用于解决分布式一致性问题。在一个分布式系统中,有一组的Process,它们需要确定一个Value。于是每个Process都提出了一个Value,一致性就是指只有其中的一个Value能够被选中作为最后确定的值,并且当这个值被选出来以后,所有的Process都需要被通知到。这就是一致性问题。
       其次,它是一个粗粒度的分布式锁服务。本质上,Chubby是Google设计的提供粗粒度锁服务的文件系统,存储大量小文件。每个文件就代表一个锁。在GFS中,创建文件就是进行“加锁”操作,创建文件成功的那个server其实就是抢占到了“锁”。用户通过打开、关闭、读取文件来获取共享锁或者独占锁;并通过通信机制,向用户发送更新信息。一群机器需要选举master时,这些机器同时申请某个锁文件。成功获取锁得服务器当选主服务器,并在文件中写入自己的地址。其他服务器通过读取文件中的数据获取master的地址。其他分布式系统可以使用它对共享资源的访问进行同步。同时这种锁服务是建议性的,而非强制性的,这样能带来更大的灵活性。
       Chubby的设计目标基于以下几点:高可用性、高可靠性、支持粗粒度的建议性锁服务、支持小规模文件直接存储,这些当然是拿高性能与存储能力tradeoff来的。
       图1是Chubby的整体架构,容易看出几点。一,Chubby共有5台服务器,其中一个是master,客户端与服务器之间使用RPC交互。我们会问,其他服务器是干什么的?没错,它们纯粹是作为master挂掉后的替代品。Zookeeper的多余服务器均是提供就近服务的,也就是,服务器会根据地理位置与网络情况来选择对哪些客户端给予服务。Chubby的这些Replica并不能提供这类服务。由此可见,Google佬的东西我们也不应该什么都盲目崇拜。Google也坦言,在设计Chubby时是战战兢兢的,生怕master挂掉就大手笔准备了5台。

图2是Client与Chubby的通信协议。Keep Alive是周期性发送的一种消息,它有两方面功能:延长租约有效期,携带事件信息告诉客户端更新。事件包括:文件内容修改、子节点增删改、Master出错等。正常情况下,租约会由Keep Alive一直不断延长。这里我将图2中涉及的情况作适当阐述。如果C1在没用完租约期时发现还需使用,便发送锁请求给Master,Master给它Lease-M1;C2在租约期过了后,发送锁请求给Master,可是没收到Master的回答。其实此刻Master已经挂了,于是Chubby进入宽限期,在这期间Chubby要选举出新的Master。论文里对于这段时期有个更形象的名字—Grace Period,群龙无首的河蟹阶段呵呵。在选举出Master后,新老大下令前老大的发的Lease失效,大家必须申请一份新的。然后C2获得了Lease-M2。C3又恢复到正常情况。在图2中的4、5、6、7、8是通过Paxos算法选举Master的颤抖期。在此期间,最有可能产生问题,Amazon的分布式服务就曾因此宕机,导致很长时间service unavailable。

最后想说的是,大部分系统都是靠在实践中运行很长一段时间才能谨慎的表示,目前系统已经基本没有发现大的问题了。Yahoo!开源的ZooKeeper是一个开源的类Paxos实现。它的编程接口看起来很像一个可提供强一致性保证的分布式小文件系统。但是,ZooKeeper并不是遵循Paxos协议,而是基于自身设计并优化的一个2 phase commit的协议,因此它的理论并未经过完全证明。要证明分布式容错算法的正确性通常比实现算法还困难,Google没法证明Chubby是可靠的,Yahoo!也不敢保证它的ZooKeeper理论正确性。

Google Chubby介绍相关推荐

  1. Google Megastore介绍

    Google Megastore介绍 概述 策略对比 异步主从 Asynchronous Master/Slave 同步主从 Synchronous Master/Slave 乐观复制 Optimis ...

  2. 《Google软件测试之道》- Google软件测试介绍

    <Google软件测试之道>- Google软件测试介绍 2015-05-21 目录 1 质量与测试   2 角色   3 组织结构   4 爬.走.跑   5 测试类型   相关链接 与 ...

  3. Zookeeper和 Google Chubby对比分析

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt375 随着云计算的推广,云平台的设计和实现越来越复杂,很多系统属性如一致性和 ...

  4. 开源C++单元测试框架Google Test介绍

    开源C++单元测试框架Google Test介绍 Google Test Google test是针对c/c++的开源测试项目.采用的协议是BSD license,有很多著名的开源项目采用了它,包括C ...

  5. Google Guava介绍

    Google Guava介绍 Google Guava是Google的java项目广泛依赖的核心库,其功能强大并且高效稳定,我们日常企业开发或学习也可以参考和借鉴Guava.其对集合Collectio ...

  6. Google InceptionNet介绍

    Google InceptionNet介绍 1 简要概括 Google InceptionNet出现在ILSVRC2014年的比赛中(和VGGNet同年),并以较大优势夺得了第一名的成绩,它的top5 ...

  7. Android AR开发实践之二: Google ARCore介绍

    Android AR开发实践之二: Google ARCore介绍 一.ARCore介绍 二.ARCore工作原理 三.ARCore基本概念 四.ARCore渲染技术 使用OpenGL渲染 使用Sce ...

  8. Google优化介绍 价格标准

         网站设计首页 | 网络产品&方案 | 网站建设 | 办公系统平台 | 网站推广 | 电子商务 | 招聘代理 | 帮助中心 | 关于公司 | 联系我们 代 理 登 录 帐 号 密 码 ...

  9. Google Chubby 论文翻译

    目录 摘要 1 介绍 2 设计 3 扩展机理 4 实际应用,意外和设计错误 5 与相关工作的比较 6 总结 7 感谢 松耦合分布式系统的锁服务 Chubby 摘要 我们描述了我们使用 Chubby 锁 ...

最新文章

  1. ubuntu 18.04.4 安装 bazel
  2. 记一次网络问题的排查
  3. SMOTE 过采样的API使用
  4. 使用canvas绘制圆形进度条
  5. php字符串中有特殊符号怎么处理,PHP字符串中特殊符号的过滤方法介绍
  6. java:final,finally,finalize区别
  7. Oracle中rank() over, dense_rank(), row_number() 的区别
  8. MySQL怎么打开explain_MySQL干货之-利用EXPLAIN优化查询
  9. K Co-prime Permutation 构造,gcd,互质(2020.12.南京)
  10. 什么是Eureka注册中心
  11. Windows2003 安装AD失败,未能为域创建GPO,出现了扩展错误 的解决方法
  12. linux操作系统的体系结构
  13. IE11 0x2ee4 bug 以及类似问题解决方法
  14. 一个复杂注塑件抽取中面一般操作
  15. 小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖
  16. 二叉树的基本概念以及性质
  17. H5及微信小程序实测可用——监听手机返回键操作
  18. docker 安装 postgresql
  19. tiri单片机_51单片机的SCON寄存器与C程序解析
  20. JavaJSP调用JavaScript方法

热门文章

  1. java中logger_Java日志系统---Logger之简单入门
  2. 程序员的几个等级,你属于哪个等级呢?
  3. 老站长的一些丰富知识,怎么样可以做好阿里、腾讯交互设计工作呢
  4. 额叶-小脑连接介导认知加工速度
  5. NCD 2019题解M. NCD Salary【数学式子处理】
  6. 约束优化内罚函数c语言程序,外点、内点和混合罚函数法(最优化3)
  7. win与iPhone/ipad共享文件夹,用本地账户/微软账户提示账户无效解决办法
  8. 微信小程序解析HTML标签
  9. 【R语言-生存分析之观察生存率计算】
  10. 撕裂者3990x参数 撕裂者3990x配什么主板