LocalStrategy (org.apache.cassandra.locator.LocalStrategy):
只在本地节点中保持一个副本。
public Set<InetAddress> calculateNaturalEndpoints(Token token, TokenMetadata metadata)
{
Set<InetAddress> endpoints = new HashSet<InetAddress>(1);
InetAddress local = FBUtilities.getLocalAddress();
endpoints.add(local);
return endpoints;
}
RackUnawareStrategy(org.apache.cassandra.locator.RackUnawareStrategy):
不考虑机柜因素,将Token按照从小到大的顺序,从第一个Token位置处依次取N个节点作为副本。
RackAwareStrategy(org.apache.cassandra.locator.RackAwareStrategy):
考虑机柜因素,在primaryToken之外,先找一个处于不同数据中心的点,然后在不同机柜找。
DatacenterShardStategy(org.apache.cassandra.locator.DatacenterShardStrategy):
这需要复制策略属性文件,在该文件中定义在每个数据中心的副本数量。在各数据中心副本数量的总和应等于Keyspace的副本数量。举例来说,如果Keyspace的副本总数是6,数据中心副本因子可能是3、2和1 ,3个副本、2个副本、1个副本分别在不同数据中心 - 共计6。