分布式缓存Redis分区(分片)的高可用方案在大厂中的实践(中)

2.2.1.2 一致性哈希分区(Consistent hashing)

原理
  • 环形 hash 空间
    按常用 hash 算法,将对应的 key hash到一个具有 2^32个桶的空间,即(0 ~ 2^32 - 1)的数字空间中。


将这些数字头尾相连,想象成一个闭合环形:

  • 把数据通过一定的 hash 算法映射到环上
  • 将机器通过一定的 hash 算法映射到环上
  • 节点按顺时针转动,遇到的第一个机器,就把数据放在该机器
  • 把对象映射到hash空间

分布式缓存Redis分区(分片)的高可用方案在大厂中的实践(中)

把cache映射到hash空间

基本思想就是将对象和cache都映射到同一个hash数值空间中, 并且使用相同的hash算法

hash(cache A) = key A;
hash(cache C) = key C;

在移除 or 添加一个 cache 时,能够尽可能小的改变已存在的 key 映射关系

Consistent hashing 一致性算法

分布式缓存Redis分区(分片)的高可用方案在大厂中的实践(中)

移除 Cache
  • 删除CacheB后,橙色区为被影响范围

分布式缓存Redis分区(分片)的高可用方案在大厂中的实践(中)

添加Cache

分布式缓存Redis分区(分片)的高可用方案在大厂中的实践(中)

  • 理想的分布式

分布式缓存Redis分区(分片)的高可用方案在大厂中的实践(中)

现实却很拥挤-即倾斜性:

分布式缓存Redis分区(分片)的高可用方案在大厂中的实践(中)

Hash倾斜性

分布式缓存Redis分区(分片)的高可用方案在大厂中的实践(中)

为解决该问题,引入虚拟节点

分布式缓存Redis分区(分片)的高可用方案在大厂中的实践(中)

  • 虚拟节点

分布式缓存Redis分区(分片)的高可用方案在大厂中的实践(中)

命中率计算公式:服务器台数n,新增服务器数m

(1 - n/(n + m) ) * 100%
上一篇:《思科数据中心I/O整合》一第2章 相关技术2.1 引言


下一篇:sqlite数据库中自增key的设定,autoincrement 和 rowid