2016-06-21 77 views
2

我知道Vnodes通過在cassandra.yaml文件中設置num_tokens來爲每個節點形成許多令牌範圍。例如(a),我有6個節點,每個節點我都設置了num_token = 256。這6個節點中形成了多少個虛擬節點,即每個物理節點中包含多少個虛擬節點或子令牌範圍。Cassandra Vnodes和令牌範圍

根據我的理解,當每個節點將num_token分配爲256時,這意味着所有6個節點都包含256個vnode。這個陳述是真實的嗎?如果不是那麼,vnodes如何在每個節點中形成令牌範圍(顯然是隨機的)。如果有人可以用(a)所述的例子解釋我,那將非常方便。

是什麼的vnode環表示在此URL:=>http://docs.datastax.com/en/cassandra/3.x/cassandra/images/arc_vnodes_compare.png(摘自:http://www.datastax.com/dev/blog/virtual-nodes-in-cassandra-1-2

回答

3

在卡桑德拉每個分區鍵被轉換爲使用MurMur3散列函數的數值令牌值。令牌範圍介於-2^63到+2^63之間012_num_token定義向節點分配多少令牌範圍。每個節點計算令牌範圍內的256個隨機值(num_tokens),並通知其他節點它們是什麼,因此當節點需要協調對特定令牌的請求時,它會根據複製因子和DC來知道哪些節點負責它/機架放置。 對此功能的更好的描述是「自動令牌範圍分配以獲得更好的流式傳輸能力」,稱其爲「虛擬」有點混亂。 在你的情況下你有6個節點,每個節點有256個令牌範圍,所以你有6 * 256令牌範圍,每個心理節點包含256個令牌範圍。

例如,考慮設置爲4和令牌範圍0到100 節點1 num_tokens 2個節點計算令牌17,35,77,92 節點2來計算令牌4,25,68,85 環示出了在這種情況下令牌範圍的分佈 節點2負責令牌範圍4-17,25-35,68-77,85-92和其餘節點1。

+0

對於node2的範圍,應該有4-16,25-34 68-76和85-92嗎? – Southsouth

+0

這將是射頻1權利? RF2和三個節點呢?您需要複製令牌範圍。隨機聽起來有點瘋狂,因爲你不能確保令牌範圍被複制。或者是隱式統一唯一覆蓋的令牌範圍,並且複製的處理方式不同? –

+0

@ConstanceEustace令牌分配不依賴於RF。副本放置取決於您的複製策略,請閱讀更多信息 - https://docs.datastax.com/en/cassandra/latest/cassandra/architecture/archDataDistributeReplication.html –