cassandra的数据分布和副本策略

来源:互联网 发布:淘宝网中老年皮鞋 编辑:程序博客网 时间:2024/04/29 05:48

由于cassandra集群的每个节点是对等的,所以数据的分布和副本是在一起的。

数据是通过表组织起来的,通过行键(主键)标识,主键决定了数据存储在哪个节点。每一行会有多个副本(replica),注意第一份数据也被称为副本。

当建立一个集群时,必须指定以下内容:

虚拟节点:把数据分配到物理机器节点

分片器:在整个集群中对数据进行分片

副本策略:决定每行数据的副本

Snitch: 决定副本策略的拓扑信息。

数据分布

1.一致性hash

cassandra为每个主键计算一个hash值,为每个节点指定一个其负责的hash值范围,根据主键hash值和节点负责的hash值范围将不同的行存储到不同的节点。

2.数据如何分布

在1.2之前,必须为每个节点分配一个token,每个token决定了节点在集群环上的位置以及它负责保存的数据(根据主键hash值)。

1.2版引入了虚拟节点,允许每个节点拥有多个小的hash范围。虚拟节点也使用一致性hash分布数据,但是不需要产生和分配token。

如下图所示:

副本策略

一行有几个副本由副本因子参数决定,1表示每行只有一个副本,2表示每行有2个副本,保存子不同的节点上。所有的节点都同样重要,没有主次之分。

副本数量应该不超过集群节点的数量。有两种副本策略:

SimpleStrategy:适用于只有一个数据中心的状况。第一个副本的存储位置由分片器(partitioner)决定,其他副本按照顺时针方向依次放在其它节点。

NetworkTopologyStrategy: 推荐方式,因为可以扩展到多数据中心。