IT技術互動交流平台

分布式 Zookeeper數據與存儲

作者||金健米业招聘:leesf  來源_-广西财经学院论坛:IT165收集  發布日期|青青岛社区胶南论坛:2016-12-19 20:32:27

一|50018、前言

  前麵分析了Zookeeper對請求的處理--遵义市招生考试网,本篇博文接著分析Zookeeper中如何對底層數據進行存儲--|美图还原,數據存儲被分為內存數據存儲於磁盤數據存儲|临川晚报。

二-||技术服务费费率、數據與存儲

  2.1 內存數據

  Zookeeper的數據模型是樹結構_-钢铁悍将,在內存數據庫中_-|保定热线测速,存儲了整棵樹的內容___1288彩票被骗5000,包括所有的節點路徑__|intel e5300、節點數據|-易旺彩票主页、ACL信息-|利玛窦是哪国人,Zookeeper會定時將這個數據存儲到磁盤上-_106时时彩手机版。

  1. DataTree

  DataTree是內存數據存儲的核心--_悦花越有刘玉龙坐牢,是一個樹結構-|易网彩票开奖下载,代表了內存中一份完整的數據|-降龙之剑boss坐标。DataTree不包含任何與網絡-|传奇个性行会名字、客戶端連接及請求處理相關的業務邏輯||若禾,是一個獨立的組件|||苏果之家。

  2. DataNode

  DataNode是數據存儲的最小單元|_赢咖娱乐登录,其內部除了保存了結點的數據內容__三毛妮、ACL列表_-固定电话资费、節點狀態之外-松鹤墓园,還記錄了父節點的引用和子節點列表兩個屬性|_|01彩票,其也提供了對子節點列表進行操作的接口__锚杆垫板。

  3. ZKDatabase

  Zookeeper的內存數據庫__亿彩堂彩票是不是真的,管理Zookeeper的所有會話|嘉酒视窗、DataTree存儲和事務日誌-_银色黎明声望怎么刷。ZKDatabase會定時向磁盤dump快照數據-至尊伏魔录,同時在Zookeeper啟動時--|亿贝平台app,會通過磁盤的事務日誌和快照文件恢複成一個完整的內存數據庫-_-印度电视剧新娘第四部。

  2.2 事務日誌

  1. 文件存儲

  在配置Zookeeper集群時需要配置dataDir目錄|r6多少钱,其用來存儲事務日誌文件||有约鞋批发网。也可以為事務日誌單獨分配一個文件存儲目錄:dataLogDir-_|金都西路申徐路。若配置dataLogDir為/home/admin/zkData/zk_log-|山西环法尊道长,那麼Zookeeper在運行過程中會在該目錄下建立一個名字為version-2的子目錄-成都九眼桥猛女资料,該目錄確定了當前Zookeeper使用的事務日誌格式版本號|||掌上彩票官方版下载,當下次某個Zookeeper版本對事務日誌格式進行變更時-永城彩票网,此目錄也會變更--_金雌源,即在version-2子目錄下會生成一係列文件大小一致(64MB)的文件__|马谡拒谏失街亭。

  2. 日誌格式

  在配置好日誌文件目錄--云天国际彩票真的假的,啟動Zookeeper後--李驰新浪博客,完成如下操作

  (1) 創建/test_log節點|-_038可靠吗,初始值為v1|__345彩票网邀请码。

  (2) 更新/test_log節點的數據為v2---阿拉尔租房网。

  (3) 創建/test_log/c節點-喜悦 张海军,初始值為v1_-奄美彩加。

  (4) 刪除/test_log/c節點_||中诚快递。

  經過四步操作後||-银盘服务,會在/log/version-2/目錄下生成一個日誌文件|-杨幂被性侵全图,筆者下是log.cec-||140期富婆看图中肖特。

  將Zookeeper下的zookeeper-3.4.6.jar和slf4j-api-1.6.1.jar複製到/log/version-2目錄下-英雄联盟定级赛规则,使用如下命令打開log.cec文件-||霍邱电影院。

  java -classpath ./zookeeper-3.4.6.jar:./slf4j-api-1.6.1.jar org.apache.zookeeper.server.LogFormatter log.cec

  

  ZooKeeper Transactional Log File with dbid 0 txnlog format version 2 _|易彩网多少钱可以提现。是文件頭信息_||变形记 美丽加减法,主要是事務日誌的DBID和日誌格式版本號_-复仇者之死qvod。  

  ...session 0x159...0xcec createSession 30000|--亿彩彩票安全吗。表示客戶端會話創建操作_-构橘。

  ...session 0x159...0xced create '/test_log,... |008彩票平台。表示創建/test_log節點__长江电力招聘,數據內容為#7631(v1)_|众博彩票开多久了。

  ...session 0x159...0xcee setData ‘/test_log,...||-3a彩票提现不到账。表示設置了/test_log節點數據_-众彩生活app,內容為#7632(v2)_autocad2004中文版。

  ...session 0x159...0xcef create ’/test_log/c,...|我们结婚了泰民停拍。表示創建節點/test_log/c||_亿彩彩票靠谱吗。

  ...session 0x159...0xcf0 delete '/test_log/c_何思佳。表示刪除節點/test_log/c_|盈彩网时时彩计划。

  3. 日誌寫入

  FileTxnLog負責維護事務日誌對外的接口|_钢铁战歌,包括事務日誌的寫入和讀取等__正品普拉达。Zookeeper的事務日誌寫入過程大體可以分為如下6個步驟_|易彩彩票。

  (1) 確定是否有事務日誌可寫_|金成真。當Zookeeper服務器啟動完成需要進行第一次事務日誌的寫入__-本草仙目,或是上一次事務日誌寫滿時_-152彩票真的假的,都會處於與事務日誌文件斷開的狀態-__htcg13报价,即Zookeeper服務器沒有和任意一個日誌文件相關聯||小动脉电影网。因此在進行事務日誌寫入前_-敬一丹公开质疑打虎,Zookeeper首先會判斷FileTxnLog組件是否已經關聯上一個可寫的事務日誌文件_-_现代诗精选。若沒有|_f1电影网,則會使用該事務操作關聯的ZXID作為後綴創建一個事務日誌文件-138福彩好不好,同時構建事務日誌的文件頭信息-_战地3沙漠巡逻车,並立即寫入這個事務日誌文件中去_|_易乳宝官网,同時將該文件的文件流放入streamToFlush集合_|视觉卡盟平台,該集合用來記錄當前需要強製進行數據落盤的文件流|_-泷泽萝拉 七里香。

  (2) 確定事務日誌文件是否需要擴容(預分配)-139期香港内部传真。Zookeeper會采用磁盤空間預分配策略_|小林子外挂网。當檢測到當前事務日誌文件剩餘空間不足4096字節時-_-中国专科学校排名,就會開始進行文件空間擴容--|123彩票靠谱吗,即在現有文件大小上_--腾宇铭,將文件增加65536KB(64MB)__2m永久资料全年开,然後使用'0'填充被擴容的文件空間--1分快3规律。

  (3) 事務序列化|_广西单独二胎细则。對事務頭和事務體的序列化-_苏州元祖门店,其中事務體又可分為會話創建事務_|jindon京东商城、節點創建事務-088彩票、節點刪除事務|-|马三家子、節點數據更新事務等---亿赢彩票客服。

  (4) 生成Checksum_|10500vip彩票官网。為保證日誌文件的完整性和數據的準確性-_云端彩票,Zookeeper在將事務日誌寫入文件前|1288彩票官方app,會計算生成Checksum--银行存款日记账怎么记。

  (5) 寫入事務日誌文件流-_新密五个人火了照片。將序列化後的事務頭|-369彩票官网平台、事務體和Checksum寫入文件流中_|-扑克双升,此時並為寫入到磁盤上-|-自主卡盟。

  (6) 事務日誌刷入磁盤-|诺基亚软格机。由於步驟5中的緩存原因|-女王虐厕奴,無法實時地寫入磁盤文件中-_儿童风景图画,因此需要將緩存數據強製刷入磁盤_国企改革方向。

  4. 日誌截斷

  在Zookeeper運行過程中|_五月色桃色激情婷婷,可能出現非Leader記錄的事務ID比Leader上大__铁道兵战友网,這是非法運行狀態_-银川欧陆经典。此時_|160彩票平台靠谱么,需要保證所有機器必須與該Leader的數據保持同步-|-诺基亚n97功能,即Leader會發送TRUNC命令給該機器-_阿凡提物流查询,要求進行日誌截斷__7777小游戏,Learner收到該命令後_召召木木,就會刪除所有包含或大於該事務ID的事務日誌文件|_141期有挂牌找生肖看吗。

  2.3 snapshot-數據快照

  數據快照是Zookeeper數據存儲中非常核心的運行機製__-和龙市政务信息网,數據快照用來記錄Zookeeper服務器上某一時刻的全量內存數據內容|_008彩票怎么样,並將其寫入指定的磁盤文件中_-诺基亚ovi套件。

  1. 文件存儲

  與事務文件類似|_|仲博平台在线登录,Zookeeper快照文件也可以指定特定磁盤目錄-|_discoverybuy,通過dataDir屬性來配置-|丧尸类电影。若指定dataDir為/home/admin/zkData/zk_data|_腾讯中国好声音,則在運行過程中會在該目錄下創建version-2的目錄-|长阳国际城业主论坛,該目錄確定了當前Zookeeper使用的快照數據格式版本號|__雅克蜥。在Zookeeper運行時|制卡网,會生成一係列文件|_天通银代理。

  2. 數據快照

  FileSnap負責維護快照數據對外的接口-|_易彩堂跟官方合作了吗?,包括快照數據的寫入和讀取等|江淮愿景iii,將內存數據庫寫入快照數據文件其實是一個序列化過程-王恒升。針對客戶端的每一次事務操作_陈祖怡,Zookeeper都會將他們記錄到事務日誌中|_-航航影院,同時也會將數據變更應用到內存數據庫中-根据以下图标猜成语,Zookeeper在進行若幹次事務日誌記錄後_|国世平本人,將內存數據庫的全量數據Dump到本地文件中_--宝贝鱼翻译,這就是數據快照|-意彩娱乐注册。其步驟如下

  (1) 確定是否需要進行數據快照nba2k online花式运球。每進行一次事務日誌記錄之後|_-众赢彩票娱乐平台,Zookeeper都會檢測當前是否需要進行數據快照--_助赢软件,考慮到數據快照對於Zookeeper機器的影響_|阳泉二中贴吧,需要盡量避免Zookeeper集群中的所有機器在同一時刻進行數據快照_||手机直播软件哪个黄。采用過半隨機策略進行數據快照操作_-361官方网站手机登录。

  (2) 切換事務日誌文件_--108娱乐怎么才能赚钱。表示當前的事務日誌已經寫滿|易中彩票平台,需要重新創建一個新的事務日誌_平山腾龙山。

  (3) 創建數據快照異步線程|_邮寄包裹费用。創建單獨的異步線程來進行數據快照以避免影響Zookeeper主流程-男士眼霜。

  (4) 獲取全量數據和會話信息_-百度在线朗读器。從ZKDatabase中獲取到DataTree和會話信息||_欧蓝德改装。

  (5) 生成快照數據文件名||_雄县地图。Zookeeper根據當前已經提交的最大ZXID來生成數據快照文件名||_0707彩票怎么样。

  (6) 數據序列化|-106福彩苹果下载。首先序列化文件頭信息_|-掌信彩导师,然後再對會話信息和DataTree分別進行序列化|_众富彩票首页,同時生成一個Checksum--_苟在松,一並寫入快照數據文件中去-|-新塑料球。

  2.4 初始化

  在Zookeeper服務器啟動期間-_-致哀 志哀,首先會進行數據初始化工作|百里挑一于淼,用於將存儲在磁盤上的數據文件加載到Zookeeper服務器內存中_长春大学生就业指导中心。

  1. 初始化流程

  Zookeeper的書初始化過程如下圖所示

  數據的初始化工作是從磁盤上加載數據的過程__王晗祥康快车讲座,主要包括了從快照文件中加載快照數據和根據實物日誌進行數據修正兩個過程|__x女特工结局。

  (1) 初始化FileTxnSnapLog_--黄油嘴型号。FileTxnSnapLog是Zookeeper事務日誌和快照數據訪問層__船讯网首页,用於銜接上層業務和底層數據存儲-ab汽车网,底層數據包含了事務日誌和快照數據兩部分|||宝贝鱼翻译。FileTxnSnapLog中對應FileTxnLog和FileSnap|||李白的谈爱。

  (2) 初始化ZKDatabase_-_镭波吧。首先構建DataTree_|-038com彩票官方网,同時將FileTxnSnapLog交付ZKDatabase_|_soler组合,以便內存數據庫能夠對事務日誌和快照數據進行訪問-_|瑞士鹿喜微断食纤体。在ZKDatabase初始化時__李秉宪 宋慧乔,DataTree也會進行相應的初始化工作|-_108娱乐新3d软件分析,如創建一些默認結點|_|卓易彩票怎么不能买了,如/__08彩票、/zookeeper--_自驾游汽车运输班列、/zookeeper/quota三個節點_|_星光大道娃娃李烁。

  (3) 創建PlayBackListener-|鸭梨什么意思。其主要用來接收事務應用過程中的回調||-2018白菜网论坛,在Zookeeper數據恢複後期__-觅食的意思,會有事務修正過程||盈发彩票是真的假的,此過程會回調PlayBackListener來進行對應的數據修正--_ca1232。

  (4) 處理快照文件_-诺基亚ovi商店。此時可以從磁盤中恢複數據了|-22彩票平台提现不到账,首先從快照文件開始加載-_|康美药业主题曲。

  (5) 獲取最新的100個快照文件-|青岛航空快线商务酒店。更新時間最晚的快照文件包含了最新的全量數據盈彩网属于合法的吗。

  (6) 解析快照文件|369开奖网。逐個解析快照文件|--手机qq2011正式版,此時需要進行反序列化-||联想idealife,生成DataTree和sessionsWithTimeouts|_|南庄四中ed2k,同時還會校驗Checksum及快照文件的正確性_|火焰之纹章圣魔之光石金手指。對於100個快找文件-_助赢软件手机版有吗,如果正確性校驗通過時|_|电视剧至爱亲朋,通常隻會解析最新的那個快照文件--|规模报酬。隻有最新快照文件不可用時||爱相约国际交友网,才會逐個進行解析_-|2019年白姐另版先锋诗,直至100個快照文件全部解析完|-2628彩票账号注册。若將100個快照文件解析完後還是無法成功恢複一個完整的DataTree和sessionWithTimeouts-||俗人岛华人,此時服務器啟動失敗|_菏泽医专贴吧。

  (7) 獲取最新的ZXID|__比亚迪f5多少钱。此時根據快照文件的文件名即可解析出最新的ZXID-_敕令大将军到此:zxid_for_snap_|-198注册网址。該ZXID代表了Zookeeper開始進行數據快照的時刻_|_安全部邱进。

  (8) 處理事務日誌|-_15876计划网时时彩。此時服務器內存中已經有了一份近似全量的數據|_上辈子的五百次回眸,現在開始通過事務日誌來更新增量數據||一天一天歌词。

  (9) 獲取所有zxid_for_snap之後提交的事務--33选7走势图综合。此時-_云鼎招商捷豹系统,已經可以獲取快照數據的最新ZXID-挠脚心动漫图。隻需要從事務日誌中獲取所有ZXID比步驟7得到的ZXID大的事務操作-|锦州有线宽带。

  (10) 事務應用--105彩票怎么玩。獲取大於zxid_for_snap的事務後--美国军用飞机编号f,將其逐個應用到之前基於快照數據文件恢複出來的DataTree和sessionsWithTimeouts_|_390彩票网址。每當有一個事務被應用到內存數據庫中後||认识国旗,Zookeeper同時會回調PlayBackListener_宝石迷阵4中文版,將這事務操作記錄轉換成Proposal--奥斯洁,並保存到ZKDatabase的committedLog中-coco洗发水真假,以便Follower進行快速同步-监察特使。

  (11) 獲取最新的ZXID|_|亿赢彩票官方网站。待所有的事務都被完整地應用到內存數據庫中後|||038彩票赌博,也就基本上完成了數據的初始化過程|_-银盘服务是什么,此時再次獲取ZXID---汉草荟灵芝养生壶,用來標識上次服務器正常運行時提交的最大事務ID-|goxiazai cc。

  (12) 校驗epoch_-|易彩彩票。epoch標識了當前Leader周期-_|云顶娱乐害惨了我,集群機器相互通信時-__干洗价格,會帶上這個epoch以確保彼此在同一個Leader周期中||_长沙友谊商店招聘。完成數據加載後||青田封门青,Zookeeper會從步驟11中確定ZXID中解析出事務處理的Leader周期__尿毒症武警二院专家:epochOfZxid-||神州行充值卡序列号。同時也會從磁盤的currentEpoch和acceptedEpoch文件中讀取上次記錄的最新的epoch值__腾讯2014校园招聘,進行校驗|_|168开奖网极速时时彩。

  2.5 數據同步

  整個集群完成Leader選舉後_坏蛋是炼成的2,Learner會向Leader進行注冊__-新塑料球,當Learner向Leader完成注冊後|_爱慕卡盟,就進入數據同步環節-|飞慧奶粉,同步過程就是Leader將那些沒有在Learner服務器上提交過的事務請求同步給Learner服務器||_优彩网代理靠什么赚钱,大體過程如下

  (1) 獲取Learner狀態__|阿克苏市人民政府网。在注冊Learner的最後階段_|长治日报电子版,Learner服務器會發送給Leader服務器一個ACKEPOCH數據包_风火英雄,Leader會從這個數據包中解析出該Learner的currentEpoch和lastZxid||注册红彩彩票要邀请码怎么办。

  (2) 數據同步初始化_10元可提现的棋牌。首先從Zookeeper內存數據庫中提取出事務請求對應的提議緩存隊列proposals-郑州防空兵学院,同時完成peerLastZxid(該Learner最後處理的ZXID)|96900订票、minCommittedLog(Leader提議緩存隊列commitedLog中最小的ZXID)-_陈公博、maxCommittedLog(Leader提議緩存隊列commitedLog中的最大ZXID)三個ZXID值的初始化||_133彩票。

  對於集群數據同步而言||_永胜国际app是干什么的,通常分為四類_易彩堂和华彩网,直接差異化同步(DIFF同步)|_-银泉酒家、先回滾再差異化同步(TRUNC+DIFF同步)_联想idealife、僅回滾同步(TRUNC同步)_|众彩网怎么样、全量同步(SNAP同步)||_青岛市教育人事网,在初始化階段_|京东e卡换钱就到卡卡同盟,Leader會優先以全量同步方式來同步數據_|_威海卫生365。同時|--临泉二手房网,會根據Leader和Learner之間的數據差異情況來決定最終的數據同步方式||江苏徐州一周天气预报。

  · 直接差異化同步(DIFF同步|__尊龙娱乐人生就是赌,peerLastZxid介於minCommittedLog和maxCommittedLog之間)__智博彩票线路检测。Leader首先向這個Learner發送一個DIFF指令__杨幂被灌醉性侵全图,用於通知Learner進入差異化數據同步階段__蓝工房,Leader即將把一些Proposal同步給自己_|掌上永辉最新版本下载,針對每個Proposal|_仙5破解,Leader都會通過發送PROPOSAL內容數據包和COMMIT指令數據包來完成__彭庆国,

  · 先回滾再差異化同步(TRUNC+DIFF同步_-助赢在哪下载,Leader已經將事務記錄到本地事務日誌中-__新台湾星光大道,但是沒有成功發起Proposal流程)-致富彩票是真的吗。當Leader發現某個Learner包含了一條自己沒有的事務記錄-|-256手机彩票网网址,那麼就需要該Learner進行事務回滾_--钱宝网最新消息2018年,回滾到Leader服務器上存在的|_-汤唯在韩国视频,同時也是最接近於peerLastZxid的ZXID_|-美甲点笔。

  · 僅回滾同步(TRUNC同步--|亿彩彩票安全吗,peerLastZxid大於maxCommittedLog)-_仲博彩票平台靠谱吗。Leader要求Learner回滾到ZXID值為maxCommittedLog對應的事務操作_-destinywarfare。

  · 全量同步(SNAP同步__优信彩票在线,peerLastZxid小於minCommittedLog或peerLastZxid不等於lastProcessedZxid)-_|众益彩苹果版如何下载。Leader無法直接使用提議緩存隊列和Learner進行同步-|_易投彩票,因此隻能進行全量同步_-|亿发彩票怎么样。Leader將本機的全量內存數據同步給Learner__云顶国际登录。Leader首先向Learner發送一個SNAP指令-_重装机兵2重制版金手指,通知Learner即將進行全量同步|运盛彩票导航,隨後|-_盈盈彩安全吗,Leader會從內存數據庫中獲取到全量的數據節點和會話超時時間記錄器-|金丹菲,將他們序列化後傳輸給Learner_|男子雨中殴打怀孕妻子。Learner接收到該全量數據後-|闽江学院教务系统,會對其反序列化後載入到內存數據庫中__电视棒密码。

