• 负载均衡之一致性哈希算法详解


    负载均衡之一致性哈希算法详解

    传统的哈希是直接把数据映射到对应的hash表上,但是当我们的数据量很大的时候,我们会采用多个hash节点来存储的方式来减少存储压力。

    但是这种hash算法下,如果我们的节点发生了增加或减少的时候,我们就需要将所有数据,重新建立映射关系,这会导致大量的数据迁移和重新映射的问题。

    而一致性hash算法就可以优化这些问题。

    首先,一致性hash算法是将所有的数据全部映射到一个大小为0-2的32次方-1的环中(hash环存储)

    然后,我们可以将我们服务的地址,映射到这个环上。

    此时,当我们的数据来了以后,我们还是先将key通过hash计算放到我们的环上,然后我们看key沿顺时针遇到的第一个节点,我们就将其放入该节点。

    节点如果宕机了,可以zookeeper可以利用心跳检测功能,判断服务是否断开,从而移除相关节点,在zookeeper中移除后,我们需要在我们的hash环中也移除节点,假设我们移除了节点1,那么此时,我们只需要对一个数据进行重新映射即可。

    同理添加节点也很方便,我们可以在node3和node1之间新增一个节点4,这样只会影响node3和node1这个区间的数据。


    __EOF__

  • 本文作者: KU做人
  • 本文链接: https://www.cnblogs.com/ku-man/p/17689209.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    shiro-会话管理(session管理)
    广州一母婴店因设置0元购导致关店
    调试工具记录
    二维码智慧门牌管理系统升级技术解决方案
    Shader实战(2):在unity中实现物体材质随时间插值渐变
    计算机毕业设计Java冠军体育用品购物网站(源码+系统+mysql数据库+Lw文档)
    直接在 PI PO ESR 中编写 Java Mapping JAVA映射
    【硬件基础】STM32F103C8T6芯片引脚定义及功能介绍
    深入理解 Python 虚拟机:字节(bytes)的实现原理及源码剖析
    Java基础进阶TreeSet集合-Comparable,Comprator接口
  • 原文地址:https://www.cnblogs.com/ku-man/p/17689209.html