分布式檔案系統,master和slave同步為什麼普遍採用checkpoint oplog的方式?

時間 2021-06-05 23:54:21

1樓:dastan

1)「checkpoint」 是某一時刻儲存系統(hadoop、redis、mongo 等等)的快照,特點是

* 相對小而緊湊,通常用於災備,比如每天、每週、每個月將映象檔案儲存到七牛或AWS,若非出現整個集群宕機,很難會用到它,因為集群自身往往有其它資料同步機制;

* 宕機後能夠快速從上乙個備份點恢復,結合 oplog 進行重放,基本可以保證資料不丟;

* 因為是 Full Backup,對業務影響較大,不適合實時操作。

2)「oplog」 是儲存系統的寫記錄,特點是

* 由於是每一次寫操作的記錄,檔案很容易變得巨大,需要定期合併;

* 也因為檔案很大,使得僅僅從 oplog 恢復資料變得不太現實,比如 mongo 就有 oplog 大小的限制,高版本的 mysql 也是同時使用映象和 oplog 來縮短節點重啟後同步資料的時間;

* 這類儲存系統通常會確保 oplog 寫成功,才會對客戶端返回 SUCCESS,所以通過重放 oplog 的方式恢復資料是十分保險的。

上面兩種方式可以說兩者各有優劣,只採用其中任何一種方式都無法兼顧儲存系統的可用性和可靠性。實際上,各個真實儲存系統的設計,遠比上面說的複雜,整個業務的可用性和可靠性受到很多方面的影響。例如 oplog 本身在寫入檔案系統時沒有實時落盤,而是採用了檔案系統預設的 write-back 機制,或者即便在 write-around 或 write-through 的情形下,檔案系統底層沒有用 RAID 或其它分布式儲存方案做冗餘,磁碟壞掉丟資料也是很正常的。

至於題目本身猜測的原因1,其實說的是資料一致性問題,如果遇到網路分割槽,導致 「split-brain scenario」 出現,系統又缺乏強一致性設計的話,那麼集群中存在乙個以上的節點同時認為自己是 master 的情形是很有可能的。

GFS 針對傳統分布式檔案系統而言最大創新點在哪?

selfpoised 在適應自身追加寫,大檔案,一次寫入大量讀的需求下,以一種單master的多chunkserver的超簡單架構實現了乙個高效能的分布式系統。最大特點是簡單。其對於consistency和defined的合理放鬆及primary replica代替master的同步功能,並不完美,...

分布式系統廣泛使用的zookeeper有哪些重要的概念呢?

一朵雲Q QuorumPeer 節點型別,分為 LeaderZookerServer FollowerZookeeperServer ObserverZookeeperServer leader節點對應Leader類物件,以及LearnerHandler接收處理訊息 follower節點對應Lear...

如何保證分布式系統metadata資料強一致性?

Tony 乙個現在比較好的解決方案是 將meta data存放在control plane,然後data plane通過control plane來統一。對於control plane,有兩種解決方案。第一,用cluster,這時,需要選用支援強一致的系統,比如etcd和ZooKeeper 還有一些...