Replica Placement Strategy(RPS)

来源:互联网 发布:禁止王者荣耀端口 编辑:程序博客网 时间:2024/05/12 08:54
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上。
      
原创粉丝点击