一、一致性哈希算法:一种特殊的哈希算法,目前主要应用于分布式缓存当中,可以有效地解决分布式存储结构下动态增加和删除节点所带来的问题。

  1. 一致性Hash算法是对2^32取模,2^32个点组成的圆环称为Hash环。根据服务节点的IP或者机器名称进行哈希,就能确定每台机器就能确定其在哈希环上的位置;
  2. 将数据key使用相同的函数Hash计算出哈希值,并确定此数据在环上的位置,从此位置沿环顺时针“行走”,第一台遇到的服务器就是其应该定位到的服务器。
  3. 添加、删除节点的时候,只影响相邻一个节点的数据,其他节点的数据不影响。具有较好的扩展性和容错性。
  4. 为了防止数据分布不均匀,可以应用虚拟节点来映射物理节点。

二、hash槽:Redis准备了16384个hash槽,类似于Memcached Hash环上的一个个位置。 这16384个hash槽被分配给不同节点,存放数据时,根据数据的key计算出所在的槽,再根据槽找到对应的机器。hash函数为:CRC16(key) % 16384。

三、比较:

参考文档:

https://redis.io/topics/cluster-tutorial

https://blog.csdn.net/clz1314521/article/details/80604555

https://blog.csdn.net/truelove12358/article/details/79612954

分布式缓存原理——一致性hash算法(hash环)、Hash槽相关推荐

  1. 京东架构师最新出品《分布式缓存原理到实战剖析手册》,限时开源

    分布式缓存所带来的诸多问题 当下互联网领域的软件系统,毫不夸张地说已经成为分布式系统的天下. 随着现代应用对速度的要求越来越高,对缓存机制的使用也越来越常见.越来越频繁.分布式的语境给系统的开发与设计 ...

  2. 国密算法:利用python进行sm3 hash算法,计算hash值,国密算法库gmssl的使用

    本篇介绍利用gmssl算法库中的sm3模块来进行hash值的计算. 一 sm3 hash算法的特点: sm3用于计算一个消息的hash值: 几乎无法被逆向,即通过hash值无法推断出原始消息: sm3 ...

  3. redis分布式缓存应用—五大数据类型:key/String/Hash/List/Set/Zset,配置文件redis.conf解析

    1.redis键key 1.keykeys *:查看当前key列exists key的名字,判断某个key是否存在move key db --->当前库就没有了,被移除了expire key 秒 ...

  4. 分布式环境Raft一致性共识算法解读

    Raft是分布式环境下的一致性算法,它通过少数服从多数的选举来维持集群内数据的一致性.它与RBFT算法名称有点像,然而Raft算法里不能存在拜占庭节点,而RBFT则能容忍BFT节点的存在.Raft非常 ...

  5. 分布式mysql一致性问题_分布式缓存数据库一致性问题

    缓存和数据库一致性问题,有很多解决方案,没有最完美的方案,只有适合自身业务的尽可能完美的方案. 缓存由于其高并发和高性能的特征,已经在项目中被广泛应用. 查询时一般先查询缓存,如果缓存命中的话,那么直 ...

  6. 一致性 Hash 算法学习(分布式或均衡算法)

    简介: 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CARP使用的 ...

  7. 一致性hash算法 - consistent hashing

    参考: http://yacare.iteye.com/blog/1973022 1.   情景分析 前一篇博文分析了HashMap源码,HashMap在许多场景中作为存储数据的不二选择. 但是否使用 ...

  8. hash算法_到底什么是Hash?Hash算法的原理和实际应用讲解

    提到hash,相信大多数同学都不会陌生,之前很火现在也依旧很火的技术区块链背后的底层原理之一就是hash,下面就从hash算法的原理和实际应用等几个角度,对hash算法进行一个讲解. 1.什么是Has ...

  9. hash的算法 java_【数据结构与算法】一致性Hash算法及Java实践

    追求极致才能突破极限 一.案例背景 1.1 系统简介 首先看一下系统架构,方便解释: 页面给用户展示的功能就是,可以查看任何一台机器的某些属性(以下简称系统信息). 消息流程是,页面发起请求查看指定机 ...

最新文章

  1. 如何为嵌入式应用选择适当的SSD
  2. Mybatis系列(三):Mybatis实现关联表查询
  3. Windows下用PIP安装scipy出现 no lapack/blas resources found
  4. 一个很不错的LINUX基本操作归纳
  5. .NET Core 系列5 :使用 Nuget打包类库
  6. word List 49
  7. 服务器$java_top路径_ERP实施项目-MD120_FIN000_即时打印_V1.0
  8. Oracle Warehouse Builder 自动化ETL处置处罚历程(1)
  9. mysql xml字段转json格式_mysql将xml数据或者json数据转换为表格。
  10. java的dtd文件_Eclipse中在XML中如何关联.dtd文件
  11. JavaScript简单计算器
  12. 腾讯X5WebView集成使用
  13. 2021年JAVA多线程并发编程面试题(持续更新)
  14. linux常用指令汇总
  15. 前端人脸识别解决方案
  16. Opengl ES系列学习--莫比乌斯带
  17. 关于添加android:name=android.permission.INSTALL_PACKAGES报错的解决方法
  18. FB引流营销的方法,Facebook引流操作技巧-heijee全球社交流量导航
  19. 慕课App inventer安安历险记 之打地鼠
  20. 云徙科技CEO包志刚:数字化锻造企业韧性

热门文章

  1. swift -- Tuple 元组 Dictionary
  2. 超声和免疫学指标的特征能否反映RA临床缓解的表型?[EULAR2015_THU0121]
  3. LeetCode 91. 解码方法
  4. 五一小长假|不得不说的一些话
  5. jdk8 Arrays.sort()实现分析
  6. akka一些邮箱的实现
  7. 游戏线程池的设计0-转自
  8. Spring Boot整合批量文件下载功能
  9. 试了试Docker桌面应用自带的K8s集群,一个字“简单”
  10. Redis的管道pipeline