`

一致性HASH的记录

    博客分类:
  • JAVA
阅读更多

下面是相关内容的连接

 

http://lishuaibt.iteye.com/blog/609364

 

http://sebug.net/paper/databases/nosql/Nosql.html

 

大概理解总结了下

 

 

一致性hash

 

1:集群CACHE的命中问题

例如原有4台CACHE服务器编号为:0,1,2,3

用户数据按照hash(用户ID) mod 4 分别存在4台服务器上

1 mod 4 = 1

2 mod 4 = 2

3 mod 4 = 3

4 mod 4 = 0

5 mod 4 = 1

6 mod 4 = 2

...

 

在CACHE服务器不出现问题或是不需要增加服务器的情况下上述解决方案工作正常

当需要添加一台服务器5的时候问题就来了

 

因为现在的N变成了5,那么

1 mod 5 = 1

2 mod 5 = 2

3 mod 5 = 3

4 mod 5 = 4

5 mod 5 = 0

6 mod 5 = 1

...

 

那么hash(用户ID)=5和6的数据所在的服务器位置发生了变化,也就是说需要重新计算用户所在CACHE服务器

的位置,严重的需要进行数据迁移等等操作。

 

2:一直性HASH的出现

为了尽量解决这种问题(可能不能完全避免),用一致性HASH能相对大的程度解决问题

2^32的闭环上将4台服务器也用hash算法计算出hash值顺时针分布在该环上

 

(2)访问方式

如果有一个写入缓存的请求,其中Key值为K,计算器hash值Hash(K), Hash(K) 对应于图 - 1环中的某一个点,如果该点对应没有映射到具体的某一个机器节点,那么顺时针查找,直到第一次找到有映射机器的节点,该节点就是确定的目标节点,如果超过了2^32仍然找不到节点,则命中第一个机器节点。比如 Hash(K) 的值介于A~B之间,那么命中的机器节点应该是B节点(如上图 - 1)。

 

(3)增加节点的处理

如上图 - 1,在原有集群的基础上欲增加一台机器F,增加过程如下:

计算机器节点的Hash值,将机器映射到环中的一个节点

增加机器节点F之后,访问策略不改变,依然按照(2)中的方式访问,此时缓存命不中的情况依然不可避免,不能命中的数据是hash(K)在增加节点以前落在C~F之间的数据。尽管依然存在节点增加带来的命中问题,但是比较传统的hash取模的方式,一致性hash已经将不命中的数据降到了最低。

分享到:
评论

相关推荐

    一个分布式文件系统文件元数据管理系统,利用一致性HASH来做分布式查找,支持MYSQL存储元数据。.zip

    这些系统通常被设计用来提高效率、减少错误、加强安全性,同时提供数据和信息支持。以下是一些常见类型的管理系统: 学校管理系统: 用于学校或教育机构的学生信息、教职员工信息、课程管理、成绩记录、考勤管理等...

    基于hash的图像检索软件

    7.得到信息指纹:组合64个信息位,顺序随意保持一致性即可。 8.对比指纹:计算两幅图片的指纹,计算汉明距离(从一个指纹到另一个指纹需要变几次),汉明距离越大则说明图片越不一致,反之,汉明距离越小则说明图片...

    Secure_Hash_Algorithms.pdf

    Integrity 涉及维护数据的一致性,准确性和可信赖性 Key / Crypto Key 加密算法用作输入参数的值。 Key Management 在生产和现场设备中处理和分发密码密钥 NIST National Institute of Standards and Technology,即...

    Hash_function.pdf

    Integrity 涉及维护数据的一致性,准确性和可信赖性 Key / Crypto Key 加密算法用作输入参数的值。 Key Management 在生产和现场设备中处理和分发密码密钥 NIST National Institute of Standards and Technology,即...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    一致性hash 消峰 分库分表 锁 悲观锁 乐观锁 行级锁 分布式锁 分区排队 一致性 一致性算法 paxos zab nwr raft gossip 柔性事务(TCC) 一致性原理 CAP BASE 中间件 数据库 mysql 存储引擎 ...

    Redis集群搭建全记录

     在Redis集群中,使用数据分片(sharding)而不是一致性hash(consistency hashing)来实现,一个Redis集群包含16384个哈希槽(hash slot),数据库中的每个键都存在这些哈希槽中的某一个,通过CRC16校验后对16384取模来...

    Sivyer9303.github.io

    MenuJVM jvm错误排查手段及工具 多线程及高并发 容器类 类加载机制 堆外内存 jvm内存模型Redis 持久化与主从同步 redis为什么高效 缓存雪崩、缓存穿透、缓存击穿 一致性hash 分布式锁 redis限流 高可用设计RocketMq ...

    Hardware_security_module.pdf

    Integrity 涉及维护数据的一致性,准确性和可信赖性 Key / Crypto Key 加密算法用作输入参数的值。 Key Management 在生产和现场设备中处理和分发密码密钥 NIST National Institute of Standards and Technology,即...

    RSA_(cryptosystem).pdf

    Integrity 涉及维护数据的一致性,准确性和可信赖性 Key / Crypto Key 加密算法用作输入参数的值。 Key Management 在生产和现场设备中处理和分发密码密钥 NIST National Institute of Standards and Technology,即...

    Key_management.pdf

    Integrity 涉及维护数据的一致性,准确性和可信赖性 Key / Crypto Key 加密算法用作输入参数的值。 Key Management 在生产和现场设备中处理和分发密码密钥 NIST National Institute of Standards and Technology,即...

    Electronic_control_unit.pdf

    Integrity 涉及维护数据的一致性,准确性和可信赖性 Key / Crypto Key 加密算法用作输入参数的值。 Key Management 在生产和现场设备中处理和分发密码密钥 NIST National Institute of Standards and Technology,即...

    Chain_of_trust.pdf

    Integrity 涉及维护数据的一致性,准确性和可信赖性 Key / Crypto Key 加密算法用作输入参数的值。 Key Management 在生产和现场设备中处理和分发密码密钥 NIST National Institute of Standards and Technology,即...

    Data_Encryption_Standard.pdf

    Integrity 涉及维护数据的一致性,准确性和可信赖性 Key / Crypto Key 加密算法用作输入参数的值。 Key Management 在生产和现场设备中处理和分发密码密钥 NIST National Institute of Standards and Technology,即...

    Message_authentication.pdf

    Integrity 涉及维护数据的一致性,准确性和可信赖性 Key / Crypto Key 加密算法用作输入参数的值。 Key Management 在生产和现场设备中处理和分发密码密钥 NIST National Institute of Standards and Technology,即...

    Cyberattack.pdf

    Integrity 涉及维护数据的一致性,准确性和可信赖性 Key / Crypto Key 加密算法用作输入参数的值。 Key Management 在生产和现场设备中处理和分发密码密钥 NIST National Institute of Standards and Technology,即...

    Unified_Extensible_Firmware_Interface.pdf

    Integrity 涉及维护数据的一致性,准确性和可信赖性 Key / Crypto Key 加密算法用作输入参数的值。 Key Management 在生产和现场设备中处理和分发密码密钥 NIST National Institute of Standards and Technology,即...

    Elliptic_curve.pdf

    Integrity 涉及维护数据的一致性,准确性和可信赖性 Key / Crypto Key 加密算法用作输入参数的值。 Key Management 在生产和现场设备中处理和分发密码密钥 NIST National Institute of Standards and Technology,即...

    Over-the-air_programming.pdf

    Integrity 涉及维护数据的一致性,准确性和可信赖性 Key / Crypto Key 加密算法用作输入参数的值。 Key Management 在生产和现场设备中处理和分发密码密钥 NIST National Institute of Standards and Technology,即...

    Memory_protection.pdf

    Integrity 涉及维护数据的一致性,准确性和可信赖性 Key / Crypto Key 加密算法用作输入参数的值。 Key Management 在生产和现场设备中处理和分发密码密钥 NIST National Institute of Standards and Technology,即...

Global site tag (gtag.js) - Google Analytics