私はCassandra 2.2を使用しており、高いレベルの整合性を必要とするアプリケーションがあります。Cassandra 2.2の一貫性とタイムアウトの問題
3つのノードを持つデータセンタークラスタを1つ設定しました。 私のキースペースはreplication_factor
で作成されました。 それぞれのconfiguration.yamlファイルに2つのseed_providers(たとえばNODE_1とNODE_3)を設定しました。
重要なことは、1つのノードがダウンしていても、私のアプリケーションはフル機能でなければならないということです。
現在のところ、私のアプリがクラスタに接続する際の一貫性とタイムアウトに関する問題があります。
私は、全体のカサンドラ2.2ドキュメントを読んでいると私は私の書き込み操作のための最高のCONSISTENCY LEVEL
がQUORUM
と私の読み取り操作ONE
のためにする必要がありますが、私はまだいくつかの一貫性の問題を持っていると結論付けました。
まず第一に、一貫性の強さは正しい選択ですか? また、例えば、WHERE
句を使用した更新操作でもデータの読み取りが必要なため、UPDATE
およびDELETE
操作は書き込み操作または読み取り操作と見なされますか?私は、空間的には、キャスアンドラのワークフローの文脈では分かりません。
第2の問題は、書き込み操作中のタイムアウトです。単純で軽量のINSERT
は、ときどき私の3つのノードがすべてアップしていても "Cassandra timeout during write query at consistency QUORUM (2 replicas were required but only 1 acknowledged the write)
" または "... 0 acknoledged"というsometinesを取得します。
たとえば、write_request_timeout_in_msのように、既定値が2000ミリ秒(これはすでに高い値です)のように確認する必要があるいくつかのパラメータがありますか?
ありがとうございました。しかし、ちょっと説明してください。最初に3つのノードをレプリケーションファクタ2で使用すると、1つのノードに障害が発生した場合に書き込み操作が失敗します。 1つの障害ノードでは、まだ2つのノードを使用できます。私の考えでは、この場合、QUORUM整合性(2つの複製は確認されていなければならない)で書かなければならない。しかし、私はおそらく間違っています。ありがとうございました。 –
@ TheWingman、私は私の答えに複製に関する説明を追加しました –
これらの説明はありがとうございます。それははるかに明確です –