消息队列
消息队列: 把要传输的数据放在队列中
功能: 可以实现多个系统之间的解耦,异步,削峰/限流等 常用的消息队列应用: kafka,rabbitMQ,redis
消息队列主要分为两种,这两种模式Redis都支持
生产者消费者模式
模式介绍
队列介绍
生产者发布消息
查看队列所有消息
消费者消费消息
再次验证队列消息
发布者订阅模式
模式简介
Publisher:发布者
Subscriber:订阅者
Channel:频道
订阅者监听频道
发布者发布消息
各个订阅者都能收到消息
订阅多个频道
订阅所有频道
订阅匹配的频道
取消订阅
redis 集群与高可用
虽然Redis可以实现单机的数据持久化,但无论是RDB也好或者AOF也好,都解决不了单点宕机问题,即 一旦单台 redis服务器本身出现系统故障、硬件故障等问题后,就会直接造成数据的丢失
此外,单机的性能也是有极限的,因此需要使用另外的技术来解决单点故障和性能扩展的问题。
redis 主从复制
redis 主从复制架构
主从复制特点
主从复制实现
参考案例: 导致主从服务器数据全部丢失
在关闭主服务器上的持久化,并同时开启自动拉起进程的情况下,即便使用Sentinel来实现Redis的高可 用性,也是非常危险的。因为主服务器可能拉起得非常快,以至于Sentinel在配置的心跳时间间隔内没 有检测到主服务器已被重启,然后还是会执行上面的数据丢失的流程。无论何时,数据安全都是极其重要的,所以应该禁止主服务器关闭持久化的同时自动启动。
命令行配置
启用主从同步
默认redis 状态为master,需要转换为slave角色并指向master服务器的IP+PORT+Password 在从节点执行REPLICAOF MASTER_IP PORT 指令可以启用主从同步复制功能,早期版本使用 SLAVEOF指令(注意防火墙问题Firewalld)
范例:
范例:
删除主从同步
在从节点执行 REPLIATOF NO ONE 指令可以取消主从复制
同步日志
在 master 上观察日志
在 slave 节点观察日志
修改slave节点配置文件
范例: (CentOS8 注意防火墙问题)
master和slave查看状态
slave 观察日志
Master日志
slave 状态只读无法写入数据
主从复制故障恢复
主从复制故障恢复过程介绍
slave 节点故障和恢复
当 slave 节点故障时,将Redis Client指向另一个 slave 节点即可,并及时修复故障从节点
master 节点故障和恢复
需要提升slave为新的master
master故障后,只能手动提升一个slave为新master,不支持自动切换。 之后将其它的slave节点重新指定新的master为master节点 Master的切换会导致master_replid发生变化,slave之前的master_replid就和当前master不一致从而会引发所有 slave的全量同步。
主从复制故障恢复实现
假设当前主节点172.31.0.8故障,提升172.31.0.18为新的master
停止slave同步并提升为新的master
测试能否写入数据:
修改所有slave 指向新的master节点
在新master可看到slave
实现 redis 的级联复制
即实现基于Slave节点的Slave master和slave1节点无需修改,只需要修改slave2及slave3指向slave1做为mater即可
在 master 设置key,观察是否同步
在中间那个slave查看状态
主从复制优化
主从复制过程
Redis主从复制分为全量同步和增量同步
主从同步完整过程
具体主从同步过程如下:
复制缓冲区(环形队列)配置参数:
避免全量复制
避免复制风暴
主从同步优化配置
Redis在2.8版本之前没有提供增量部分复制的功能,当 络闪断或者slave Redis重启之后会导致主从之间的全量同步,即从2.8版本开始增加了部分复制的功能。
性能相关配置
常见主从复制故障汇总
master密码不对
即配置的master密码不对,导致验证不通过而无法建立主从同步关系。
Redis版本不一致
不同的redis 大版本之间存在兼容性问题,比如:3和4,4和5之间,因此各master和slave之间必须保持版本一致
无法远程连接
在开启了安全模式情况下,没有设置bind地址或者密码
配置不一致
主从节点的maxmemory不一致,主节点内存大于从节点内存,主从复制可能丢失数据 rename-command 命令不一致,如在主节点定义了fushall,flushdb,从节点没定义,结果执行flushdb,不同步
文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树数据库组成表32256 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!