码迷,mamicode.com
首页 > 其他好文 > 详细

一致性哈希简述

时间:2014-11-13 18:50:22      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   ar   sp   on   2014   问题   

举个例子

现在你写好了一个牛逼的cache服务,但是这个是单机版本。给你十台机器,让你做均衡。

你可能会想到 hash(request)%N来决定分到哪个机器。

bubuko.com,布布扣

理论知识

一致性:我又把它叫做可加性,就是你的哈希算法得能允许这样的情况。为了扩容我加了一个cache机器进来,你得让原来哈希到老机器上的流量能够分流到新机器上来

平衡性:算法得让流量尽可能的分到各个cache上

 

为了解决什么问题

在“举个例子”中,那么搞法的话,会出现什么问题。下周流量涨了,下游顶不住了,得加cache机器。或者老大说机器不够了,要回收cache机器。

%N的N要变,那么意味着基本上所有的cahe都失效,瞬间下游流量爆炸了,在这个瞬间,对后台系统是灾难。

如果你的%N的N不变,那么减机器的情况,你可能勉强忍过去,顶多就一小部分cache失效。但是加机器肯定搞不定。显然,这个策略走到了瓶颈。

 

什么是一致性hash

怎么搞定一致性问题

环形哈希空间:我们把hash key的集合理解为一个环形的空间,比如int的话,0- 232-1

bubuko.com,布布扣

cache映射到hash空间

key映射到hash空间

把key映射到cache,key沿着hash空间的顺时针出发,找到第一个cache就是他的归宿

好了,到此,一致性问题解决了。

bubuko.com,布布扣

怎么搞定平衡性问题

虚拟节点,实际的cache节点赋值出n份替身分散到hash空间即可解决。

一致性哈希简述

标签:style   blog   http   color   ar   sp   on   2014   问题   

原文地址:http://www.cnblogs.com/stevinwang/p/4095469.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!