2012-04-03 58 views
1

Cassandraは、行キーまたは個々のワーカースレッドの読み取り要求を処理するために、列ファミリのスタスタブルを読み取るために並行スレッドを使用しますか?cassandraが複数の読み取り要求を読み取る

[同時スレッドとシングルスレッドを使用して]もう一方のオーバーヘッドはどのくらいですか?

答えて

1

Cassandraの段階的なイベント駆動型アーキテクチャ(SEDA)を実装する典型的なアプリケーションではSEDA

を参照して、単一の作業単位は、多くの場合、単一スレッドの範囲内で行われます。たとえば、書き込み操作は、同じスレッド内で開始および終了します。しかし、Cassandraは異なっています。その同時実行モデルはSEDAに基づいているため、あるスレッドから開始して別のスレッドに渡して、他のスレッドに渡すことがあります。しかし、別のスレッドに作業を渡すことは現在のスレッドに任されていません。代わりに、作業はステージに細分され、ステージに関連付けられたスレッドプール(実際にはjava.util.concurrent.ExecutorService)が実行を決定します。ステージは基本的な作業単位であり、1つの操作で内部的に1つのステージから次のステージに状態遷移することができます。各ステージは異なるスレッドプールで処理できるため、Cassandraは大幅なパフォーマンス向上を経験します。 Readは、cassandraのステージとして表現されているので、Readステージには複数のスレッドが含まれているため、読み込みステージの複数のスレッドが読み込みに使用されているかどうかを理解するためにソースコードを詳しく調べる必要があります。

関連する問題