分方式缓存常用的一致性hash是什么原理
分方式缓存常用的一致性hash是什么原理
一致性hash是用来解决什么问题的?
先看一个场景
有n个cache服务器,一个对象object映射到哪个cache上呢?
可以采用通用方法计算object的hash值,然后均匀的映射到到n个cache
hash(object) % n
初始阶段运行正常,但当cache服务器发生变动后就会出现问题
例如
(1)一个cache服务器down掉了,这样所有映射到此cache的对象都会失效,需要把此cache移除,这时候映射公式变成了
hash(object) % (n-1)
(2)由于访问加重,需要添加cache ,这时候映射公式变成了
hash(object) % (n+1)
这两种情况几乎会使所有的cache都失效,大量的访问都会直接访问后台服务器,造成极大的压力
一致性hash算法就是为了解决普通hash的不足,把损失降到最低
一致性hash的原理
一致性hash将整个哈希值空间组织成一个虚拟的圆环
假设某哈希函数H的值空间为0-2^32-1(2^32为2的32次方)
整个空间按顺时针方向组织,0和232-1在零点中方向重合
把各个cache服务器通过hash计算,根据hash值顺时针排列到圆环上,可以根据服务器的IP或者主机名进行计算
例如有 A B C 三台服务器
现在可以映射object了,映射规则为:
将key使用相同的hash计算出值,并确定此数据在环上的位置,从此位置顺时针行走,第一台遇到的cache服务器就是其应该定位到的服务器
例如有4个object需要映射到cache服务器
根据映射规则
object 1 -> A
object 2、3 -> B
object 4 -> C
下面看cache服务器的增减情况
(1)移除
例如A出现异常,需要移除
object 1 失效,需要映射到B
受影响的只有object 1
(2)添加
cache压力增加,需要添加服务器,新增cache服务器D
object 2 需要重新映射到D
受影响的只有object 2
可以看到一致性hash比普通hash高效了很多
分方式缓存常用的一致性hash是什么原理的更多相关文章
- 一致性Hash算法的原理与实现(分布式映射算法)
一致性Hash算法解决的问题: 解决分布式系统中的负载均衡问题 背景问题:有N台服务器提供缓存服务,需要对服务器进行负载均衡,将请求平均发到每台服务器上,每台服务器负载1/N的服务 硬Hash映射:将 ...
- 一致性Hash(Consistent Hashing)原理剖析
引入 在业务开发中,我们常把数据持久化到数据库中.如果需要读取这些数据,除了直接从数据库中读取外,为了减轻数据库的访问压力以及提高访问速度,我们更多地引入缓存来对数据进行存取.读取数据的过程一般为: ...
- 自己实现一个一致性 Hash 算法
前言 在前文分布式理论(八)-- Consistent Hash(一致性哈希算法)中,我们讨论了一致性 hash 算法的原理,并说了,我们会自己写一个简单的算法.今天就来写一个. 普通 hash 的结 ...
- 图解一致性hash算法和实现
更多内容,欢迎关注微信公众号:全菜工程师小辉.公众号回复关键词,领取免费学习资料. 一致性hash算法是什么? 一致性hash算法,是麻省理工学院1997年提出的一种算法,目前主要应用于分布式缓存当中 ...
- 7.redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗?
作者:中华石杉 面试题 redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗? 面试官心理分析 在前几年, ...
- OpenStack_Swift源代码分析——Ring基本原理及一致性Hash算法
1.Ring的基本概念 Ring是swfit中最重要的组件.用于记录存储对象与物理位置之间的映射关系,当用户须要对Account.Container.Object操作时,就须要查询相应的Ring文件( ...
- 11.redis cluster的hash slot算法和一致性 hash 算法、普通hash算法的介绍
分布式寻址算法 hash 算法(大量缓存重建) 一致性 hash 算法(自动缓存迁移)+ 虚拟节点(自动负载均衡) redis cluster 的 hash slot 算法 一.hash 算法 来了一 ...
- 什么是一致性hash?
一致性hash 前言 说出来大家可能不相信,我昨天做梦梦到自己在面试,然后面试官问了我这个问题哈哈~然后我就打算按照自己的理解写一写.如果有写的不对的欢迎大家指正! 直接开始 普通hash算法 普通h ...
- 一致性Hash的原理与实现
应用场景 在了解一致性Hash之前,我们先了解一下一致性Hash适用于什么场景,能解决什么问题?这里先放一下我自己认为适用的场景.一致性Hash适用于服务器动态扩展且需要负载均衡的场景 试想以下场景, ...
随机推荐
- Sublime Text3 常用快捷键
1. 更改变量名的几种方法 a.选中变量,ctrl+d 一个个选择 b.选中变量,alt+F3 2.查找打开过的文件:Ctrl+P,然后输入最近的文件名就可以即时预览到文件内容. 3.ctrl+r ...
- while do while 区别
一.while语句的一般形式为:while(表达式)语句其中表达式是循环条件,语句为循环体.while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体语句. int i=10; whil ...
- RDIFramework.NET V2.5(.NET快速信息化系统开发框架) Web版界面样例(可参考)
RDIFramework.NET V2.5(.NET快速信息化系统开发框架) Web版介绍 现已升级到V2.8,点击查看 B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起 ...
- Linux下安装APache
1:在图形界面下下载apache 安装包,我下的是 httpd-2.2.9.tar.gz 源码安装包,地址是http://httpd.apache.org/download.cgi 2:用:gzip ...
- PinPhoto On OS X
把多张图片摆放到屏幕任何位置并保存成文件,下次打开时恢复之前的状态! 一般使用场景: 经常要看的图片,比如说软件快捷键.库的API.英文生词.常用配色等等摆好在屏幕上以便查看和记忆. 用PS等画画.设 ...
- cocos2d-x使用AssetsManager类实现资源的在线更新
从2.1.2版本开始,2dx在libExtensions下添加了一个AssetsManager类用于资源的在线更新和简单的版本管理,同时添加了AssetsManagerTest项目示范了AssetsM ...
- iphone和ipad各控件大小
ipad和iphone是一样的:
- 161209、简要分析ZooKeeper基本原理及安装部署
一.ZooKeeper 基本概念 1.ZooKeeper 是什么? Zookeeper官网地址: http://zookeeper.apache.org/ Zookeeper官网文档地址:http:/ ...
- free查看可用缓存
本篇转自:http://www.cnblogs.com/coldplayerest/archive/2010/02/20/1669949.html 解释一下Linux上free命令的输出. 下面是fr ...
- Sharepoint2013切换用户菜单
Sharepoint2013中没有切换用户的菜单,每次登录后,浏览器就会记住密码.要重新换一个用户登录的时候,就需要把浏览器都关闭,然后重新启动.这样非常不方便.特别是在测试权限这一块的时 ...