2016-09-08 3 views
0

私はDC1とDC2という2つのデータセンターを持っています。 DC1には複製3(完全に複製)を持つ3つのノードがあり、DC2には複製1(完全に複製された)の1ノードがあります。カッサンドラを使用しているタイタン - 複数のデータセンターの奇妙なこと

DC2の孤立したノードが起動しているとすれば、DC1のすべてのノードが停止していて、読み取り/書き込みの一貫性がどこでもLOCAL_QUORUMにあるとします。

DC2でトランザクションを実行しようとしましたが、UnavailableExceptionのためにトランザクションが失敗します。これはもちろん、ノードがオンラインではないことを意味します。しかし、なぜ? LOCAL_QUORUMのLOCAL部分は、そのデータセンターに1つのノードしかないので無視されますか?

DC2の孤立ノードには100%のデータがあるため、読み書きの一貫性の設定に関係なく、DC1に2つのノードがない限り、何もできません。

答えて

0

設定では、書き込みに成功するには2つのレプリカをディスクに書き込む必要があります。ここで失敗した書き込み(行)パーティションはダウンノードに属している可能性があります。そのパーティションのハッシュがどこに行く必要があるかを決定するためです。これらのノードを切り離すと、リングが再調整され、うまく動作します。

ただし、単純にダウンしている限り、一部の書き込みは成功し、一部の書き込みは失敗します。どんな書き込みが成功し、どのトークンが失敗するかは、単にハッシュトークンとリングトークンをチェックすることで確認できます。

例:トークン範囲が41-50のノードに対するリクエストがあるとします。レプリケーション戦略によれば、次のレプリカは1-20と11-20に移動し、LOCAL_QUORAMはダウンしているため満足されません。あなたの書き込みは失敗します。 https://groups.google.com/forum/#!topic/aureliusgraphs/fJYH1de5wBw

から

Cassandra 2 DC 6 Node example

+0

しかし、DC2には1つのノードしかありません.3つではありません.1つのノードDCのLOCAL_QUORUMは、そのノードに正しく書き込む必要があるだけです。 – Greg

0

「巨人はロックとidの割り当てのための内部整合性を使用して、それが使用するレベルが定足数である。 結果に関係なく、私はタイタンは常に両方のDCにアクセスします何をすべきか。 "