2016-06-21 7 views
2

私は、Vノードがcassandra.yamlファイルにnum_tokensを設定することによって、各ノードの多くのトークン範囲を形成することを知っています。カサンドラVノードとトークン範囲

たとえば、(i)は6つのノードを持ち、各ノードはnum_token = 256を設定しています。これらの6つのノードの間に形成される仮想ノードの数は、各物理ノードに含まれる仮想ノードまたはサブトークンの数です。

私の理解によれば、すべてのノードがnum_tokenを256として割り当てた場合、6ノードにはそれぞれ256個のvノードが含まれていることになります。この声明は本当ですか?そうでなければ、各ノードでどのようにvnodeがトークンの範囲(明らかにランダム)を形成するかを示します。誰かが(a)のような例で私を説明できるなら、本当に便利でしょう。

vノードのリングは、この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の間です。 num_tokenは、ノードに割り当てられるトークン範囲の数を定義します。各ノードは、トークン範囲内の256個(num_tokens)のランダム値を計算し、それが他のノードにどのようなものであるかを知らせるので、どのノードがそれを担当しているかを知る特定のトークンの要求をコーディネートする必要があるとき、 /ラック配置。 この機能のより良い説明は、「より良いストリーミング機能のための自動トークン範囲の割り当て」です。「仮想」と呼ぶのはちょっと混乱します。 あなたのケースでは6つのノードがあり、それぞれが256のトークン範囲で設定されているので、6 * 256のトークン範囲を持ち、各心理的ノードには256のトークン範囲が含まれています。例えば

2~4に設定num_tokens有するノードトークン範囲を検討0 100にノード1がトークン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

これはRF 1の権利でしょうか? RF2と3つのノードはどうですか?トークン範囲が複製される必要があります。あなたはトークンの範囲が複製されていることを確認できなかったので、少し狂った音がします。または、暗黙的に統一されたユニークなカバレッジのトークン範囲であり、レプリケーションは別の方法で処理されますか? –

+0

@ConstanceEustaceトークンの割り当てはRFに依存しません。レプリカの配置はレプリケーション戦略に依存します。詳しくはこちら - https://docs.datastax.com/en/cassandra/latest/cassandra/architecture/archDataDistributeReplication.html –

関連する問題