Featured image of post Redis集群原理与实践

Redis集群原理与实践

概念

Redis通过多个节点存储冗余或者分片数据,可具备读写分离、故障转移、数据备份等能力,实现高性能、高可用

主从复制模式

原理:

1、主节点负责处理写请求 2、从节点负责分摊处理读请求 3、从节点同步主节点写入的数据 4、主节点发生故障时,需要手动切换其他从节点代替主节点

优点:

1、实现了读写分离,提升了读的性能 2、实现了数据冗余,有一定容灾能力,提高了数据可用性 3、配置简单

缺点:

1、无法实现自动故障转移 2、无法实现数据分片,数据可存储量受单节点内存限制 3、写请求只由一个主节点处理,写请求没有被分摊,写性能没有很大提升

实践:

todo

哨兵模式

原理:

1、在主从复制基础上,增加哨兵节点,监控主从节点运行情况;当主节点发生故障时,及时自动触发故障转移,将其他从节点切换为主节点

优点:

1、具备主从复制模式优点的同时,还支持实现主节点的自动故障转移

缺点:

1、无法实现数据分片,数据可存储量受单节点内存限制 2、写请求只由一个主节点处理,写请求没有被分摊,写性能没有很大提升 3、配置相对复杂

实践:

todo

Cluster模式

原理:

1、数据分片后,数据分摊存储在集群中的各个主节点中,其中每个主节点都至少有一个从节点,并且从节点备份主节点数据以及可以分摊读请求(默认主节点处理读写请求) 2、读写请求进来,使用CRC16算法对key计算哈希值,然后对16384取模得到需要路由处理的主节点槽位编号,然后由对应编号的主节点处理请求 3、集群中的所有节点,都会周期性的向其他节点发送心跳,当超过一定时间没有收到某个主节点心跳,集群会将其从节点升级为主节点,完成自动故障转移(所以哨兵不是必须的)

优点:

1、实现数据冗余和数据分片,提升数据存储和容灾能力 2、实现主节点自动故障转移(可不借助哨兵) 3、读写请求分摊到多个节点,实现了负载均衡,提升了性能 4、可实现读写分离

缺点:

1、配置复杂 2、不支持对跨节点的多个键进行操作,比如mget、mset命令 3、单个键值对最大的存储数据量有限制

实践:

todo

comments powered by Disqus