2013-05-31 129 views
5

我只是想了解在卡桑德拉複製的機制。我讀到數據分佈Datastax鏈路:卡桑德拉如何複製數據

http://www.datastax.com/docs/1.2/cluster_architecture/data_distribution

在一致的散列部它告訴卡桑德拉創建用於每個主密鑰散列值,並基於該數據發送到容納所生成的散列值的節點。之後,它顯示數據在羣集中的分佈。現在我的問題是,它如何根據散列值將此數據複製到羣集中的其他節點。

這可能是非常基本的問題。如果可能的話,請用示例來解釋

回答

10

找到複製方式取決於複製策略。對於SimpleStrategy與複製因子N無虛擬節點卡桑德拉執行以下操作:

  1. 哈希關鍵
  2. 查找具有最小令牌大於或等於哈希值,如果有必要纏繞
  3. Store中的節點該節點和在令牌順序

隨後的N-1個節點作爲一個例子對鍵,假設節點具有令牌0,10,20,30和您的複製因子是2。如果您的鍵具有散列14然後它將被存儲在帶有令牌20和30的節點上。如果你的密鑰有ha sh 28然後它將被存儲在具有標記30和0的節點上。

如果使用虛擬節點,則使用相同的想法,但是如果物理節點已經收到密鑰,則虛擬節點將作爲副本被跳過。

如果使用NetworkTopologyStrategy,則在達到該數據中心的配額時跳過節點。

+1

謝謝理查德。這讓我想到它是如何工作的。還有一個問題就是:當你說環繞時,按照你給出的例子,當散列值爲28時,範圍爲30的節點按照規則2限定,但是它到零的節點,因爲它是環中的下一個節點。請建議我的理解是否正確。 –

+0

是的,這是正確的。 – Richard

+0

嗨,理查德,你能解釋一下NetworkTopologyStrategy的配額是什麼意思?這是您在創建密鑰空間時指定的內容嗎?如果DC僅包含一個機架,其複製配額是否會超過1?謝謝! – kirbo