三--|小时代票价、總結

  本篇博文主要講解了Zookeeper的數據與存儲-|为啥人们啪啪后会感到悲伤,包括內存數據--|考试作弊手表,快照數據__娱乐天地是不是合法,以及如何進行數據的同步等細節_-_艺术买比,至此_-|我们结婚了20130503,Zookeeper的理論學習部分已經全部完成|-ume重庆,之後會進行源碼分析||奶油话梅糖,也謝謝各位園友的觀看~

延伸閱讀-_当爱已成往事 亦域:

Tag標簽_-|oppo手机a201: 分布式   數據  
  • 專題推薦

  • Directx11 遊戲編程入門教程
  • 專題主要學習DirectX的初級編程入門學習--注册送38彩金APP,對Directx11的入門及初學者有...... 詳細
  • Windows7係統入門 優化 技巧技術專題
  • Windows7係統專題 無論是升級操作係統_重庆鸿恩寺儿童公园、資料備份|__衣衫来客、加強資料的安全及管...... 詳細
About IT165 - 廣告服務 - 隱私聲明 - 版權申明 - 免責條款 - 網站地圖 - 網友投稿 - 聯係方式
本站內容來自於互聯網,僅供用於網絡技術學習,學習中請遵循相關法律法規
分分彩万喜彩票分分彩盛兴彩票pc蛋蛋pc蛋蛋

免责声明: 本站资料及图片来源互联网文章,本网不承担任何由内容信息所引起的争议和法律责任。所有作品版权归原创作者所有,与本站立场无关,如用户分享不慎侵犯了您的权益,请联系我们告知,我们将做删除处理!