几种数据分布算法

一、hash算法

hash算法的实质是对key进行hash,然后将hash后的值对节点个数取模。其运用场景包括hashmap、数据库分库分表等。相对来说,hash算法实现较简单。但是也存在一些问题,比如当节点个数扩容或者减少,那么存在原来节点中的所有数据需要重新对新节点个数取模,分配新的节点位置。如下图所示,假设当前有三个节点,现在有三个key,通过hash(key)%3后,key1路由到node3、key2路由到node2、key3路由到node1。

 当增加或者减少node后,key1、key2、key3根据新的节点个数就很难保证还能路由到原来的节点,因此所有的key都会受到影响。

二、一致性hash

2.1 基本思想

hash算法的思想是对节点个数进行取模,一致性hash的思想则是将节点分布到圆环上,圆环的取值范围从0到Integer.MAX_VALUE-1,当对key进行路由时,先计算key的hash值,然后将该值对应到圆环,再顺时针旋转遇到的第一个节点就是路由的节点。如图所示,假设key1,key2,key3经过hash后,hash(key1)落在node3~node1之间,hash(key2)落在node1~node2之间,hash(key3)落在node2~node3之间࿰

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值