Cassandra数据分区

当启动Cassandra集群时,需要选择数据如何在集群中划分,这个由partitioner来完成。

Cluster中管理的所有数据被表示成环(ring).环被划分为和节点数量等同的范围(range). 每个节点加入集群时候,都要发放一个令牌(token),它决定了节点在环中的位置以及负责的数据的range.

Column Family(也就是对应关系数据库的表)就是按照分区来的。

 

Cassandra 数据分区_第1张图片

 

配置partitioner,则需要指定分区策略:

RandomPartitioner(随机分区):这是Cassandra集群中默认的分区策略,它使用了一致性hash的算法。这个算法说明详细见:

http://www.cnblogs.com/coser/archive/2011/11/06/2238359.html

这种策略优点是:一旦你token被分配了,那么column family的数据会被平均的分配到多个集群节点中,并且简化了负载均衡。对于column family数据的读写也是平均的。

 

OrderedPartitioner(排序的分区):这个Cassandra集群并不推荐。

这必须保证所有的key已经排序了。

 

我们查看下我们系统的分区策略选择:

Cassandra 数据分区_第2张图片