RedisCluster是Redis推出的官方集群解决方案
在此之前,先了解Redis的集群演变过程(不做实现,只分析)
一、主从复制
缺点:如果主Redis服务器宕机后,从服务器不能晋升为主服务器,从而导致redis服务失效
二、Redis哨兵机制
在主从复制之间引入哨兵
哨兵机制可以通过raft选举将从服务器晋升为主服务器,并通知到客户端。
缺点:
- Redis不好在线扩容,集群容量一旦达到上限,在线扩容就十分麻烦。
- 实现哨兵模式的配置繁琐
三、Redis集群(非官方)
缺点:健壮性差,性能相对较差(因为不是直接到redis库,而是通过代理)
四、Redis官方集群-redis cluster
实现了高可用和高并发,通过多个主redis实现高并发(分槽存放),通过主从选举保证高可用
架构细节:
1)所有的Redis主节点彼此互联(通过ping-pong机制--发送回应机制),内部使用二进制协议优化传输速度和带宽
2)判断主节点宕机--通过集群半数的结点监测失效才确定主节点宕机(因此主节点一般是单数的)
3)客户端与主节点直接连接,不需要通过代理消耗性能,客户端不需要连接所有的主节点,连接任意一个即可(通过crc16算法,算出属于哪个槽就会分配到哪个主节点库中)
4)redis将所有物理结点映射到[0,16383]slot上,cluster负责维护node<->slot<->value
tips:为什么是16384,看下大佬的解答 https://www.cnblogs.com/rjzheng/p/11430592.html