美文网首页
一致性哈希原理梳理(数据分库场景)

一致性哈希原理梳理(数据分库场景)

作者: 死鱼 | 来源:发表于2019-08-26 09:14 被阅读0次

简述

普通的哈希分库方式:

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、虚拟节点

相关文章

  • 一致性哈希原理梳理(数据分库场景)

    简述 普通的哈希分库方式: 为了解决这个扩容问题,引入了一种在扩容操作上成本更低,灵活度更高的算法 一致性哈希分库...

  • 《分布式技术原理与算法解析》学习笔记Day22

    哈希与一致性哈希 在分布式系统中,哈希和一致性哈希是数据索引或者数据分布的常见实现方式。 数据分布设计原则 在分布...

  • 一致性哈希算法(白话解析)

    在了解一致性哈希算法之前,最好先了解一下缓存中的一个应用场景,了解了这个应用场景之后,再来理解一致性哈希算法,就容...

  • 白话“一致哈希”

    在了解一致性哈希算法之前,最好先了解一下缓存中的一个应用场景,了解了这个应用场景之后,再来理解一致性哈希算法,就容...

  • Mysql的分库分表,水平拆分-垂直拆分

    参考文章MySQL分库分表总结参考数据库分库分表策略,如何分库,如何分表?MySQL分库分表原理 MySQL单库数...

  • 一致性哈希算法之Ketama算法

    原文 有关一致性哈希算法原理及其应用讨论的文章已经足够多,如果对一致性哈希算法一点概念都没有的同学可以先参考这篇文...

  • 一致性哈希和哈希槽对比

    背景 随着memcache和redis的出现,更多人认识到了一致性哈希。 一致性哈希用于解决分布式缓存系统中的数据...

  • 一致性哈希和哈希槽对比

    背景 随着memcache和redis的出现,更多人认识到了一致性哈希。 一致性哈希用于解决分布式缓存系统中的数据...

  • 一致性哈希

    1.一致性哈希解决的问题:普通路由方式通过hash(key)/N来定位数据所在机器Node。哈希一致性通过0~2^...

  • Redis Cluster(集群)入门

    数据分区 哈希分区 特点:数据分散度高,键值分布业务无关,无法顺序访问,支持批量操作 典型产品:一致性哈希Memc...

网友评论

      本文标题:一致性哈希原理梳理(数据分库场景)

      本文链接:https://www.haomeiwen.com/subject/veohectx.html