关闭

一致性Hash算法

标签: 一致性Hash算法分布式计算
126人阅读 评论(0) 收藏 举报
分类:

一致性Hash算法

一致性Hash算法是现代系统架构中最关键的算法之一,它在分布式计算系统、分布式存储系统、数据分析等众多领域中被广泛应用。
这里写图片描述
- 一致性Hash算法的关键思路在于它能够根据不同的属性数据,生成一串不相同的Hash值,并且能够将这个Hash值转换喂0至2^32-1范围的整数(或者有可排列依据的其他数据类型),形成如图的圆环。请注意这个圆环是一个抽象结构,在实际编程中需要使用各种数据结构进行模拟,例如在数据库中间件MyCat中,开发人员就使用了红黑树来形成这个抽象的环;Ceph文件系统在若干个PG中选择一个PG进行Object存储时,也使用一致性Hash算法完成。
- 一台服务器的某个或者某一些属性当然可以进行Hash计算(参与计算的属性通常是这个服务器的IP端口和开放端口),并且根据计算分布在这个圆环上的某一个点。
- 一个“处理请求”当然也可以根据这个请求的某一个或者某一些属性进行Hash计算(参与计算的属性可以是这个请求的IP、端口、Cookie值、URL值或请求时间等),并且根据计算记过分布在这个圆环上的某一个点上。
- 我们约定“处理请求”经过Hash计算后,落在A点左侧和B点右侧,则表示这些“处理请求”都由A点所代表的服务器进行处理,这样就完全解决了“谁来处理”的问题。在服务器Hash落点稳定存在的前提下,来自于同一个IP和端口的“处理请求”经过Hash计算后的数值,落在圆环上的位置都是一样的,这就保证了服务器处理映射的稳定性。
- 当某一个服务器Hash计算结果的落点由于某种原因下线,其所影响的处理请求落点也是有限的。即下一次客户端的请求将由其他的服务器Hash落点所代表的服务器进行处理。
- 一致性Hash算法中,并没有严格规定必须试用什么样的值带入什么样具体的Hash算法来计算。
- Hash算法是否优秀的三大标准:计算速度、散列速度和碰撞度。
- 丰富的快捷键


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)

五分钟让你深入了解分布式系统中常用的一致性哈希算法
  • cywosp
  • cywosp
  • 2014-04-11 00:21
  • 347188

三分钟看懂一致性哈希算法

受一篇“五分钟看懂”的启发,来个哗众取宠的标题 一致性哈希算法,作为分布式计算的数据分配参考,比传统的取模,划段都好很多。 在电信计费中,可以作为多台消息接口机和在线计费主机的分配算法,根据ses...
  • gerryke
  • gerryke
  • 2016-12-30 09:25
  • 3716

一致性Hash算法的深入理解

一致性Hash算法 关于一致性Hash算法,在我之前的博文中已经有多次提到了,MemCache超详细解读一文中”一致性Hash算法”部分,对于为什么要使用一致性Hash算法、一致性Hash算...
  • u010412301
  • u010412301
  • 2016-09-05 16:35
  • 5769

一致性hash算法(c++)

  • 2014-07-10 12:56
  • 584KB
  • 下载

一致性Hash算法的原理及实现

  • 2016-03-25 00:14
  • 243KB
  • 下载

redis集群方案-一致性hash算法

前奏 集群的概念早在 Redis 3.0 之前讨论了,3.0 才在源码中出现。Redis 集群要考虑的问题: 节点之间怎么据的同步,如何做到数据一致性。一主一备的模式,可以用 Redis 内部实现...
  • u014490157
  • u014490157
  • 2016-08-18 20:05
  • 11809

深入解读缓存(二)——一致性Hash算法

上一篇文章中,我们已经介绍了,分布式缓存的集群,与应用服务器的集群策略有所不同。分布式缓存集群,每一个节点上缓存的数据各不相同。 缓存策略 常见的策略有求留余数法和一致性Hash算法。 缓存的本...
  • liu765023051
  • liu765023051
  • 2015-10-26 00:07
  • 7348

负载均衡一致性hash算法

今天去面搜狐,聊到了一个问题,现在的负载均衡主要采用取模的方式,如果有一个机器故障了,或者我想再添加一台机器怎么处理?回来后查到了一致性hash算法。 自己看了一下资料:先说一下大概思想,一致性Ha...
  • tingting256
  • tingting256
  • 2016-09-10 23:49
  • 2235

一致性HASH算法的JAVA实现

一致性哈希算法是分布式系统中常用的算法。比如,一个分布式的存储系统,要将数据存储到具体的节点上,如果采用普通的hash方法,将数据映射到具体的节点上,如key%N,key是数据的key,N是机器节点数...
  • u013970991
  • u013970991
  • 2016-07-06 15:12
  • 268

Ketama一致性Hash算法

一致性哈希算法(Consistent Hashing Algorithm)是一种分布式算法,常用于负载均衡。Memcached client也选择这种算法,解决将key-value均匀分配到众多Mem...
  • mrliu20082009
  • mrliu20082009
  • 2011-11-20 15:09
  • 773
    个人资料
    • 访问:742次
    • 积分:115
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条