- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于分布式系统的粗粒度锁服务Chubby
丁嵩、王靖轩、董嵬、蒋竞
{dingsong,wjx,dongwei,jiangjing@}
摘要
本文设计并实现提供粗粒度的锁服务Chubby松耦合分布式系统可靠的存储。服务的参数,而不建立并服务Chubby系统提供粗粒度的锁服务,松耦合分布式系统设计可靠的存储。Chubby系统让客户端进行同步并且协调配置环境,方便程序员进行分布式系统中一致性服务的开发。例如,google的GFS系统直接使用chubby选取主服务器;google的bigtable中使用chubby完成主服务选取、用户发现、表格锁服务等;软件开发者使用chubby粗粒度的分配任务;在编写并发程序时,使用chubby提供的共享锁或者独占锁,保证数据的一致性。
Chubby系统本质上是一个分布式的文件系统,存储大量的小文件。每一个文件就代表了一个锁,保存一些应用层面的数据。例如,选举,这些机器打开某个文件锁获锁的主服务器,文件中写入的地址。[1]中,使用Paxos[2][3][4]保证备份的一致性。我们使用ICE[5]来实现异步方法调用、分派,以保证服务器端数据的一致性。下面简单介绍ICE:
ICE是“一种现代的面向对象中间件,可用于替代像CORBA或COM/DCOM/COM+这样的中间件。在易于学习的同时,它为各种有着苛刻的技术要求的应用提供了强大的网络基础设施。Ice面向对象的规范语言易于使用的C++和Java映射非常高效的协议,还可以进行协议压缩?异步方法调用(asynchronous??method??invocation异步方法分派(asynchronous??method??dispatch)动态的传输插TCP/IP和UDP/IP支持,以及基于SSL的安全性Ice防火墙解决方案,支持回调Chubby系统提供粗粒度的锁服务,松耦合分布式系统设计可靠的存储。每一个文件就代表了一个锁,保存一些应用层面的数据。例如,选举,这些机器打开某个文件锁获锁的主服务器,文件中写入的地址。松耦合分布式系统可靠存储服务的参数,而不建立并服务客户
3.3 整体架构
如图所示,Chubby系统通过远程过程调用,连接客户端和服务器这两个主要组件。客户端应用程序通过调用chubby代码库,申请锁服务并获取相关信息,同时通过租约保持同服务器的连接。Chubby服务器组一般由五台服务器组成。其中一台服务器担任主服务器,负责与客户端的所有通信。其他服务器不断和主服务器通信获得用户操作。Chubby服务器组的所有机器都会执行用户操作,并将相应的数据存放到文件系统,以防止主服务器出现故障导致数据丢失。
4 Chubby系统实现
在具体实现时,Chubby系统分为文件系统、客户端与主服务器通信、服务器间的一致性操作等模块。
4.1 文件系统
Chubby文件系统类似于简单的unix文件系统,方便程序员理解。Chubby文件系统不支持内部文件移动操作以及硬连接。在具体实现时,文件系统由许多Node(节点)组成,每个Node代表一个文件(FileNode)或许目录(DirNode)。
文件系统使用Berkeley DB来保存每个node的数据。具体来讲,建立一种类似于map的映射关系,其中的关键字是这个node的路径,数据则是要保存的内容。由于Berkeley DB要求数据是一段连续的内存,所以直接保存数据,而不能保存指针等。Chubby文件系统存储的数据主要包含用户的序列化操作和用户决策信息。我们希望设计一种可视化的日志,方便今后的调试。
文件系统函数的定义如下图所示:
函数名 功能 FileSystem() 新建一个文件系统,包括一个新的伯克利DB文件“filesystem.dat” FileSystem(const std::string db) 新建一个文件系统,并从伯克利DB文件“string db”初始化 CreateNewFile 在文件系统中新建文件,如果有路径的话系统会自动建立路径, ValidType是节点有效类型:临时、永久 Mkdir 在文件系统中建立路径,如果没有父路径则层叠建立,ValidType是节点的有效类型 Open 打开一个路径“可以是文件、目录节点”,返回一个FSHandle,无论如何都返回,需要查看FSHandle里的valid,如果是false,那么打开失败。另外,如果OpenType 被设置为OpenCreate,那么在被打开节点不存在时将自动建立一个,在被打开文件存在时返回失败。 ReadFile 读某个文件节点的内容,参数为该节点的路径名,从头取,写入ptr指向的内存空间(用户必须事先申请好内存空间) ReadDir 读某个目录节点的内容,参数为该节点的路径名。读取目录节点的返回结果是该
您可能关注的文档
最近下载
- 《城市轨道交通工程设计概算编制办法》(建标[2017]89号).pdf
- 建设工程技术支持方案(3篇).docx VIP
- 饲料企业生产成本控制.ppt VIP
- 首航加油加气站LNG加气项目职业病防护设施设计专篇资料性附件.pdf VIP
- 截渗墙工程施工方案(3篇).docx
- 数据资产入表全流程指南(92页 PPT).pptx VIP
- 新项目方法验证能力确认报告(固定污染源废气-烟气参数的测定HJT-397-2007).docx VIP
- 外国影视音乐 星球大战 课件高中音乐人音版(2019)必修 音乐鉴赏.pptx VIP
- 部编版八年级语文上册古诗文理解性默写练习.docx VIP
- 时间管理写ppt关于时间管理 内容.ppt VIP
有哪些信誉好的足球投注网站


文档评论(0)