cassandra的数据分布和副本策略

由于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: 推荐方式,因为可以扩展到多数据中心。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值