简述

普通的哈希分库方式:

hash(id) mod 数据库总数 = 目标数据库编号


这种传统的分库分表方式会遇到一个扩容问题:
若要增加数据库数量,所有数据库中的数据都要重新分配一遍。
例如本来系统有4台数据库, 现在要增加到5台数据库,这样本来id%4=0,存到第0台数据库的数据,现在全变成id%5=4,存到第4台数据库

为了解决这个扩容问题,引入了一种在扩容操作上成本更低,灵活度更高的算法

一致性哈希分库方式:

# 假设哈希空间为2^32个
hash(id) mod 2^32 = 哈希位置
选择右边最接近自己哈希位置的一台数据库

原理解释

数据库标识

传统哈希分库中,数据库的标识是一个编号,预先分配好。
而一致性哈希中,数据库的标识是一个哈希值,落到图中某个具体哈希地址中。

DBhash = hash( 数据库实体信息 )

ID定位

传统哈希分库中,计算 hash(id) 后就能定位ID到具体的数据库中
而一致性哈希中,计算 hash(id) 后,再计算出hash(id)在哈希空间中的右边第一台遇到的数据库,即为目标数据库

优势

扩容

传统哈希分库扩容,需要对数据进行全部重新分配
一致性哈希分库扩容,只需要对新增的数据库与其在哈希空间的前一台数据库之间的哈希数据进行重新分配。不影响其他数据

扩展阅读

1、可用性
2、虚拟节点

文章来源:https://www.jianshu.com/p/3a449bd7cb21

一致性哈希(数据分库场景)相关推荐

  1. 一致性哈希算法 应用场景

    一致性哈希算法 应用场景(转) 原创文章,转载请注明: 转载自LANCEYAN.COM 本文链接地址: 一致性hash和solr千万级数据分布式搜索引擎中的应用 互联网创业中大部分人都是草根创业,这个 ...

  2. 一致性哈希 数据迁移 mysql_一致性哈希算法解决分布式数据扩容

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

  3. java 一致性hash算法 均衡分发_Dubbo一致性哈希负载均衡的源码和Bug,了解一下?...

    本文是对于Dubbo负载均衡策略之一的一致性哈希负载均衡的详细分析.对源码逐行解读.根据实际运行结果,配以丰富的图片,可能是东半球讲一致性哈希算法在Dubbo中的实现最详细的文章了. 文中所示源码,没 ...

  4. @cacheable 服务器 不一致_Dubbo一致性哈希负载均衡的源码和Bug,了解一下?

    持续输出原创文章,点击蓝字关注我吧 本文是对于Dubbo负载均衡策略之一的一致性哈希负载均衡的详细分析.对源码逐行解读.根据实际运行结果,配以丰富的图片,可能是东半球讲一致性哈希算法在Dubbo中的实 ...

  5. 分布式系统中一致性哈希算法-简介

    分布式系统中一致性哈希算法 业务场景 近年来B2C.O2O等商业概念的提出和移动端的发展,使得分布式系统流行了起来.分布式系统相对于单系统,解决了流量大.系统高可用和高容错等问题.功能强大也意味着实现 ...

  6. 图解一致性哈希算法,看这文就够了!

    作者 | LemonCoder 来源 | 后端技术学堂(ID:lemon10240) 很多同学应该都知道什么是哈希函数,在后端面试和开发中会遇到「一致性哈希」,那么什么是一致性哈希呢?名字听起来很厉害 ...

  7. 2016 -Nginx的负载均衡 - 一致性哈希 (Consistent Hash)

    Nginx版本:1.9.1 算法介绍 当后端是缓存服务器时,经常使用一致性哈希算法来进行负载均衡. 使用一致性哈希的好处在于,增减集群的缓存服务器时,只有少量的缓存会失效,回源量较小. 在nginx+ ...

  8. 数据分布方式:哈希与一致性哈希

    数据分布方式:哈希与一致性哈希 前言 数据分布设计原则 数据均匀: 数据稳定: 节点异构性: 隔离故障域: 性能稳定性: 数据分布方法 哈希 一致性哈希 带有限负载的一致性哈希 带虚拟节点的一致性哈希 ...

  9. 【另类见解】一致性哈希就能解决分库分表问题了?

    " 开局一问:分库分表行为中,一致性哈希到底用处大不大? 装B脑图 现在是大数据的时代,其中一个体现就是数据量非常庞大.当然大数据的概念绝非是数据量就可以定义的,我自己给大数据下的定义是:无 ...

最新文章

  1. mac电脑开机出现客人用户,没有输入密码框,其他键都点不动,重启也不好使
  2. 解决SurfaceView渲染的各种疑难杂症
  3. 五大算法之三--贪心算法
  4. matlab dpsk,2DPSK调制与解调matlab(最新整理)
  5. c语言课程设计实验设备,C语言课程设计课程设计_力学实验设备管理系统
  6. doc自动生成html,java web应用中自动生成文章html页面的实现.doc
  7. クリムゾンガールズ 汉化补丁(BUG修正)
  8. 每天花30分钟看OGRE--(13)Ogre的渲染流程,在渲染时材质是如何起作用的,材质加载和解析...
  9. 文件不能超过200k_为什么答题时上传的文件大小不允许
  10. suse linux 10 下载,SUSE Linux 10下载
  11. 颜值即正义的时代,你还不懂直播特效的实现原理与难点?
  12. python保存网页上的图片_使用Python保存网页上的图片或者保存页面为截图
  13. python梯形公式面积_算法(一)梯形近似法求曲线面积
  14. Web应用服务器——Tomcat的介绍、下载安装、环境配置与使用
  15. event是什么?事件对象
  16. 智鼎在线测评是测什么_(详解)人才测评工具和人才测评方法
  17. python语言表示语句结构_python基础语言以及if/while语句结构
  18. grpc+gateway使用说明
  19. 一图掌握PEST分析模型及案例
  20. 【slf4j】在Java中如何定义优雅的Log日志

热门文章

  1. 迷你图添加趋势线_如何向R表添加迷你图
  2. Android---Alarm定时任务 Doze模式
  3. 存储过程(带参数及不带参数)如何调用
  4. 【莫尔条纹】自定义条纹宽度 代码 python numpy matplotlib
  5. java 时间戳生成
  6. if结构和if else结构
  7. linux ntp服务异常
  8. 如何给kali安装中文输入法_中文用户名如何安装SU插件SUAPP
  9. Springboot集成防sql注入设置
  10. Iceberg删除过期snapshots、老的metadata files、孤立的文件,合并data files和manifests