分布式一致性hash算法

1.一致性hash算法应用领域

缓存、ES、hadoop、分布式数据库

分布式数据存储场景下需要一致性hash算法

2.一致性hash详解

以缓存为例:

使用缓存目的:提升数据访问性能,缓解数据库压力。以空间换时间

单机缓存

常用缓存中间件: redis、memcache

分布式高并发系统特点?

  • 高并发
  • 海量数据

高并发问题如何处理?

分布式集群;高并发必集群

redis、memcache的并发能力?

10w+并发

应对高并发:缓存集群

海量数据对缓存有什么影响?

超出单机内存容量,需要缓存集群分片

应对海量数据:分布式缓存集群

缓存集群和分布式缓存集群区别?

缓存集群:实例数据一致

分布式缓存集群:数据分片

主从:高可用、高并发性能

分布式缓存集群,数据如何均衡分布到缓存集群的节点上?

  • 均衡分布方式一:hash(key)%集群节点数

    问题:临时增加节点提高集群性能,不方便扩展集群。

    增加一个节点后,有多大比例数据缓存命不中?

    3->4 3/4 75%

    99->100 99%

    就是一个余数有多少相同的数学题目?

    最小公倍数。

    大量缓存命不中,就会访问数据库,瞬间失去缓存的分压,数据库不堪重负

    导致:缓存雪崩

    加班: 凌晨扩容,并预热数据。。。

  • 均衡分布方式二:**一致性hash算法***

    1. hash值是一个非负整数,把非负整数的值范围做成一个圆环;
    2. 对集群的节点的某个属性求hash值(如节点名称、节点ip),根据hash值把节点放到环上;
    3. 对数据的key求hash,一样的把数据也放到环上,按顺时针方向,找离它最近的节点,就存储到这个节点上。

    新增节点能均衡缓解原有节点的压力吗? 无法

    集群节点一定会均衡分布在环上吗?无法均衡分布

    如何做到均衡分布,均衡缓解?

  • 均衡分布方式二:一致性hash算法+虚拟节点

    使用虚拟节点

    虚拟节点上环,来分布数据;

    虚拟节点越多,分布越均衡;

    虚拟节点越多,新增节点对原有节点影响越均衡;

    新增节点,对数据的影响比例: 1/n

实现???

分布式数据:分库分表

  • 运营商网速与实际网速关系
  • 解决数据如何存储,一致性hash算法
  • 海量数据单机无法支撑,做集群

   转载规则


《分布式一致性hash算法》 keyj 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
redis分布式锁 redis分布式锁
1.分布式锁场景redis-lock 秒杀
2019-07-07 keyj
下一篇 
Redis Redis
1. Redis基础1.1 Redis介绍 Redis是一个开源的使用C语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库,并提供多种语言的API。 本质是客户端-服务端应用软件程序。 特点是使用简单,性能强悍、功能
2019-07-04 keyj
  目录