版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
分布式锁服务的设计与实现第一页,共三十六页,编辑于2023年,星期日主要内容Debby系统整体设计服务器端设计与实现数据存储的设计与实现客户端设计与实现容错日志(paxos)的设计与实现第二页,共三十六页,编辑于2023年,星期日系统的整体结构第三页,共三十六页,编辑于2023年,星期日Debbyserver实现服务器和客户端的通信一致性的保证文件、目录的实现Session的实现事件(Event)管理的实现SnapShot第四页,共三十六页,编辑于2023年,星期日服务器和客户端的通信用户调用客户端库于服务器通信通过ICE远程过程调用实现提供的接口
connect,close,keepAlive,addEvent
getData,setData,create,mkdir,remove,isDir,exists...第五页,共三十六页,编辑于2023年,星期日服务器一致性的保证调用底层Paxos协议对文件的操作时,把操作提交给PaxosPaxos保证在3台服务器上操作的一致性Paxos提供的接口
sendProposal()第六页,共三十六页,编辑于2023年,星期日Session的实现服务器维护一个Debby管理器Session通过KeepAlive来保证每个KeepAlive会捎带事件信息KeepAlive:客户端等待,服务器受到请求立即返回第七页,共三十六页,编辑于2023年,星期日文件、目录的实现文件、目录放在内存常规文件系统和临时文件系统常规文件系统
map<path,debbyfile>
MemDir<INode>用tree.hh实现临时文件系统
map<handle,pathlist>第八页,共三十六页,编辑于2023年,星期日事件管理的实现Debby维护了一个事件管理器已注册的事件和已发生的事件对于已注册的事件,系统维护一个事件到handle列表的map当心跳发生时,将发生的事件返回给订阅的客户第九页,共三十六页,编辑于2023年,星期日SnapShot只用log恢复服务器带来的问题:日志将会越来越多恢复时间越来越长本系统采用snapshot(快照)机制解决此问题第十页,共三十六页,编辑于2023年,星期日SnapShot将内存中的文件系统数据结构直接序列化到磁盘上Snapshot过程执行成功后,比snapshot备份时间早的log信息不再需要,可通知paxos将log删除。第十一页,共三十六页,编辑于2023年,星期日SnapShotSnapShot方法增加了额外的复杂性实现SnapShot之前,crush掉的服务器只需从其他机器获得最近的log即可进行恢复。
实现SnapShot之后,需同时考虑log和snapshot信息。第十二页,共三十六页,编辑于2023年,星期日SnapShotclassSnapShot{privatestaticstringDIR_PATH;publicstaticvoidserialize(MemDir&md);publicMemDir&voidUnserialize();}第十三页,共三十六页,编辑于2023年,星期日DebbyClient00448161第十四页,共三十六页,编辑于2023年,星期日APIvoidcreate(conststring&path,boolephemeral)voidmkdir(conststring&path)voidremove(conststring&path)boolexists(conststring&path)boolisdir(conststring&path)vector<string>list(conststring&path)boollock(conststring&path,boolshare)voidrelease(conststring&path)stringread(conststring&path)voidwrite(conststring&path,conststring&content)voidregcb(conststring&path,EventTypee,shared_ptr<Callback>cb)voidclearcb(conststring&path)第十五页,共三十六页,编辑于2023年,星期日LockServerdon’tsupportlockdirectly,clientuseephemeralfiletoimplementlockservice.Whenclientobtainalockonfile,createfilename.lck~ephemeralfile.Iffilealreadyexists,serverwouldthrowaexception,andclientreturnsfailure.Whenclientreleasethelock,simplydeletethefile.第十六页,共三十六页,编辑于2023年,星期日Lock(2)Whenclientloseconnectionwithserver,ephemeralfileisdeleted,includingthoseindicatelocks,thuslocksisreleased.Topreventambiguity,userfileisnotallowedtoendwith“~”,sotheyareeasytobedifferentiatedfromfilesusedtoimplementlocks.第十七页,共三十六页,编辑于2023年,星期日EventsEventTypeEventCreatedEventRemovedEventChangedEventLockChangedEventArbitraryAlleventwouldapplyonbothdirectoriesandfiles第十八页,共三十六页,编辑于2023年,星期日Events(2)Allcallbacksaremanagedbyclient,whenacallbackisfirstregisteredonaevent,theclientregisterstheeventonmaster.Whenaclientreceivesaevent,itinvokeallcallbacksregisteredontheevent.Usercouldcancelallcallbacksonacertainpath,andclientwouldunregistereventsonserver.第十九页,共三十六页,编辑于2023年,星期日Event(3)ClientsupplyaCallbackclasstoimplementusecallback,itcontainsapurevirtualfunctionrun().UserimplementtheirownclassbasedonCallback,andimplementtherun()function.Usercouldsaveanynecessaryinformationintheclass.WhenclientinvokeaCallback,itcreateathreadtoinvoketherun()function.第二十页,共三十六页,编辑于2023年,星期日ChooseServerTherea5serverinadebbycell,whileonlyoneofthemisthemaster.ClientuseICEmulti-endpointsmechanismtofindtheonlymaster.Clientregistertheaddressofall5serverstoICE,andICEwilltryall5addressestoautomaticallyfindtherightserver,aslongasthereisonlyonemasteratonetime.第二十一页,共三十六页,编辑于2023年,星期日GracePeriodWhenthemasterelectionisgoingon,noserviceisavailable,andclientmustwaitfornewmastertobeelected.UseICEretrymechanismtoenablethisfunction,useindicatearetrytimeseriesinwhichICEwillretryconnection,forexample,[3,5,10].Weretryconnectionin[10,30,60]第二十二页,共三十六页,编辑于2023年,星期日PaxosFrameworkImplement
forfault-tolerancelog单栋栋10748200网络实验室第二十三页,共三十六页,编辑于2023年,星期日系统结构Apiforfault-tolerantlogFromPaxosmadelive第二十四页,共三十六页,编辑于2023年,星期日Paxosnormal-caseoperationclientrequetproposalacceptreply012相当于leader客户的两种提交方式:1.只能由leader接受请求并提交(我们的做法,chubby)2.所有服务器都可以接受请求,并把这些请求转给leader,由leader提交。(zookeeper)第二十五页,共三十六页,编辑于2023年,星期日Paxos消息类型ViewChangeMessage(选leader)HeartBeatMessage(leader租约)PrepareMessage(成leader前的内容同步)PrepareOKMessageProposalMessage(提议)AcceptMessage第二十六页,共三十六页,编辑于2023年,星期日LeaderElection何时选leader系统启动时检测到当前leader宕机,并已过leader的租约每次选leader都要提交一个全序的view号View号的产生两种选leader的方法每台服务器只提自己当leader可以提别的服务器为leader(我们的实现)第二十七页,共三十六页,编辑于2023年,星期日PreparePhareLeader被选出后,由leader执行,并只执行一次保证系统安全的过渡Leadercatchup第二十八页,共三十六页,编辑于2023年,星期日ProposalPhare由leader发起Proposal两种proposal同步proposal,客户提交决议后一直等待,直到决定被完成(有可以失败)异步proposal,客户提交决议后马上返回,paxos执行完决议后再通知客户Proposal的限时,重发第二十九页,共三十六页,编辑于2023年,星期日消息的发送与接收使用boost的asio库进行网络通讯采用多播的方式点对点的catchup使用TCP连接接受消息使用异步socket采用多线程多类型的消息传输第三十页,共三十六页,编辑于2023年,星期日实验向paxos不停的提交proposal,让paxos到保证每台服务器数据的一致性(log)每台服务器都记log,并且同步写磁盘对于一个proposal有1秒来还没答成一致,作提交失败处理总共4组实验,每组各进行3次,每次5000个proposal(在单台机器上模拟)3台(运行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 综合服务总包合同
- 标准代建招标文件样本
- 机房服务合同范本
- 防水材料出口合同
- 落户协助服务合同样本
- 市场营销外包合同协议模板
- 电脑供货合同样板
- 维修工程协议范本
- 消防泵房检测与性能提升合作协议
- 民工劳动报酬支付函
- 2024年度共享办公空间租赁合同2篇
- 《血气分析的临床应》课件
- 国家电投《新能源电站单位千瓦造价标准值(2024)》
- GB 1886.342-2021食品安全国家标准食品添加剂硫酸铝铵
- 部编版二年级下册语文拼音练习
- 《高压电动机保护》PPT课件.ppt
- 在全市油气输送管道安全隐患整治工作领导小组第一次会议上的讲话摘要
- 小学英语后进生的转化工作总结3页
- 定喘神奇丹_辨证录卷四_方剂树
- 不知不觉也是牛仔元老了转一篇日牛知识贴.doc
- 六年级上册数学单元测试第七单元检测卷∣苏教版
评论
0/150
提交评论