1.背景
數據如果保留多份,就會存在一致性問題,就需要同步,同步分為兩大類:全量和增量
2. 概述
數據如果要保留副本,要么同時寫(就是多寫),或者進行復制:異步寫(即從主數據拷貝到副本);
同時寫(多寫),引出一個問題,寫多少節點算成功(場景:分布式系統)?全部寫成功才算成功,還是寫大多數成功算成功,還是寫指定幾個節點算成功?
異步寫的話,如果采用異步復制,那么實時性需要考量的話,就需要采用性能優先的架構。
3.同步方式
數據同步一般分為兩種方式:全量和增量。
3.1 全量
全量,這個很好理解。就是每天定時(避開業務高峰期)或者周期性全量把數據從一個地方拷貝到另外一個地方;
全量的話,可以采用直接全部覆蓋(使用“新”數據覆蓋“舊”數據);或者走更新邏輯(覆蓋前判斷下,如果新舊不一致,就更新);
這里面有一個隱藏的問題:如果采用異步寫,主數據物理刪除了,怎么直接通過全量數據同步?這就需要借助一些中間操作日志文件,或者其他手段,把這些“看不到”的數據記錄起來。
3.2 增量
增量的基礎是全量,就是你要使用某種方式先把全量數據拷貝過來,然后再采用增量方式同步更新。
增量的話,就是指抓取某個時刻(更新時間)或者檢查點(checkpoint)以后的數據來同步,不是無規律的全量同步。這里引入一個關鍵性的前提:副本一端要記錄或者知道(通過查詢更新日志或者訂閱更新)哪些更新了。
3.2.1 確定更新點
采用更新時間戳、有的采用checkpoint等來標識和記錄更新點。