
架構
|
365
此設計中所使用的複製格式,在概念上類似於 MySQL 的敘述基礎複製(statement-based
replication)
8
。並不是使用 SQL 描述語言,而是會複製整個
WALEdits
來保持其單純性,
包含來自於客戶端的
Put
和
Delete
的多儲存單元(multiple cell)的插入動作。
每個 region 伺服器的
HLogs
是 HBase 複製的基礎,同時只要這些日誌需要被複製到
其他的 slave 叢集上時,它們就必須要保存在 HDFS 上。每個 region 伺服器會從它們
所需要複製的最舊的日誌開始讀取,同時為簡化錯誤復原,會將當前讀取位置保存到
ZooKeeper 上。對於每一個 slave 叢集來說,該位置可能是不同的,如同
HLogs
佇列的
處理方式。
參與複製的各叢集大小可能不是對稱的,同時 master 叢集會依賴隨機化,來
盡量確保
(
best effort
)在 slave 叢集上的複製工作流的平衡。
日誌更新的生命週期
在下面的幾 節,將說明從一個客戶端與 master 叢集溝通的所有方式,一直到單一 slave
叢集,在單一異動更新的生命週期。
正常處理
客戶端會使用 HBase API 將
Put
、
Delete
,或
Increment
發送給 region 伺服器。key/
value 會被 region 伺服器轉換為一個
WALEdit
,而且
WALEdit
會被複製程式碼來檢查;對
於每一個複製範圍內的 family,會加入到異動的範圍中。異動會被加入到目前的 ...