




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、分布式鎖服務的設計與實現第1頁,共36頁,2022年,5月20日,10點13分,星期一主要內容Debby系統整體設計服務器端設計與實現數據存儲的設計與實現客戶端設計與實現容錯日志(paxos)的設計與實現第2頁,共36頁,2022年,5月20日,10點13分,星期一系統的整體結構第3頁,共36頁,2022年,5月20日,10點13分,星期一Debby server實現服務器和客戶端的通信一致性的保證文件、目錄的實現Session的實現事件(Event)管理的實現SnapShot第4頁,共36頁,2022年,5月20日,10點13分,星期一服務器和客戶端的通信用戶調用客戶端庫于服務器通信通過IC
2、E遠程過程調用實現提供的接口connect, close, keepAlive,addEventgetData, setData, create, mkdir, remove, isDir, exists .第5頁,共36頁,2022年,5月20日,10點13分,星期一服務器一致性的保證調用底層Paxos協議對文件的操作時,把操作提交給PaxosPaxos保證在3臺服務器上操作的一致性Paxos提供的接口sendProposal()第6頁,共36頁,2022年,5月20日,10點13分,星期一Session 的實現服務器維護一個Debby管理器Session通過KeepAlive來保證每個Ke
3、epAlive會捎帶事件信息KeepAlive:客戶端等待,服務器受到請求立即返回第7頁,共36頁,2022年,5月20日,10點13分,星期一文件、目錄的實現文件、目錄放在內存常規(guī)文件系統和臨時文件系統常規(guī)文件系統map MemDir 用tree.hh實現臨時文件系統map 第8頁,共36頁,2022年,5月20日,10點13分,星期一事件管理的實現Debby維護了一個事件管理器已注冊的事件和已發(fā)生的事件對于已注冊的事件,系統維護一個事件到handle列表的map 當心跳發(fā)生時,將發(fā)生的事件返回給訂閱的客戶第9頁,共36頁,2022年,5月20日,10點13分,星期一SnapShot只用lo
4、g恢復服務器帶來的問題:日志將會越來越多恢復時間越來越長 本系統采用snapshot(快照)機制解決此問題第10頁,共36頁,2022年,5月20日,10點13分,星期一SnapShot將內存中的文件系統數據結構直接序列化到磁盤上Snapshot過程執(zhí)行成功后,比snapshot備份時間早的log信息不再需要,可通知paxos將log刪除。第11頁,共36頁,2022年,5月20日,10點13分,星期一SnapShotSnapShot方法增加了額外的復雜性實現SnapShot之前,crush掉的服務器只需從其他機器獲得最近的log即可進行恢復。 實現SnapShot之后,需同時考慮log和sn
5、apshot信息。第12頁,共36頁,2022年,5月20日,10點13分,星期一SnapShotclass SnapShotprivate static string DIR_PATH;public static void serialize(MemDir& md);public MemDir& void Unserialize();第13頁,共36頁,2022年,5月20日,10點13分,星期一Debby Client00448161第14頁,共36頁,2022年,5月20日,10點13分,星期一APIvoid create(const string &path, bool ephemer
6、al)void mkdir(const string &path)void remove(const string &path)bool exists(const string &path)bool isdir(const string &path)vector list(const string &path)bool lock(const string &path, bool share)void release(const string &path)string read(const string &path)void write(const string &path, const str
7、ing &content)void regcb(const string &path, EventType e, shared_ptr cb)void clearcb(const string &path)第15頁,共36頁,2022年,5月20日,10點13分,星期一LockServer dont support lock directly, client use ephemeral file to implement lock service.When client obtain a lock on file, create filename.lck ephemeral file. If
8、file already exists, server would throw a exception, and client returns failure.When client release the lock, simply delete the file.第16頁,共36頁,2022年,5月20日,10點13分,星期一Lock(2)When client lose connection with server, ephemeral file is deleted, including those indicate locks, thus locks is released.To pr
9、event ambiguity, user file is not allowed to end with “”, so they are easy to be differentiated from files used to implement locks.第17頁,共36頁,2022年,5月20日,10點13分,星期一EventsEventTypeEventCreatedEventRemovedEventChangedEventLockChangedEventArbitraryAll event would apply on both directories and files第18頁,
10、共36頁,2022年,5月20日,10點13分,星期一Events(2)All callbacks are managed by client, when a callback is first registered on a event, the client registers the event on master.When a client receives a event, it invoke all callbacks registered on the event.User could cancel all callbacks on a certain path, and cli
11、ent would unregister events on server.第19頁,共36頁,2022年,5月20日,10點13分,星期一Event(3)Client supply a Callback class to implement use callback, it contains a pure virtual function run().User implement their own class based on Callback, and implement the run() function. User could save any necessary informat
12、ion in the class.When client invoke a Callback, it create a thread to invoke the run() function.第20頁,共36頁,2022年,5月20日,10點13分,星期一Choose ServerThere a 5 server in a debby cell, while only one of them is the master.Client use ICE multi-endpoints mechanism to find the only master. Client register the ad
13、dress of all 5 servers to ICE, and ICE will try all 5 addresses to automatically find the right server, as long as there is only one master at one time.第21頁,共36頁,2022年,5月20日,10點13分,星期一Grace PeriodWhen the master election is going on, no service is available, and client must wait for new master to be
14、 elected.Use ICE retry mechanism to enable this function, use indicate a retry time series in which ICE will retry connection, for example, 3, 5, 10.We retry connection in 10, 30, 60第22頁,共36頁,2022年,5月20日,10點13分,星期一Paxos Framework Implementfor fault-tolerance log單棟棟 10748200網絡實驗室第23頁,共36頁,2022年,5月20日
15、,10點13分,星期一系統結構Api for fault-tolerant logFrom Paxos made live第24頁,共36頁,2022年,5月20日,10點13分,星期一Paxos normal-case operationclientrequetproposalacceptreply012相當于leader客戶的兩種提交方式: 1.只能由leader接受請求并提交(我們的做法,chubby) 2.所有服務器都可以接受請求,并把這些請求轉給leader,由leader提交。(zookeeper)第25頁,共36頁,2022年,5月20日,10點13分,星期一Paxos消息類型V
16、iewChangeMessage(選leader)HeartBeatMessage(leader租約)PrepareMessage(成leader前的內容同步)PrepareOKMessageProposalMessage(提議)AcceptMessage第26頁,共36頁,2022年,5月20日,10點13分,星期一LeaderElection何時選leader系統啟動時檢測到當前l(fā)eader宕機,并已過leader的租約每次選leader都要提交一個全序的view號View號的產生兩種選leader的方法每臺服務器只提自己當leader可以提別的服務器為leader(我們的實現)第27頁,
17、共36頁,2022年,5月20日,10點13分,星期一PreparePhareLeader被選出后,由leader執(zhí)行,并只執(zhí)行一次保證系統安全的過渡Leader catch up第28頁,共36頁,2022年,5月20日,10點13分,星期一ProposalPhare由leader發(fā)起Proposal兩種proposal同步proposal,客戶提交決議后一直等待,直到決定被完成(有可以失敗)異步proposal,客戶提交決議后馬上返回,paxos執(zhí)行完決議后再通知客戶Proposal的限時,重發(fā)第29頁,共36頁,2022年,5月20日,10點13分,星期一消息的發(fā)送與接收使用boost的
18、asio庫進行網絡通訊采用多播的方式點對點的catch up使用TCP連接接受消息使用異步socket采用多線程多類型的消息傳輸第30頁,共36頁,2022年,5月20日,10點13分,星期一實驗向paxos不停的提交proposal,讓paxos到保證每臺服務器數據的一致性(log)每臺服務器都記log,并且同步寫磁盤對于一個proposal有1秒來還沒答成一致,作提交失敗處理總共4組實驗,每組各進行3次,每次5000個proposal(在單臺機器上模擬)3臺 (運行2臺,運行3臺)5臺 (運行3臺,運行5臺)第31頁,共36頁,2022年,5月20日,10點13分,星期一結果1-3臺機器機器數(3臺)運行時間提交失敗數(5000次提交)平均每秒提交數每100失敗率只運行2臺99.133050.7次/秒0.02795.1260101.8564運行3臺126.893038.95次/秒0.013128.1541130.1071第32頁,共36頁,2022年,5月20日,10點13分,星期一結果2-5臺機器機器數(5臺)運行時間提交失敗數(5000次提交)平均每秒提交數每100失敗數3臺204.4
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025湖北省建筑安全員知識題庫附答案
- 成都農業(yè)科技職業(yè)學院《創(chuàng)客教育》2023-2024學年第二學期期末試卷
- 無錫太湖學院《高級日語3》2023-2024學年第二學期期末試卷
- 武漢工程職業(yè)技術學院《體育產業(yè)學》2023-2024學年第二學期期末試卷
- 廣東省外語藝術職業(yè)學院《創(chuàng)新設計與實踐》2023-2024學年第二學期期末試卷
- 長春工程學院《稅法(下)》2023-2024學年第二學期期末試卷
- 青海交通職業(yè)技術學院《小學科學教學法》2023-2024學年第二學期期末試卷
- 烏海職業(yè)技術學院《人工智能教育應用》2023-2024學年第二學期期末試卷
- 黑龍江工程學院昆侖旅游學院《主流輿情智能分析實踐》2023-2024學年第二學期期末試卷
- 湖南工程學院《科技文獻檢索(醫(yī)科)》2023-2024學年第二學期期末試卷
- 勞技-中國結PPT通用課件
- 溫庭筠《望江南》ppt課件
- 口腔正畸學單詞
- 2022牛排消費趨勢報告
- TPM╲t4Step Manul(三星TPM絕密資料)
- 細菌群體感應系統及其應用課件
- 司法鑒定程序通則(試行)
- 部編教材一年級下冊生字筆順筆畫
- 通達信指標——江恩輪
- 神經電生理檢查ppt課件
- 管路滑脫風險評估表
評論
0/150
提交評論