0

Cassandra のアトミック性に関する Datastax のドキュメントによると、QUORUM の書き込みは 1 つのノードでのみ成功し、ロールバックされません (アトミック性の章を確認してください: http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra /dml/dml_about_transactions_c.html )。そのため、RF=3 のクラスターで QUORUM 書き込みを実行していて、1 つのノードに障害が発生すると、書き込みエラー ステータスが表示され、別のノードで 1 つの書き込みが成功します。これにより、次の 2 つのケースが生成されます。

  1. 書き込みは、他のノードがオンラインになったときに伝達されます。
  2. 伝播前に書き込みが完全に壊れることをノードが受け入れた場合、書き込みは完全に失われる可能性があります。

このような失敗に対処するための最善の方法は何ですか?

4

1 に答える 1

4

QUORUM 書き込みが「TimedOut」例外で失敗した場合、書き込みが成功したかどうかはわかりません。書き込みを再試行し、失敗したものとして扱う必要があります。グループ化する必要がある複数の書き込みがある場合は、それらを「バッチ」に配置して、バッチが一緒に成功または失敗するようにする必要があります。

どちらの場合でも、一貫した結果が返されることを気にする場合は、QUORUM 読み取りも実行する必要があります。RF=3 で、QUORUM 書き込みが 1 つのノードでのみ取得された場合、新しい値を含む QUORUM 読み取りが初めて成功すると、他のノードの 1 つで修復され、QUORUM 読み取りは常に新しい値を提供します。価値。そのため、値が ONE で書き込まれたとしても、連続する QUORUM 読み取りでは、値が時間内に戻ることはありません。

于 2013-08-10T16:09:34.140 に答える