Cassandra数据分布之3几个概念之间的联系

        说明:本篇基于Cassandra1.2.0版本。

       在Cassandra中,关于数据分布的部分存在数据中心、机架、虚拟节点、副本、副本策略、分区器等概念,它们密不可分,有时又容易混淆不易理解。今天我稍微做个总结,希望能起到抛砖引玉的作用,欢迎讨论。

网络拓扑结构

        为了便于Cassandra未来的扩展,一般会配成数据中心机架感应模式。简单一点的架构图可以如下图。

         

        上图灰色部分的意思是此网络拓扑结构是通过cassandra-topology.properties来配置(当然也可以使用IP来区分的方式)的。如果要此配置生效,还需要在cassandra.yaml修改endpoint_snitch为PropertyFileSnitch

虚拟节点

        使用虚拟节点的好处,可以参考这里。在cassandra1.2.0的配置中没有配置虚拟节点,需要在cassandra.yaml中将num_tokens: 256前面的注释去掉。

        在cassandra的多数据中心的集群中,每个数据中心的数据是完全一样的。单个数据中心的所有节点的虚拟节点会随机分布在哈希环上。如果1个数据中心有2个节点,每个节点的虚拟节点是256,那么哈希环会被平均分成512份。每一份也称为一个哈希范围。每个节点虚拟节点的哈希范围不是连续。

副本相关

       cassandra中的每一份数据都称为一个副本,副本没有主次之分,同等重要。而数据的副本和副本策略是针对keyspace来说的,即一份数据有多少个副本,使通过其所属的keyspace来配置。如下面这段:

CREATE KEYSPACE cltest
     with placement_strategy = 'org.apache.cassandra.locator.NetworkTopologyStrategy'
     and strategy_options = {'DC1' : 2 , 'DC2' : 2}
        这里cltest使用副本策略为 NetworkTopologyStrategy,副本因子为4,两个数据中心各2个副本,每个数据中心副本数也可以不一样。
        那我们存储的数据是如何对应到相应的虚拟节点的呢?这就该分区器出场了。

分区器

        我们存储的数据都会有一个key,存储的时候分区器对key哈希后得到一个哈希值(此哈希值必是哈希环上一个值),然后根据此哈希值找到对应的哈序范围,也就找到虚拟节点了。推荐使用Murmur3Partitioner。分区器在cassandra.yaml文件中partitioner处配置。


总结:本文说明了Cassandra数据分布的几个大的概念,其中联系文中没有太明示,其实就是文中展示的从大到小的一个关系。


Cassandra数据分布系列文章:

  1. Cassandra数据分布之1数据中心和机架
  2. Cassandra数据分布和副本
  3. Cassandra数据分布之3概念之间的联系
  4. Cassandra数据分布之4机架感应
  5. Cassandra数据分布之5分区器
  6. Cassandra数据分布测试
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值