`

分布式锁服务器

 
阅读更多

在分布式系统中如何设计和实现一套可靠的分布式锁服务机制一直是非常令人头痛的问题。Google在论文The Chubby lock service for loosely-coupled distributed systems 中,描述一个粗粒度的锁服务系统- Chubby

1.   Chubby能够干什么呢

根据Google论文提到的,Chubby系统在Google的分布式开发环境中扮演重要作用。Chubby系统让客户端进行同步并且协调配置环境,方便程序员进行分布式系统中一致性服务的开发。例如,GoogleGFS系统直接使用chubby选取主服务器;GoogleBigTable中使用chubby完成主服务选取、用户发现、表格锁服务等;软件开发者使用chubby粗粒度的分配任务;在编写并发程序时,使用chubby提供的共享锁或者独占锁,保证数据的一致性。

可见,Chubby的使用范围远远超过了分布式锁的初始开发用途,已经成为Google的基础软件架构之一,大致总结一下,包括以下几个方面:

1.挑选主控机。无论GFSBigTable系统都是由Chubby来挑选主控机,防止单点故障。从机制上说,这套系统的可靠性和可用性已经远远超过当前比较流行的Linux HAdrbd、双机热备等机制。

2.名字服务器。Chubby可以管理整个应用空间的名字,用作分布式系统的名字服务器是最容易不过的事情。

3.分布式锁。这是Chubby初始的设计用途。

2.   Chubby的性能怎么样

Chubby系统提供粗粒度(coarse-grained)而非细粒度(fine-grained)的锁服务,并且基于松耦合分布式系统设计可靠的存储。Chubby系统提供建议性的锁,而不是强制性的锁;强调锁服务的可用性、可靠性。Chubby系统在RAM中存储数据,并同步到磁盘上,支持大规模用户访问文件;客户端通过缓存数据,减少对主服务器的访问量。为了方便用户,使用一致性缓存。主服务器通过通报机制,定期向客户端发送更新消息。

一个标准的Chubby集群由5个节点组成,其中一个是主控机,任何一个节点都可以随时接替主控机的工作。根据Google论文中的数据,一个Chubby集群曾经管理90000个客户端组成的服务器集群平稳运行了2年的时间,性能基本不存在大的问题。

3.   3.Chubby是怎么实现的

Chubby系统本质上是一个分布式的文件系统,存储大量的小文件。每一个文件就代表了一个锁,并且保存一些应用层面的小规模数据。用户通过打开、关闭和读取文件,获取共享锁或者独占锁;并且通过通信机制,向用户发送更新信息。例如,当一群机器选举mater时,这些机器同时申请打开某个文件,并请求锁住这个文件。成功获取锁的服务器当选主服务器,并且在文件中写入自己的地址。其他服务器通过读取文件中的数据,获得主服务器的地址信息。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics