分布式锁服务-debby设计与实现.pptVIP

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
分布式锁服务 --debby的设计与实现 Ifox小组:单栋栋,赵东升, 樊 楷,苏 飞 主要内容 Debby系统整体设计 服务器端设计与实现 数据存储的设计与实现 客户端设计与实现 容错日志 paxos 的设计与实现 系统的整体结构 Debby server实现 服务器和客户端的通信 一致性的保证 文件、目录的实现 Session的实现 事件(Event)管理的实现 SnapShot 服务器和客户端的通信 用户调用客户端库于服务器通信 通过ICE远程过程调用实现 提供的接口 connect, close, keepAlive,addEvent getData, setData, create, mkdir, remove, isDir, exists ... 服务器一致性的保证 调用底层Paxos协议 对文件的操作时,把操作提交给Paxos Paxos保证在3台服务器上操作的一致性 Paxos提供的接口 sendProposal ? Session 的实现 服务器维护一个Debby管理器 Session通过KeepAlive来保证 每个KeepAlive会捎带事件信息 KeepAlive:客户端等待,服务器受到请求立即返回 文件、目录的实现 文件、目录放在内存 常规文件系统和临时文件系统 常规文件系统 map path, debbyfile MemDir 用tree.hh实现 临时文件系统 map handle, path list 事件管理的实现 Debby维护了一个事件管理器 已注册的事件和已发生的事件 对于已注册的事件,系统维护一个事件到handle列表的map 当心跳发生时,将发生的事件返回给订阅的客户 SnapShot 只用log恢复服务器带来的问题: 日志将会越来越多 恢复时间越来越长 本系统采用snapshot 快照 机制解决此问题 SnapShot 将内存中的文件系统数据结构直接序列化到磁盘上 Snapshot过程执行成功后,比snapshot备份时间早的log信息不再需要,可通知paxos将log删除。 SnapShot SnapShot方法增加了额外的复杂性 实现SnapShot之前,crush掉的服务器只需从其他机器获得最近的log即可进行恢复。 实现SnapShot之后,需同时考虑log和snapshot信息。 SnapShot class SnapShot private static string DIR_PATH; public static void serialize MemDir md ; public MemDir void Unserialize ; Paxos Framework Implement for fault-tolerance log 单栋栋网络实验室 系统结构 Api for fault-tolerant log Paxos normal-case operation Paxos消息类型 ViewChangeMessage 选leader HeartBeatMessage leader租约 PrepareMessage 成leader前的内容同步 PrepareOKMessage ProposalMessage 提议 AcceptMessage LeaderElection 何时选leader 系统启动时 检测到当前leader宕机,并已过leader的租约 每次选leader都要提交一个全序的view号 View号的产生 两种选leader的方法 每台服务器只提自己当leader 可以提别的服务器为leader 我们的实现 PreparePhare Leader被选出后,由leader执行,并只执行一次 保证系统安全的过渡 Leader catch up ProposalPhare 由leader发起Proposal 两种proposal 同步proposal,客户提交决议后一直等待,直到决定被完成 有可以失败 异步proposal,客户提交决议后马上返回,paxos执行完决议后再通知客户 Proposal的限时,重发 消息的发送与接收 使用boost的asio库进行网络通讯 采用多播的方式 点对点的catch up使用TCP连接 接受消息使用异步socket 采用多线程 多类型的消息传输 实验 向paxos不停的提交proposal,让paxos到保证每台服务器数据的一致性 log 每台服务器都记log,并且同步写磁盘 对于一个proposal有1秒来还没答成一致,作提交失败处理 总共4组实验,每组各进行3次,每次5000个proposal 在单台机器上模拟

文档评论(0)

nnh91 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档