关于ZXID
前面一直提到zxid,也就是事務(wù)id,那么這個(gè)id具體起什么作用,以及這個(gè)id是如何生成的,簡單給大家解釋下
為了保證事務(wù)的順序一致性,zookeeper采用了遞增的事務(wù)id號(zxid)來標(biāo)識事務(wù)。所有的提議(proposal)都在被提出的時(shí)候加上了zxid。實(shí)現(xiàn)中zxid是一個(gè)64位的數(shù)字,它高32位是epoch(ZAB協(xié)議通過epoch編號來區(qū)分Leader周期變化的策略)用來標(biāo)識leader關(guān)系是否改變,每次一個(gè)leader被選出來,它都會(huì)有一個(gè)新的epoch=(原來的epoch+1),標(biāo)識當(dāng)前屬于那個(gè)leader的統(tǒng)治時(shí)期。低32位用于遞增計(jì)數(shù)。
epoch:可以理解為當(dāng)前集群所處的年代或者周期,每個(gè)?leader?就像皇帝,都有自己的年號,所以每次改朝換代,leader?變更之后,都會(huì)在前一個(gè)年代的基礎(chǔ)上加?1。這樣就算舊的?leader?崩潰恢復(fù)之后,也沒有人聽他的了,因?yàn)?follower?只聽從當(dāng)前年代的?leader?的命令。
?
超強(qiáng)干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
- 上一篇: 被丢弃的消息不能再次出现
- 下一篇: Zookeeper的来源