CassandraのReplication strategy
パッケージとしては、org.apache.cassandra.locator。
実装としては、AbstractReplicationStrategy。
これをベースに、以下の3つの方法がある。
- RackAwareStrategy
- キーに対応するノード群を返すRack awareなStrategyクラス。異なるデータセンターのノードまたは同じデータセンターの異なるRackからのノードを返すStrategy
- 判定は、EndpointSnichで。
- RackUnawareStrategy
- 与えられたキーに対応するノード群を返す。基本的に、ring上で隣り合う右にある3つのノードを返すStretegy.
- DatacenterShardStrategy
- replication factorがNの場合、ノードの(N-1)%2を他のデータセンターにコピーするために、それらのノードを返すStrategy
AbstractReplicationStrategy <-- RackAwareStrategy <-- RackUnawareStrategy <-- DatacenterShardStrategy
データセンターにおけるノードの場所を決定するのは、EndpointSnitchの役割。
IEndpointSnitch <-- AbstractEndpointSnitch <-- EndPointSnitch <-- DatacenterEndpointSnitch