欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

redis 分布算法

程序员文章站 2022-06-24 11:40:31
hash算法hash算法最大的一个问题是,比如三台服务,一台挂了(这时就丢了三分之一数据),原来%3取值的,要变为%2取值,这时%2极可能找到错误的服务器,导致取不到原来的值,这样,就不尽是取不到三分之一的数据了,可能是绝大部分数据都取不到了。丢一致性hash算法(自动缓存迁移)+虚拟节点(自动负载均衡)redis cluster,hash slot算法redis cluster(1)自动将数据进行分片,每个maste......

 

 

hash算法

redis 分布算法

hash算法最大的一个问题是,比如三台服务,一台挂了(这时就丢了三分之一数据),原来%3取值的,要变为%2取值,这时%2极可能找到错误的服务器,导致取不到原来的值,这样,就不尽是取不到三分之一的数据了,可能是绝大部分数据都取不到了。丢

 

 

一致性hash算法(自动缓存迁移)+虚拟节点(自动负载均衡)

redis 分布算法

 

redis 分布算法

 

redis cluster,hash slot算法

 

 

redis 分布算法

 

redis cluster

(1)自动将数据进行分片,每个master上放一部分数据
(2)提供内置的高可用支持,部分master不可用时,还是可以继续工作的

在redis cluster架构下,每个redis要放开两个端口号,比如一个是6379,另外一个就是加10000的端口号,比如16379

16379端口号是用来进行节点间通信的,也就是cluster bus的东西,集群总线。cluster bus的通信,用来进行故障检测,配置更新,故障转移授权

cluster bus用了另外一种二进制的协议,主要用于节点间进行高效的数据交换,占用更少的网络带宽和处理时间

 

redis cluster有固定的16384个hash slot,对每个key计算CRC16值,然后对16384取模,可以获取key对应的hash slot

redis cluster中每个master都会持有部分slot,比如有3个master,那么可能每个master持有5000多个hash slot

hash slot让node的增加和移除很简单,增加一个master,就将其他master的hash slot移动部分过去,减少一个master,就将它的hash slot移动到其他master上去

移动hash slot的成本是非常低的,这里只可能极短时间内可能取不到数据

客户端的api,可以对指定的数据,让他们走同一个hash slot,通过hash tag来实现

本文地址:https://blog.csdn.net/liuming690452074/article/details/107197958