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