【java】分布式一致性hash算法

在这里插入图片描述

1.概述

本文是视频 视频 的笔记

2. 一致性hash算法哪里用?

在这里插入图片描述
一般情况下如果我们的数据很多,一台机器装不下,我们一般会采用分布式缓存,但是因为是分布式,我们要解决3个问题

  1. 数据怎么存储到分布式机器上,采用什么算法
  2. 数据查询的时候,如何知道我们的相关数据是缓存到那台机器了?
  3. 如果机器扩容的时候,算法如何兼容

在这里插入图片描述

2. 第一种简单类型

在这里插入图片描述
这种每次增加一个机器失效了 n分之一数据缓存丢失,如果是4台就是4分之3失效,如果是100就是 百分之99 失效。

这个值是怎么计算的呢?

在这里插入图片描述
在这里插入图片描述
可以看到是两个数的最小公倍数。

在这里插入图片描述
这个加入一台机器可能导致缓存雪崩。

3. 一致性hash算法

在这里插入图片描述
这样情况下,如果加入一台机器,影响是无法计算的。因为和加入机器的位置有关,比如如下

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
优化,达到理想的情况下

在这里插入图片描述
redis就是采用这个原理,redis有16384个槽位。

猜你喜欢

转载自blog.csdn.net/qq_21383435/article/details/112116783
今日推荐