一致性哈希环

大神的分享,我写下自己的一些理解


首先,思考一个问题:你有一个亿级访问量的网站,每天每小时每分钟有大量的数据在传输,存读数据库非常频繁,服务器的压力很大。然后我们的解决方案是什么:缓存,memcache,redis。那么,问题来了,你有10台缓存服务器,想象一下:一条数据来了要写,写到哪台服务器上去;一个请求来了,要取一条数据,从哪台服务器取?读、取数据如何合理的选择服务器?


常规的解决方案是:随机,随机选择服务器
但是会带来问题,(1)数据冗余,同一份数据可能冗余存在于多台服务器上(因为每次选择读/取的服务器是完全随机的)
     (2)数据访问失败:数据存在与server1上,但是读取的时候随机到了server2上,所以就会读不到数据
这显然是一个很严重的问题


解决方案:
一致性哈希环---(当然这也是一种相对的解决方案,但是基本已经可以解决实际中的场景,算法的缺陷还可以通过实际场景中的做一些弥补)
一致性哈希环存在的问题:分配不均衡


解决方案:
虚拟节点(找下一个节点,为什么不用就近原则去找,因为就近的原则还是不能均衡的)

代码实现:
参考github:https://github.com/897798676/consistent-hash





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值