The Chubby lock service for loosely-coupled distributed systems

我们描述了自己使用Chubby锁服务的经历,该服务旨在为松耦合的分布式系统提供粗粒度锁和可靠(但容量较小)的存储。Chubby提供了一个很像分布式文件系统的接口,带有建议锁,但是设计重点是可用性和可靠性,而不是高性能。该服务的许多实例已经使用了一年多,其中几个实例分别处理数万个客户机。本文描述了最初的设计和预期的用途,将其与实际用途进行了比较,并解释了如何修改设计以适应差异

1 Introduction

本文描述了一种名为Chubby的锁服务。它的目的是在一个松散耦合的分布式系统中使用,该系统由中等数量的小型机器通过高速网络连接而成。例如,一个Chubby实例(也称为Chubby单元)可能服务于通过1Gbit/s以太网连接的10,000台4处理器机器。

锁服务的目的是允许它的客户机同步它们的活动,并就它们的环境的基本信息达成一致。主要目标包括可靠性、对较大客户的可用性和易于理解的语义;吞吐量和存储容量被认为是次要的。Chubby的客户端接口类似于一个简单的文件系统,它执行整个文件的读写操作,并增加了咨询锁和文件修改等各种事件的通知

我们希望Chubby能够帮助开发人员处理系统内的粗粒度同步,特别是处理从一组其他情况下相同的服务器中选择一个leader的问题.   谷歌文件系统[7]使用Chubby锁指定GFS主服务器,Bigtable[3]使用Chubby锁的方式有几种:选择一个主服务器,允许主服务器发现它控制的服务器,允许客户端找到主服务器。此外,GFS和Bigtable都使用Chubby作为一个众所周知的可用位置来存储少量元数据;实际上,他们使用Chubby作为他们分布式数据结构的根。一些服务使用锁在多个服务器之间划分工作(粗粒度)。

在部署Chubby之前,谷歌上的大多数分布式系统都使用特别的方法进行初选(当工作可以重复而不会造成损害时),或者需要操作人员干预(当正确性至关重要时)。在前一种情况下,查比在计算方面节省了一点精力。在后一种情况下,它在系统的可用性方面取得了显著的改善,不再需要人为的故障干预。

熟悉分布式计算的读者会认识到,对等体之间的primary节点的选择是分布式共识问题的一个实例,并意识到我们需要一个使用异步通信的解决方案;这个术语描述了绝大多数真实网络的行为,如以太网或Internet,它们允许数据包丢失、延迟和重新排序。事实上,我们到目前为止遇到的所有用于异步共识的工作协议都以Paxos为核心Paxos在没有时间假设的情况下维持安全,但必须引入时钟以确保活动;这克服了菲舍尔等人的不可能性结果。创造Chubby是一项工程工作,需要满足上述需求;这不是研究。我们声称没有新的算法或技术。本文的目的是描述我们做了什么以及为什么做,而不是提倡它。

2 Design

2.1 Rationale

有人可能会说,我们应该建立一个包含Paxos的库,而不是一个访问集中锁服务的库,即使是一个高度可靠的库。客户端Paxos库将不依赖其他服务器(除了名称服务),并且将为程序员提供一个标准框架,假设他们的服务可以作为状态机实现。事实上,我们提供了这样一个独立于Chubby的客户端库。

 然而,锁服务比客户端库有一些优势。首先,我们的开发人员有时没有按照人们希望的方式计划高可用性通常,他们的系统一开始是原型,负载很小,可用性保证松散;通常,代码都没有经过专门的结构以适应一致的协议。随着服务的成熟和获得客户端,可用性变得更加重要;然后将复制和主选择添加到现有设计中。虽然这可以通过提供分布式共识的库来实现,但锁服务器使维护现有程序结构和通信模式变得更容易。例如,要选择一个master,然后写入一个现有的文件服务器,只需要添加两个语句和一个RPC参数到现有的系统:可以获取一个锁成为主锁,通过写RPC传递一个额外的整数(锁获取计数),并向文件服务器添加一个if-statement,如果获取计数低于当前值(以防止延迟的包),则拒绝写操作。我们发现这种技术比让现有的服务器参与共识协议更容易,尤其是在过渡期间必须保持兼容性的情况下。

2.2 System structure

Chubby有两个通过RPC进行通信的主要组件:一个服务器,一个客户端应用程序链接的库;参见图1。Chubby客户端和服务器之间的所有通信都由客户端库作为中介。可选的第三个组件,代理服务器。

