一致性Hash算法与虚拟节点

缘起

今天我们来说说“一致性Hash”算法,以及虚拟节点。

这并不是一个难理解的概念,希望一篇文章下来,你能完全吃透。

在网站系统发展初期,前辈工程师探索出了数据库这一系统核心组件,

数据的持久化被与系统本身解耦开,独立发展且愈加可靠。

时间往后推移,随着互联网的普及,一个系统需要承载的用户数量指数级增长,

开发者不得不横向扩展服务器,通过负载均衡技术,使用户分散到各个服务器上。

随着服务器的增多,可靠的数据库系统也不堪重负,

开发者不得不将数据库中的数据通过“分库分表”技术,切分到不同的数据库中,

减轻单一数据库系统的压力。

那么问题来了,如何知道我们需要的数据在哪个数据库中?

没错。hash!

正如我们在 HashMap 中做的一样,对参数取 hash 值,再对 hash 值取模,

就可以既均匀切分存储数据,又知道数据在哪个库中。

简单hash

举个例子,现在有A,B,C,D共4个库,和参数为1,2,3……9,10共10个数据。

插图1

我们简化hash算法为乘以1,

即 (1*1)%4=1,参数为1的数据落在A库中。

即 (2*1)%4=2,参数为2的数据落在B库中。

即 (3*1)%4=3,参数为3的数据落在C库中。

即 (4*1)%4=0,参数为4的数据落在D库中。

……

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kareza

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值