redis哨兵数据一致性手动同步的简单介绍

本文目录一览:

  • 1、玩转Redis的高可用(主从、哨兵、集群)
  • 2、redis主从和哨兵
  • 3、redis主从架构高可用如何实现
  • 4、Redis哨兵机制原理浅析
  • 5、如何保证redis与mysql数据最终一致性
玩转Redis的高可用(主从、哨兵、集群)1、Redis主从复制是指在一个Redis集群中,将一个Redis节点作为主节点,其余的Redis节点作为从节点 。主节点负责写入数据,从节点负责读取数据 。
2、哨兵模式解决了故障不能自动恢复的问题 , 但仍存在的问题是:Redis较难支持在线扩容,对于集群,容量达到上限时在线 扩容会变得很复杂。
3、Redis的哨兵机制就是解决主从复制存在缺陷(选举问题) , 解决问题保证我们的Redis高可用,实现自动化故障发现与故障转移 。要使用哨兵机制 , 除了启动Redis服务以外,还要启动哨兵服务来进行监控,会介绍详细步骤 。
【redis哨兵数据一致性手动同步的简单介绍】4、redis高可用:如果你做主从架构部署,其实就是加上哨兵就可以了,就可以实现 , 任何一个实例宕机,自动会进行主备切换 。
5、原理:当主节点出现故障时,由Redis Sentinel自动完成故障发现和转移,并通知应用方,实现高可用性 。
6、这个哨兵模式才稳定下来,无论是主从模式 , 还是哨兵模式,这两个模式都有一个问题,不能水平扩容,并且这两个模式的高可用特性都会受到Master主节点内存的限制 。
redis主从和哨兵配置3个哨兵和1主2从的Redis服务器来演示这个过程 。首先配置Redis的主从服务器,修改redis.conf文件如下 主从服务器都需要配置 配置3个哨兵,每个哨兵的配置都是一样的 。
首先配置Redis的主从服务器,修改redis.conf文件如下 上述内容主要是配置Redis服务器,从服务器比主服务器多一个slaveof的配置和密码 。配置3个哨兵 , 每个哨兵的配置都是一样的 。
一般需要三个节点,每个节点有一个 redis 和一个哨兵 。下面再分别描述 。我这里按三个 节点,先配置 redis 的主从复制 。1个节点作为 master,2个副本 。
因此,主从模式的一个缺点,就在于无法实现自动化地故障恢复。Redis后来引入了哨兵机制 , 哨兵机制大大提升了系统的高可用性 。哨兵 , 就是站岗放哨的,时刻监控周围的一举一动,在第一时间发现敌情并发出及时的警报 。
主从模式指的是使用一个Redis实例作为主机,其余的实例作为备份机 。一般来说主节点负责写请求 , 从节点负责读请求 , 主节点异步的同步给从节点 。主节点和从节点保存的数据是相同的,但是因为同步,从节点的数据会有一点延迟 。
哨兵集群,基于主从复制模式 , 所有的主从配置优点,它全有 。主从可以切换,故障可以转移,系统的可用性就会更好 。哨兵模式就是主从模式的升级 , 手动到自动 , 更加健壮 。集群容量一旦到达上限,在线扩容十分麻烦 。
redis主从架构高可用如何实现redis高可用:如果你做主从架构部署,其实就是加上哨兵就可以了,就可以实现,任何一个实例宕机,自动会进行主备切换 。
新版本Redis使用psync命令来代替sync命令,该命令既可以实现完整全同步也可以实现部分同步 。
Sentinel : redis 自带的主从切换工具,我们通过 sentinel 实现集群高可用 。客户端( Smart Client ):客户端通过约定查找 redis 实例在 ZooKeeper 中写入的地址 。
为了保证数据的高可用性,加入了主从模式,一个主节点对应一个或多个从节点,主节点提供数据存?。咏诘阍蚴谴又鹘诘憷∈荼阜荩?当这个主节点挂掉后,就会有这个从节点选取一个来充当主节点,从而保证集群不会挂掉 。
Redis哨兵机制原理浅析Redis哨兵模式的实现原理 。关于哨兵的原理 , 关键是了解以下几个概念:定时任务:每个哨兵节点维护了3个定时任务 。
原理 监控 sentinel节点需要监控master、slave以及其他sentinel节点的状态 。这一过程是通过Redis的pub\sub系统实现的 。
Redis的哨兵机制就是解决主从复制存在缺陷(选举问题) , 解决问题保证我们的Redis高可用,实现自动化故障发现与故障转移 。要使用哨兵机制,除了启动Redis服务以外,还要启动哨兵服务来进行监控,会介绍详细步骤 。
其原理是哨兵通过发送命令,等待Redis服务器响应,如果Redis服务器一直没有响应,说明这个Redis服务器可能已经宕机了,从而监控运行的多个Redis实例 。
如何保证redis与mysql数据最终一致性这种情况应该是先删除缓存,然后在更新数据库,如果删除缓存失败,那就不要更新数据库,如果说删除缓存成功,而更新数据库失败,那查询的时候只是从数据库里查了旧的数据而已,这样就能保持数据库与缓存的一致性 。
SAGA或者TCC - 这两种需要业务代码的大量配合 。通过业务代码来补偿一致性 。现实当中有XA协议 。比如Ehcache是支持XA协议的 。但是性能表现不佳,运维也麻烦 。
二者数据同步的关键在于mysql数据库中主键 , 方案是在redis启动时区mysql读取所有表键值存入redis中,往redis写数据是,对redis主键自增并进行读取,若mysql更新失败,则需要及时清除缓存及同步redis主键 。
如果要“保证”数据的安全性 , 那么会带来开销的进一步提升,以至于使用redis带来的性能优势都会丧失 。正确的做法是区分不同的业务 , 使得并不需要“保证”数据一致性的场合,可以使用redis优化 。而敏感的场合依然使用mysql 。
架构设计 通过上述结构设计图可以很清晰的知道用到的组件:MySQL、Canal、Kafka、ZooKeeper、Redis 。
方案1 (推荐学习:Redis视频教程)做缓存 , 就要遵循缓存的语义规定:读:读缓存redis,没有,读mysql,并将mysql的值写入到redis 。写:写mysql,成功后,更新或者失效掉缓存redis中的值 。

    推荐阅读