Consistent Hashing

作者: DjangoW | 来源:发表于2018-08-12 22:38 被阅读0次

场景描述
假设有n个cache server,为了方便每个用户访问,要将用户的缓存数据存放在某一台cache server上面,同时也可以减少cache数据的冗余,如何设计?

基本hash算法
给n个cache server编号1 2 ... n。对用户访问ip做hash并对n求余:hash(ip)/n得到1...n范围的值,根据这个值将用户请求分配到固定server上。
问题
如果某台cache server挂掉(e.g. 编号为n的server挂掉了),那么hash(ip)/n得到n的用户将无法被处理,此时只能修改求取范围的函数为hash(ip)/(n-1),但是这样会导致大部分的缓存失效。

分布式一致性hash算法
假设hash算法得到一个1~2^32范围的一个数。

  1. 首先通过hash(cacheIP)得到cache server的hash值,分部到一个1到2^32的环中。
  2. 对用户ip做哈希hash(ip)得到一个值,向下游走直到找到第一个cache server,将该用户请求发往该server。
  3. 如果某台cache server挂掉了,影响的只是存在该server上面的cache。
  4. 可以存一个cache server和hash值范围的散列表,这样可以不用游走直接找到hash(ip)对应的cache server。


    remove.JPG

Cassandra的分布式cluster架构实现就是类似的环结构。

Reference

https://blog.csdn.net/v_july_v/article/details/6879101

相关文章

  • 一致性hash算法

    consistent hashing算法早在1997年就在论文Consistent hashing and...

  • 何为一致性Hash算法

    一致性哈希算法(Consistent Hashing)最早在论文《Consistent Hashing and R...

  • Consistent Hashing

    场景描述:假设有n个cache server,为了方便每个用户访问,要将用户的缓存数据存放在某一台cache se...

  • Consistent Hashing

    一致性哈希算法不管SQL 还是NoSQL都需要用它。 NoSQL帮你实现了, SQL没有帮你实现。需要自己实现 ...

  • Consistent Hashing

    一致性哈希是一种应对系统存储架构扩展的技术,主要应用的场景提供可伸缩(根据负载动态的添加和移除)的缓存服务器,其次...

  • Consistent Hashing

    哈希 哈希的本质是一个长度可变的数组,哈希的时间复杂度为O(1)。 哈希为什么不用在数组中遍历呢?其他类型的数据查...

  • [LintCode][System Design] Consis

    Problem More in LeetCode Discussion在 Consistent Hashing I...

  • 一致性哈希算法及其在分布式系统中的应用

    转载:http://blog.codinglabs.org/articles/consistent-hashing...

  • [转]Consistent Hashing

    引入 在业务开发中,我们常把数据持久化到数据库中。如果需要读取这些数据,除了直接从数据库中读取外,为了减轻数据库的...

  • 一致性哈希算法理解 ( consistent hashing )

    概述 维基百科上的解释: Consistent hashing is a special kind of hash...

网友评论

    本文标题:Consistent Hashing

    本文链接:https://www.haomeiwen.com/subject/huuebftx.html