前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >求求你别问我一致性hash了

求求你别问我一致性hash了

作者头像
Leetcode名企之路
发布2018-11-08 18:19:02
6150
发布2018-11-08 18:19:02
举报
文章被收录于专栏:Leetcode名企之路

面临的问题

首先,只有存储型的组件,我们才会使用一致性hash;计算型的服务增删节点对整个任务一般没影响,所以负载均衡直接用random就可以。那么像redis、memcache怎么实现负载均衡的呢? 和普通的hash对比核心要解决的问题是:增删机子,hash不失效,节点变动尽可能少。

求余hash算法:

hash(object)%N

一个缓存服务器宕机了,这样所有映射到这台服务器的对象都会失效,我们需要把属于该服务器中的缓存移除,这时候缓存服务器是 N-1 台,映射公式变成了 hash(object)%(N-1) ;由于QPS升高,我们需要添加多一台服务器,这时候服务器是 N+1 台,映射公式变成了 hash(object)%(N+1) 。

一致性HASH算法

  1. 一致性Hash算法将整个哈希值空间组织成一个虚拟的圆环.

hash环

  1. 存储服务器的ip或主机名作为关键字进行hash。

服务器hash

  1. 将存储/查询对象hash进行hash, 确定此数据在环上的位置,从此位置沿环顺时针“行走”,第一台遇到的服务器就是其应该定位到的服务器!

顺时针hash

扩容、缩容

现假设Node C不幸宕机,可以看到此时对象A、B、D不会受到影响,只有C对象被重定位到Node D。在一致性Hash算法中,如果一台服务器不可用,则受影响的数据仅仅是此服务器到其环空间中前一台服务器。扩容同理。

扩容、缩容

应用

很多存储组件都是用的一致性hash来做Partition,比如Apacha Cassandra(一种nosql数据库), Dynamo, CouchBase.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-10-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Leetcode名企之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 面临的问题
  • 一致性HASH算法
  • 扩容、缩容
  • 应用
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档