MYCAT10种常见分片规则之九 — PartitionByMurmurHash(一致性哈希)

MYCAT10种常见分片规则之九 — PartitionByMurmurHash(一致性哈希)



一、使用场景

所谓一致性哈希, 相同的哈希因子计算值总是被划分到相同的分区表中,不会因为分区节点的增加而改变原来数据的分区位置,比如,原来数据 有6个节点,现在有7个节点,原来坐落在6个节点中的数据 ,不会因为新增一个 节点而导致存量数据的分区发生改变, 一般用于数据迁移与合并的场合,解决分布式数据扩容的问题。


二、使用说明

1.指定分区字段名称。
2.类全名:io.mycat.route.function.PartitionByMurmurHash

rule.xml 配置如下:

<tableRule name="sharding-by-murmur">
  <rule>
  <columns>user_id</columns>
  <algorithm>murmur</algorithm>
  </rule>
</tableRule>
<function name="murmur" class="io.mycat.route.function.PartitionByMurmurHash">
   <property name="seed">0</property><!-- 默认是 0-->
   <property name="count">2</property><!-- 要分片的数据库节点数量,必须指定,否则没法分片-->
   <property name="virtualBucketTimes">160</property><!-- 一个实际的数据库节点被映射为这么多虚拟
节点,默认是 160 倍,也就是虚拟节点数是物理节点数的 160 倍-->
<!--
<property name="weightMapFile">weightMapFile</property>
节点的权重,没有指定权重的节点默认是 1。以 properties 文件的格式填写,以从 0 开始到 count-1 的整数值也就是节点索引为 key,以节点权重值为值。所有权重值必须是正整数,否则以 1 代替 -->
<!--
<property name="bucketMapPath">/etc/mycat/bucketMapPath</property>
用于测试时观察各物理节点与虚拟节点的分布情况,如果指定了这个属性,会把虚拟节点的 murmur hash 值与物理节点的映射按行输出到这个文件,没有默认值,如果不指定,就不会输出任何东西 -->
</function>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值