問題タブ [gossip]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cassandra - Cassandra : Nodetool GossipInfo および Nodetool Status に表示されるノードの置き換え
Cassandra 3.9.0 を使用しています。最近、1 つのノードに関して問題が発生しました。このノードは、ディスク使用率が 100% に達したためクラッシュしました。
Datastaxが提供する次の指示に従って、ノードを新しいノードに置き換えることを考えている1つのアプローチ。 https://docs.datastax.com/en/cassandra/3.0/cassandra/operations/opsReplaceNode.html
Test Env で置換を行った後、新しいノードからnodetool statusを実行すると、古いノードが表示されません。ただし、他のノードから実行すると、古いデッド ノードが表示されます。同様に、新しい着信ノード以外の既存のノードでnodetool gossipinfoを実行すると、古いノードの参照が見つかります。
以下に示すように、a2 を a4 に置き換えます。
交換ノードである新しい着信ノードからノード ツール ステータスを実行すると、次のような結果が得られます。
この状況を解決するための推奨される方法はありますか?
java - Cassandra が一貫性のない値を返す可能性はありますか?
私は Cassandra を初めて使用しますが、Cassandra が一貫性のない値を返す可能性はありますか?
たとえば、6 つのノード クラスタがあるとします。
LOCAL_QUORUM = (replication_factor/2) + 1
これにより、4 のローカル クォーラムが得られます。したがって、単純な書き込みの場合、6 つのノードのうち 4 つが応答する必要があります。つまり、4 つのノードが最新の値を持つことになります。
私の理解では、更新されなかった 2 つのノードは最終的に Gossip Protocol を通じて更新されます。
その場合、プロトコルが発生する前に更新されなかった 2 つのノードのいずれかからクライアントが読み取るとどうなりますか? 古い値を取得するリスクがありますか?
読み取り修復は、これらすべてにどのように関係していますか?
※また、簡単な補足です。これを行うことはありませんが、複製係数を整合性レベルと同じに設定した場合、それは基本的に背面の 2PC (2 フェーズ コミット) と同じように動作しますか?