一致性哈希
前面说到,书法家轮流依此给徒弟们分配任务,过了不久这样的节奏也出了问题,有时候有个徒弟生病了,就没办法去处理任务。此外还有很多慕名而来的学生也渐渐的出徒可以独当一面来承担任务,排班表就越来越难维护。
书法家不愧是书法家,就想到了一个办法,先是做了一个容纳2^32的格子,绕城一个圈,然后让徒弟们用自己的手机号计算一次hash值,然后放到这个格子里面。然后每一笔订单来的时候,用客户的手机号也计算一次哈希值,放到表格指定的位置,然后从这个位置开始顺时针往后找,第一次遇见谁,酒吧订单分配给谁,这样,就算徒弟增多或者减少,都不会对整体的排班表产生多大的变化了。
书法家很得意,把这种格子和处理订单请求的关系起名叫一致性hash。
一致性哈希的虚拟节点
过了一段时间,有徒弟又过来找书法家说,自己处理的订单太多了,但是其他有的同学却处理的很少,书法家觉得不对啊,这个方案应该很完美啊?
然后书法家拿出了那个2^32的表格一看,明白了,有些徒弟和前一个徒弟离的太近,有的徒弟距离前一个又太远,导致了这个问题,但是问题知道怎么回事就不害怕了,书法家一琢磨,点子就来了。
书法家说,这样,你们每个人在自己的手机号后面随机几个字符,每个人构造三个电话号出来,然后重新计算hash值,放回格子里。果然,再拿起来各自一看,平均多了,后来就没有徒弟来说分配不均衡的问题了。
分布式
随着时间的推移,书法家的订单越来越多,越来越多,书法家原来都是自己去采购笔墨纸砚,结果现在自己买不过来了,于是只好雇佣了一些小伙伴,分别帮自己去买笔,帮自己去买纸,帮自己去买砚台,帮自己去租工作室,等等,于是慢慢的就有了一歌买笔集群,买纸集群,买砚台集群,等等。
产业越来越大,书法家决定要定居了,于是就买了一片地,建造了一个城市,给这个城市起了一个名字,叫做分布市
网友评论