1

どの Cassandra ノードに書き込みが行われているかを示すテストを作成するにはどうすればよいので、ノード数とレプリケーション係数を指定し、挿入試行の結果として各書き込みの影響を受けるノードを取得する必要があります。これにより、実行時にデータがどの程度均等に分散されるかがわかります。私はテストデータを持っているので、実際に必要なのは、本番環境で実行する方法で構成されたモック Cassandra を呼び出す方法であり、影響を受けるノードが返されます。Cassandraストレスツールを完全に見逃していない限り、Cassandraストレスツールでそれを行う方法がわかりません...

4

1 に答える 1

1

クエリの影響を受けたすべてのノードを知りたいので、トレースを調べることをお勧めします。

以下にいくつかのアプローチを示します。

  1. cassandra-stress を使用し、各 C* ノードでnodetool settraceprobabilityを使用してトレースを有効にし、.01 などの低い値に設定します。これにより、クエリの 1% でクエリが有効になり、system_traces.events テーブルと sessions テーブルを介してシステム内のトレースの結果を確認できます (これらのテーブルの使用方法の詳細については、この記事を参照してください)。トレースには、コーディネーターとして使用されたノード、読み取り/書き込みのレプリカとして使用された他のノード、個々のステップの処理にかかった時間などの情報が含まれます。どのノードが照会されるかはクラスター構成の影響を受けるため、アプリケーションが最終的にデータを照会する方法は、cassandra-stress とはわずかに異なる場合があることに注意してください。cassandra-stress の使用JavaDriverClient#connect . 設定を JavaDriverClient が行っていることと比較し、違いを理解する必要があります。アプリケーションに合わせて JavaDriverClient を変更することもできます。
  2. また、cassandra を使用するアプリケーションに対するテストを作成することもできます。java-driver には、トレースを有効にしてデータを観察するための API があります。これについては、こちらのビデオで説明しています。さらに、ResultSet を取得すると、どのホストが試行されたかなどの情報を提供するメソッドgetExecutionInfo()がありますが、これには、すべてのレプリカではなく、コーディネーターとして使用されたノードのみが含まれます。
于 2015-07-15T15:28:28.793 に答える