3

ドキュメント [1] では、次のように述べられていました。

if using a write consistency level of QUORUM with a replication factor
of 3, Cassandra will send the write to 2 replicas. If the write fails on
one of the replicas but succeeds on the other, Cassandra will report a 
write failure to the client. 

したがって、2 つのレプリカのみが更新を受信すると仮定すると、書き込みは失敗します。ただし、最終的な一貫性により、すべてのノードが最終的に更新を受け取ります。

それで、再試行する必要がありますか?それともそのまま放置?

何か戦略はありますか?

[1] http://www.datastax.com/docs/1.0/dml/about_writes

4

2 に答える 2

0

リトライしてもあまり変わりません。問題は、Cassandra が常に同じ例外をスローするため、データが永続化されたかどうかを実際にまったく知ることができないことです。

いくつかのオプションがあります:

  • ヒントを有効にし、cl=any を指定してリクエストを再試行します。正常な応答は、少なくともヒントが作成されたことを意味します。つまり、データは存在するが、まだアクセスできないことがわかります。
  • ヒントを無効にして、1 つのヒントで再試行します。成功した応答は、少なくともノードがデータを受信できることを意味します。エラーの場合は、削除を実行してください。
  • astyanax とその再試行戦略を使用する
  • Cassandra 1.2 に更新し、先行書き込みログを使用する
于 2013-04-19T10:32:36.450 に答える