redis 实现高并发高可用、
redis单机qps在在几万左右,搭建分布式集群主从架构,实现redis 的读写分离,解决高并发问题,高可用;
1、redis主master ,负责写redis
2、redis从slave ,负责读redis ,读的qps高达几十W
主从架构支持水平扩展,什么是水平扩展?
就是,当写的数据过多的时候,可以加master 机器、随时加机器
redis高可用的实现
使用redis + 哨兵 的架构部署、完成redis 高可用的实现;
主从复制原理
1、master node 写,异步的同步数据到 slave node、
2、master node 必须持久化机制,否则master 节点宕机,同步到 slave node 以后 ,所有数据空了;
尽管选举机制 slave node 可以代替master node , 当rdb 恢复时候, 若没有检测到 master fail 时master node 就重启了,数据仍旧是空;
1、slave第一次连接master ,master使用full resynchronization 命令来处理全部复制,
2、slave 第二次连接master ,采取部分复制方式,master 生成的RDB 到slave ,slave 会先到磁盘,再从磁盘中加载到内存;
在复制过程中中断续连
master 复制中断,采用backlog中replica offset 来继续断点复制,若没有找到,就会采取全部复制的方式。
无RDB 的主从复制
在内存中生成RDB文件,继续
删除过期key
slave 不会过期key ,master node 通过LRU 删除过期key 并且模拟发送一条 del 命令给slave,slave 删除过期key ;
哨兵+redis
sentinal 的作用
1、集群的监控
2、消息通知
3、故障转移
4、配置中心
为什么哨兵机制必须要有3个节点才能够维持高可用、
设置配置参数:configuration quorum=1 主节点master node 宕机切