1樓:一朵雲Q
QuorumPeer 節點型別,分為
LeaderZookerServer
FollowerZookeeperServer
ObserverZookeeperServer
leader節點對應Leader類物件,以及LearnerHandler接收處理訊息
follower節點對應Learner類物件
狀態類ServerState,啟動時為looking,根據選舉策略進入leading、following、observing
通過track類跟蹤是否進入選舉,選舉類QuorumVerifier,預設的maj即多數投票,方法名叫containsQuorum
也可配置基於權重
對於投票邏輯,所有引數相同時,最終比較server id
* 選舉策略
* We return true if one of the following three cases hold:
* 1- New epoch is higher
* 2- New epoch is the same as current epoch, but new zxid is higher
* 3- New epoch is the same as current epoch, new zxid is the same
* as current zxid, but server id is higher.
return ((newEpoch > curEpoch)
newEpoch == curEpoch)
amp;& ((newZxid > curZxid)
newZxid == curZxid)
amp;& (newId > curId)))));
通訊連線類CnxManager,接收和傳送訊息,包含
SenderWorker
RecvWorker
選舉演算法類FastLeaderElection,打包和解包訊息,包含
WorkerRecv
WorkerSender
client處理類Processor,是乙個鍊錶結構,前乙個處理完丟給後乙個處理,比如
增加事務頭的類
訊息sync類
ack request類
commit類
等等最後持久化類ZKDatabase,包含
snap:file snap和txn log
DataTree — DataNode:資料節點
watcher:zk的watch功能
分布式資料庫的分布式事務?
NebulaGraph 業務系統往往是通過子系統組合的模式來完成,這些子系統很可能是不同的資料庫,甚至可能是 友商 的,互相直接無法保證事務,還是得業務自身保證。 codingfor 你說的單機事物,我的理解其實是指single threaded excution,而不是指在單台機器上做事物 暗含了...
如何保證分布式系統metadata資料強一致性?
Tony 乙個現在比較好的解決方案是 將meta data存放在control plane,然後data plane通過control plane來統一。對於control plane,有兩種解決方案。第一,用cluster,這時,需要選用支援強一致的系統,比如etcd和ZooKeeper 還有一些...
學習分布式系統需要哪些知識點?
Gala 1 概念 1.1 模型 1.1.1 節點 1.1.2 通訊 1.1.3 儲存 1.1.4 異常 1.2 副本 1.2.1 副本的概念 1.2.2 副本一致性 1.3 衡量分布式系統的指標 1.3.1 效能 1.3.2 可用性 1.3.3 可擴充套件性 1.3.4 一致性 2 分布式系統原理...