数据库
首页 > 数据库> > Redis分布式集群-cluster

Redis分布式集群-cluster

作者:互联网

文章目录


1.redis的cluster?

2.负载均衡算法

3.分布式Session

上面讲到了hash(ip),这里就说一下,对于分布式来说,我们要保证分布式session的实现:

4.redis cluster(重点来了)

在这里插入图片描述
客户段请求的key,经过CRC16得到一个值,然后对16384取余,来决定放置到哪个槽,每个节点负责一部分的槽,如:
在这里插入图片描述
两次寻址过程:

5.补充,为什么槽的大小是16384,不是65536?

  1. 在redis节点发送心跳包时需要把所有的槽放到这个心跳包里,以便让节点知道当前集群信息,16384=16k,在发送心跳包时使用char进行bitmap压缩后是2k(2 * 8 (8 bit) * 1024(1k) = 16K),也就是说使用2k的空间创建了16k的槽数。
  2. 虽然使用CRC16算法最多可以分配65535(2^16-1)个槽位,65535=65k,压缩后就是8k(8 * 8 (8 bit) * 1024(1k) =65K),也就是说需要需要8k的心跳包
    作者认为这样做不太值得;并且一般情况下一个redis集群不会有超过1000个master节点,所以16k的槽位是个比较合适的选择。

综合来说:就是进行hash槽信息的同步的时候,保证发送的信息量少,并且一般不会超过1000个节点(一般不超过1000个也说明节点数不能太多,所以16384够用了!)

参考链接:
https://www.jianshu.com/p/de268f62f99b

标签:Redis,redis,cluster,16384,服务器,节点,分布式
来源: https://blog.csdn.net/qq_37534947/article/details/120090302