Chubby单元由一组称为副本的服务器(通常是5个)组成,放置这些服务器是为了减少相关故障的可能性(例如,在不同的机架中)。副本使用分布式共识协议来选择一个主节点;主服务器必须获得大多数副本的投票,并承诺这些副本在几秒钟的间隔内不会选举一个不同的主服务器,称为主租赁。如果主租赁继续赢得多数选票,复制品会定期更新主租赁。

The Chubby lock service for loosely-coupled distributed systems相关推荐

  1. The Chubby lock service for loosely-coupled distributed systems 论文阅读笔记

    The Chubby lock service for loosely-coupled distributed systems 论文阅读笔记 特点:高可靠.高可用.粗粒度锁服务.小文件存储 主要用于高 ...

  2. 《The Chubby lock service for loosely-coupled distributed systems》论文阅读

    参考链接如下 https://catkang.github.io/2017/09/29/chubby.html https://zhuanlan.zhihu.com/p/64554506 设计目的 提 ...

  3. 论文阅读笔记 - Chubby: The Chubby lock service for loosely-coupled distributed systems

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  4. 《The Chubby lock service for loosely-coupled distributed systems》阅读笔记

    Chubby架构 一个Chubby的cell一般由5个节点组成,并利用Paxos算法选举出一个master节点,客户端通过chubby库和master节点通信.Chubby内部维护了一个文件系统,文件 ...

  5. Distributed Systems笔记-Web Service Design Patterns

    CMU 95702 Distributed Systems 笔记.简单介绍 XML-RPC.SOAP.REST 三种 web 服务实现方案以及 RPC.Message.Resource 三种 patt ...

  6. Building Loosely Coupled and Scalable RESTful Services using Orleans

    These days, I'm working on Orleans and Actor-based systems as I mentioned in my post titled "Ov ...

  7. Loosely Coupled: The Missing Pieces of Web Services

    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版.作者信息和本声明.否则将追究法律责任. http://blog.csdn.net/topmvp - topmvp Buildin ...

  8. Scalable, Distributed Systems Using Akka, Spring Boot, DDD, and Java--转

    原文地址:https://dzone.com/articles/scalable-distributed-systems-using-akka-spring-boot-ddd-and-java Whe ...

  9. Distributed Systems笔记-middlewares

    CMU 95702 Distributed Systems 笔记.简单介绍分布式系统中解决 interoperability concern 的几种方案 Cobra's CDR, Java seria ...

最新文章

  1. 坚果3“凉了”,罗永浩只提了一次人工智能
  2. 马斯克刚失了一枚大火箭!
  3. 数据中心液体冷却技术的“机架经济学”
  4. JS实现限制input上传文件的大小和格式
  5. CVPR 2019 GCT:《Graph Convolutional Tracking》论文笔记
  6. 《数据库原理与应用》(第三版)第 1 章 数据库概述 习题参考答案
  7. 微软Azure AspNetCore微服务实战第2期(内附PPT下载)
  8. .NET平台微服务项目汇集
  9. matlab里输出恒压的逆变器,基于IGBT逆变器的异步电机变频调速系统的MATLAB仿真...
  10. HT68F30控制5150 IIC控制总线
  11. webpack使用优化(基本篇
  12. linux计算圆周率程序,科学网—[转载]关于Linux中使用bc命令计算圆周率(π):可以计算上千位或上万位,顺便评测CPU的计算能力 - 张成岗的博文...
  13. MongoDB学习笔记(查询)
  14. Windows:Win10 Dell笔记本禁用触摸板
  15. Maven 环境变量配置
  16. 初学JavaScript之颜色小游戏
  17. OriginPro8.5画双柱状图
  18. 小米路由器3c 虚拟服务器,小米路由器3C上不了网怎么办?
  19. 安装TensortFlow并配置到PyCharm中
  20. Lab1过程及心得体会

热门文章

  1. canvas制作的海报在app上变形
  2. ChatGPT:一个人机环境系统交互的初级产品
  3. JAVA泛型学习demo代码
  4. unity RectTransform的参数设置
  5. 思科ACL访问控制列表常规配置
  6. MATLAB使用readtable读取首行变量名失败
  7. 摒弃传统观念,展现女性德才
  8. 带有头节点单链表,带有头节点单链表逆置的四种方法
  9. ANTD react 手机号(验证码)登陆 + 账号登陆(图形验证码)
  10. 简单的局域网内PING的过程+几种PING不通的情况