一致性hash算法是,1097麻省理工提出的分布式hashDHT实现算法,极倔internet的热点问题

平衡性 hash结果尽可能的分布到所有的缓存中去,缓冲空间利用率最高

单调性 保持已有的缓存能映射到对应的位置,新加入的缓存能加入新的位置不会映射到旧的位置

分散性 尽量降低分散性的缓存不一致情况发生

负载 负载被粉丝降低负荷

一致性hash实现算法 chord算法

基本要素:节点ID(NID) 资源ID(KID) 常hash函数(sha-1) chord环 (2^m的环)

因为对于hash(k)的范围在int范围,所以我们将0~2^32作为一个环。其步骤为:

1,求出每个服务器的hash(服务器ip)值,将其配置到一个 0~2^n 的圆环上(n通常取32)。

2,用同样的方法求出待存储对象的主键 hash值,也将其配置到这个圆环上,然后从数据映射到的位置开始顺时针查找,将数据分布到找到的第一个服务器节点上。

这是一致性hash算法的原理,加入一个redis节点:redis node5,影响的范围只有黄色标出的那部分,不会造成全局的变动。

雪崩效应

当有节点宕机时,当B节点宕机后,原本存储在B节点的k1,k2将会迁移到节点C上,这可能会导致很大的问题。如果B上存储的是热点数据,将数据迁移到C节点上,然后C需要承受B+C的数据,也承受不住,也挂了。。。。然后继续CD都挂了。这就造成了雪崩效应。

我们可以针对每个实际的节点,虚拟出多个虚拟节点,用来映射到圈上的位置,进行存储对应的数据。

A节点对应A1,A2,BCD节点同理。这时候,如果A节点挂了,A节点的数据迁移情况是:A1数据会迁移到C2,A2数据迁移到D1。这就相当于A的数据被C和D分担了,这就避免了雪崩效应的发送,而且虚拟节点我们可以自定义设置,使其适用于我们的应用。

hash算法_hash一致性算法相关推荐

  1. 一致性hash算法虚拟节点_Hash算法和一致性Hash算法

    Hash算法 Hash 算法在路由算法应用中,为了保证数据均匀的分布,例如有 3 个桶,分别是 0 号桶, 1 号桶和 2 号桶:现在有 12 个球,怎么样才能让 12 个球平均分布到 3 个桶中呢? ...

  2. 从一致性hash到ceph crush算法演进图谱(持续更新)

    参考文档: https://ceph.com/wp-content/uploads/2016/08/weil-crush-sc06.pdf Ceph剖析:数据分布之CRUSH算法与一致性Hash

  3. 面试高频题:Hash一致性算法是如何解决数据倾斜问题的?

    一致性Hash是一种特殊的Hash算法,由于其均衡性.持久性的映射特点,被广泛的应用于负载均衡领域,如nginx和memcached都采用了一致性Hash来作为集群负载均衡的方案. 本文将介绍一致性H ...

  4. hash算法_一致性hash算法简介

    一致性hash算法有什么用?我们为什么需要一致性hash算法?这两个问题的答案可以看这篇文章 分布式系统路由算法简介. 了解了一致性hash算法出现的背景,我们来看看什么是一致性hash算法.一致性h ...

  5. 使用.Net Core实现FNV分布式hash一致性算法

    说到FNV哈希算法不得不提Memcached,我们先简单介绍一下Memcached. Memcached Memcached分为客户端与服务端,Memcached是服务端,服务端本身不提供分布式实现, ...

  6. Hash一致性算法(分片机制)

    一 哈希简介 1.1 简介 我们首先来简单介绍一下什么是哈希(以下简称hash),hash本质来说就是映射,或者说是键值对key-value,不同的hash之间不过就是实现key-value映射的算法 ...

  7. 详解【负载均衡】(负载均衡算法、一致性hash、负载均衡架构分析)

    作者:duktig 博客:https://duktig.cn 优秀还努力.愿你付出甘之如饴,所得归于欢喜. 本文源码参看:https://github.com/duktig666/distribute ...

  8. 从分布式一致性算法到区块链共识机制

    引言 分布式一致性是一个很"古典"的话题,即在分布式系统中,如何保证系统内的各个节点之间数据的一致性或能够就某个提案达成一致.这个问题想必对于很多技术同学而言并不陌生,几乎在所有的 ...

  9. 一致性哈希算法 mysql_一致性哈希算法,在分布式开发中你必须会写,来看完整代码...

    今天我想先给大家科普下一致性哈希算法这块,因为我下一篇文章关于缓存的高可用需要用到这个,但是又不能直接在里面写太多的代码以及关于一致性hash原理的解读,这样会失去对于缓存高可用的理解而且会造成文章很 ...

最新文章

  1. 一个小型的网页抓取系统的架构设计
  2. 优雅的创建一个JavaScript库
  3. abstract和interface
  4. 【java】System.getProperty()参数大全
  5. npm升级package.json依赖包
  6. 模拟实现HashMap
  7. mysql中sql语句使用_mysql数据库中用到sql语句
  8. import maven project很慢_你确定 Maven 相关的东西全部了解吗?
  9. linux系统 设置网卡ping通主机连上外网
  10. http 协议基本格式
  11. 千方百剂创建账套服务器文件,千方百剂各工具使用.doc
  12. 计算一幅图像的信噪比
  13. C#中Winform控件扁平化设计
  14. C# 读取Word文本框中的文本、图片和表格(附VB.NET代码)
  15. 加速更新DNS解析记录的方法
  16. yahoo,hotmail邮箱无法收到邮件
  17. 股票配资系统平台源码搭建-股票配资交易软件开发
  18. 【java源码】火车订票系统
  19. 计算机机器人兴趣小组活动总结,科技活动总结范文5篇
  20. 【转】美国50州气候及学校推荐

热门文章

  1. android listview添加数据_Android系统列表控件
  2. ps css html,用ps两分钟做个xhtml+css的网站首页
  3. Madagascar中的宏定义函数--绝对值函数和符号函数
  4. 带有LLVM的eBPF组件
  5. fullPage.js给网站加上全屏幻灯片的展示效果
  6. TensorFlow 是一个用于人工智能的开源神器
  7. ANSI C:+++
  8. 一个常用的Android工具库
  9. python程序实现excel排序_python初学—-实现excel里面读数据进行排序(改进算法)
  10. firefox驱动_零适配 + 全兼容!龙芯电脑推出办公外设利旧通用解决方案:运行原生 Windows 驱动程序...