【redis】一致性哈希算法

【redis】一致性哈希算法前言这周复习redis,被集群和分布式搞得头大,也接触到一致性哈希算法,因此博主进行了一定得学习,故,写下这篇文章。一、普通哈希算法普通得哈希算法是对服务器得数量进行一定得取模预算得出,常见得公式如下:index=hash(key)%NN就是服务器得数量。我们可以想象到,如果服务器数量改变,那么index也会进行改变。例如:一台服务器宕机,服务里器的数据暂时丢失(系统会进行一定的备份,用户发送的请求经过哈希运算后,因为N的改变,会访问其他的服务器,但是该台服务器还没有拷贝过来宕机的数

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前言

这周复习redis,被集群和分布式搞得头大,也接触到一致性哈希算法, 因此博主进行了一定得学习,故,写下这篇文章。

一、普通哈希算法

普通得哈希算法是对服务器得数量进行一定得取模预算得出,常见得公式如下:

index = hash(key)%N

N就是服务器得数量。

我们可以想象到,如果服务器数量改变,那么index也会进行改变。例如:
一台服务器宕机,服务里器的数据暂时丢失(系统会进行一定的备份,用户发送的请求经过哈希运算后,因为N的改变,会访问其他的服务器,但是该台服务器还没有拷贝过来宕机的数据.这个时候就会发生问题。如果服务器作为缓存使用,那么大量的数据,会造成缓存击穿。

由于以上问题,我们引入一致性哈希算法。

二、一致性哈希算法

一致性哈希算法的出现,避免了大量数据的迁移(交普通哈希算法而言),解决了普通哈希算法取模动态调整带来的全量数据的变动。

1.一致性哈希算法的原理

一致性哈希算法避免了N的变动,所以说N是固定的,这个N就是2^32次方。
一般我们将这些数字想象成一个闭合的环。

这样落到环上的机器,负责管理一个范围,当某台机器宕机的时候,仅仅是这个范围内的数据不可用,不会造成因为N的改变,再次重新分配的情况。

2 缺点
一致性哈希算法也是有缺点的,就是数据落到每台机器上的概率不同,可能会出现数据分配不均匀的情况。造成某台服务器压力增大。

3.解决

加入虚拟节点,本来一个数据库仅对应一个节点,但是现在将数据库对应多个节点,并将这些节点分布在环上。保证每台服务器上的数据均匀分布。

总结:
本文是博主自己的理解,如有错误。欢迎指出。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/164581.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月27日 上午7:36
下一篇 2022年7月27日 上午7:46


相关推荐

  • 国产龙虾(AI Agent)全面对比及使用指南

    国产龙虾(AI Agent)全面对比及使用指南

    2026年3月17日
    3
  • 配置文件的选择_Cisco备份配置文件

    配置文件的选择_Cisco备份配置文件不同模式打开文件的完全列表:模式描述r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。r+

    2022年8月4日
    10
  • 张钹:人工智能技术已进入第三代

    张钹:人工智能技术已进入第三代原文编注:近日,中科院院士、清华大学人工智能研究院院长张钹教授接受记者采访时认为,目前基于深度学习的人工智能在技术上已经触及天花板。从长远来看,必须得走人类智能这条路,最…

    2022年7月26日
    9
  • 移动apn接入点哪个快_4g网速最快的apn接入点 如图所示

    移动apn接入点哪个快_4g网速最快的apn接入点 如图所示导读 讲到网速 大家应该都知道 有朋友问联通 4g 怎样设置接入点网速最快 当然了 还有人问哪里 4g 网速最快 这到底是咋回事 事实上中国联通 h 十根 4g 哪个好呢 下面是小编为大家整理的 4g 网速最快的 apn 接入点 一起细细了解 4g 网速最快的 apn 接入点电信 4g 网速较快的 apn 接入点是 CMNET 可以在手机运营商内设置 具体步骤 1 首先打开手机设置 如图所示 2 在手机里插入中国电信和中国移动流量卡 开

    2026年3月16日
    5
  • Altium Designer挖空开槽填坑之board cutout[通俗易懂]

    Altium Designer挖空开槽填坑之board cutout[通俗易懂]这种方法开不了槽!!!!博客原文链接:https://blog.csdn.net/hnjztyx/article/details/83021813为了防止PCB板上高压零件与附近的低压零件打火放点,需要在这两者之间开槽。在使用AltiumDesigner设计PCB时,想在板子上开一个槽或者挖一个孔该如何操作,是使用Keep-Out层还是Mechanical层,其实这两种在实际操作中都有人用,但是两种都不规范,存在隐患。正确的做法是使用“板子切割”(boardcutout)方法。具体方法就是在任意

    2026年3月6日
    8
  • 笔记:解决redis连接错误:MISCONF Redis is configured to save RDB snapshots, but it is currently not able to…

    笔记:解决redis连接错误:MISCONF Redis is configured to save RDB snapshots, but it is currently not able to…今天重启游戏服务器在连接redis数据库时突然报错:MISCONFRedisisconfiguredtosaveRDBsnapshots,butitiscurrentlynotabletopersistondisk.Commandsthatmaymodifythedatasetaredisabled,becausethisinstance

    2025年7月31日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号