0

私はちょうど vnode についてもう少し学ぼうとしていて、興味があります。単一の物理ノードに多数の vnode を配置するというアイデアは気に入っていますが、各 vnode のレプリカとなる物理マシンを制御できるようにしたいと考えています。たとえば、物理ノードが 8 つあり、RF=3 であると仮定します。次のように配置されるように、各ノードのレプリカを配置したいと思います。

Let capital letters be physical nodes
Let lowercase letters be vnodes. Vnodes in parens are located on the
  corresponding physical machine.

A(ablmno)
B(acdnop)
C(abcefp)
D(bcdegh)
E(defgij)
F(fghikl)
G(hijkmn)
H(jklmop)

注意すべき重要なことは、すべての vnode は、互いに 4 ノード以内にあるマシンにのみ複製されるということです。たとえば、aABC にb複製され、ACD にd複製され、BDE に複製されます。

ゼロの vnode を共通に含む 3 つの物理ノード セットが存在しないという状況に陥らないように、物理ノードの特定の範囲内でレプリケーションを維持できるようにしたいと考えています (つまり、3 つのノードが失われることを意味します)。クラスターはデータ損失を保証します)。上記の例では、A、D、および E の vnode の交点が空のセットであるため、ノード ADE が失われてもデータが失われることはありません (すべてのレプリカが最新であると仮定)。これが私の前の声明のpythonによる証明です:

>>> A = set(['a', 'b', 'l', 'm', 'n', 'o'])
>>> D = set(['b', 'c', 'd', 'e', 'g', 'h'])
>>> E = set(['d', 'e', 'f', 'g', 'i', 'j'])
>>> A.intersection(D).intersection(E)
set([])

これにより、ノードのブートストラップ速度とノードの修復速度の両方が犠牲になる可能性があることは理解していますが、# >= RF のノード障害によってデータが失われる可能性を 100% 未満に制限することができます。この問題に関心を持っている主な理由は、クラスター内のマシンの数が増えるとマルチノード障害の可能性が高くなるため、クラスターとして 3 つのノード障害によるデータ損失の可能性を制限したいということです。大きくなります。

これはCassandra(この記事の執筆時点での最新バージョン 1.2.8) で可能ですか?

4

2 に答える 2