2017-04-17 12 views
2

Cassandraでは、Hinted Handoff(HH)は一貫性レベルが満たされる場合にのみ発生します。また、ヒントはクライアントには読めません。整合性レベル> ANYの場合、HHを使用すると、書き込みおよび読み取りの可用性を向上させることができません。オンラインレプリカが整合性要件を満たすには不十分であるため依然として失敗します。
ヒントハンドオフのポイントは何ですか?パフォーマンスのトレーディング能力? フェールバックノードを他のレプリカノードと同期させるだけでは(つまり、再複製するのはなぜですか?CassandraでHinted Handoffを使用する際のポイントは何ですか?特に一貫性> ANY?

答えて

1

ヒント付きハンドオフは、単に追加のエントロピー対策です。つまり、すぐに修復を実行する必要はなく、ノードがオンラインに戻ったときにデータが一貫性を保ちます(マイナーな停止があった場合)。

複製していないデータに何らかの形でマークを付けなければならないので、レプリケーションでこれを世話するのはあまりにも複雑すぎると思います。基本的には、ヒントハンドオフ。公式ドキュメントから

いくつかのもの: https://docs.datastax.com/en/cassandra/2.1/cassandra/dml/dml_about_hh_c.html#concept_ds_ifg_jqx_zj__extreme-write-availability

基本的にはマイナーな停電がありますが、クラスタの書き込みスループットを最大化することです。設定が可能で、読み取りと書き込みの両方に一貫性の高いレベルがある場合に記述した場合は無効にすることができます。

さらに「再複製」を実行する必要があります。つまり、修復してください。ヒント付きのハンドオフは本当にすべてを処理することができないためです。

個人的には、R-CL:ONE、W-CL:ONE、RF:2、NODES:3という状況でそれらを使用しました。クラスタでメンテナンスとローリング再開を実行しながら書き込みスループットを維持したので、 。だから私はそれがW-CL < RFの状況ではうまくいくと言うでしょう。実際に

https://blog.threatstack.com/scaling-cassandra-lessons-learned

、ただの設定でそれらを無効にします。

はその後、再びこのような意見があります。長時間の停電や負荷急上昇中にデータを失うのは簡単ではなく、負荷スパイクのためにノードがダウンした場合は、リング上で問題を渡し、最終的に複数のノードまたはすべてのノードをダウンさせます。カザンドラでこれを経験したことはありませんでしたが、ヒント付きのハンドオフをサポートしていた他のシステムにはありました。

+0

お返事ありがとうございます!私はまだいくつか質問があります。 HHは書き込みスループットをどのように最大化しますか?なぜカッサンドラは定期的な自動修理(読書修理のような)を計画するのではなく、人々に手動で修理を依頼するのですか? – roymaztang

+0

基本的に修復は高価な操作です。すべてのデータをMerkleツリーと比較する必要があるため、管理者はスケジューリングする必要があります。自動的にhttps://github.com/spotify/cassandra-reaperのようなツールもあります。多かれ少なかれ、このプロセスはデータを一貫性を保つためにgc_grace期間を1回実行する必要があります。最大化は間接的に行われます。ノードがダウンすると、書き込みを受け付けません。ノードが戻った後にコーディネーター・ノードがそれらを保管すると(安価な操作で)、ノード全体に存在するかのように、クラスタ全体に同じ量の書き込み済みレコードが残ります。 –

関連する問題