Redis集群之redis cluster模式

Redis Cluster是一种服务器 Sharding 技术,redis 3.0版本开始正式提供。
Sentinel基本已经实现了高可用,但是每台机器都存储相同内容,很浪费内存,所以Redis Cluster实现了分布式存储。每台机器节点上存储不同的内容,并且可扩展性大大提高。

1、Redis Cluster 数据分片原理
redis 数据分片使用的是hash slot, redis集群有16384个哈希槽,每个Key通过CRC16校验后对16384取模来决定放置哪一个槽。
当存取redis key时候,redis会根据CRC16算法得到一个结果,然后把结果和16384求余,通过这个值去对应得节点获取数据。
这个时候,应用客户端实际上只需要连接其中任意一个节点即可,然后Redis Cluster 中每个节点都保存了其他节点得槽信息。这样当存取key计算完槽之后,通过保存槽信息从配置中获取节点信息,然后再去对应得节点获取数据。
在这里插入图片描述

2、Redis Cluster 复制原理
redis-cluster集群引入了主从复制模型,一个主节点对应一个或者多个从节点,当主节点宕机的时候,就会启用从节点。当其它主节点 ping 一个主节点 A 时,如果半数以上的主节点与 A 通信超时,那么认为主节点 A 宕机了。如果主节点 A 和它的从节点 A1 都宕机了,那么该集群就无法再提供服务了
一般为保证可用性,为防止某一节点故障造成相应的插槽不可用的情况,我们一般采用多主多从架构;即使主节点挂了,也能够从其他从节点拿到对应插槽的数据。
3、redis Cluster 优缺点
优点:
1、数据依照slot存储分布在多个节点,节点间数据共享,能够动态调整数据分布;可扩展性;无中心架构;
2、高可用性;能够降低运维成本,有效提高系统的可用性以及扩展性。
缺点:
1、数据通过异步复制,不保证数据的强一致性;Client 实现复杂;节点会因为某些原因发生阻塞被判断下线;
2、Key不可以将一个很大的键值对象如 hash、list 等映射到不同的节点,不支持多数据库空间,避免产生 big-key,导致网卡撑爆、慢查询等;
3、复制结构只支持一层;避免产生hot-key,导致主库节点成为系统的短板;
4、重试时间应该大于cluster-node-time时间。

寄语:redis cluster模式官方默认主节点提供读写,从节点提供slot​数据备份以及故障转移。使用过程中推荐使用多主多从实现分布式储存以及高可用​,如果有业务需求需要从节点提供读服务需要修改从节点配置readonly选项.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小沈同学呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值