Replica Placement Strategy(RPS)

replica placement strategy只是针对Keyspace而言的,将会决定这个Keyspace的replica如何分布到Cluster上。
       
       SimpleStrategy
       当用cassandra自带的cli创建了一个keyspace的时候SimpleStrategy是默认的RPS。当用代码创建的时候,需要指定这个参数。
       SimpleStrategy中,第一个replica将会被放在partioner确定的Node上。其他的replica将会按照围绕token ring顺时针的方向依次放到第一个replica确定的Node之后的Node上,不会考虑RAC或者DC的位置。
       如下图:A1,A2,A3表示数据A的3个replica。
【cassandra】About Replication in Cassandra - sylareclipse - zorksylar
 
      NetworkTopologyStrategy
      NetworkTopologyStrategy将会考虑到RAC和DC的位置,并且能够指定每个DC中数据的replia的个数。
      这时候RF不能够随便定了,在确定RF设定多少的时候,需要考虑:
       1)最好能够保证read locally,避免跨DC的延时
       2)失败的情况。
      多个DC的时候,最常见RF设定是:
      1)RF=2,在每个DC中。这样能够保证在每个DC中的single Node的失败,并且能够保证consistency level为ONE时候的local read.
      2)RF=3 ,在每个DC中。这样能够容忍在consistency level为LOCAL_QUORUM时候的每个DC 的one Node failure,或者consistency level为ONE的情况下的每个DC的multiple node failure。
      上面只是建议。每个DC的RF可以不一样。
       在采用这种的时候,replica placement对每个DC来说都是独立的。每个DC中,每个数据的第一个replica的位置都是根据partitioner确定的,其他的replica按照ring的顺时针的第一个与上个replica不同RAC的Node上,如果没有找到这样的Node,这个replica将会放到和上一个replica同一个RAC的Node上。这样做是因为同一个RAC上的Node可能会同时遇到failure的情况,如断电之类的,所以NetworkTopologyStrategy尽量将replica放到不同的RAC上。
      举个例子:数据R,DC1和DC2的RF=2。在DC1上,首先根据partitioner确定R1位置在Node3,然后找下一个RAC,将R2放到Node4。在DC2,同理。

【cassandra】About Replication in Cassandra - sylareclipse - zorksylar【cassandra】About Replication in Cassandra - sylareclipse - zorksylar
 
      NetworkTopologyStrategy还依赖于Snitch来精确的确定replica是放在哪个DC和RAC上。
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值