redis 一主两从三哨兵

一、架构说明

Redis 是一种开源的高性能键值数据库,通常用于缓存和消息传递。在 Redis 的架构中,主从复制和哨兵系统是实现高可用性数据一致性的重要机制。

在这种架构中,有一个主节点(Master)和两个从节点(Slave),以及三个哨兵(Sentinel)实例。各个角色的功能如下:

  • 主节点(Master):负责处理写操作,是数据的主要来源。
  • 从节点(Slave):负责从主节点复制数据,可以处理读操作,起到读写分离的作用。
  • 哨兵(Sentinel):负责监控主节点和从节点的健康状态,当检测到故障时,会自动进行故障转移。

二、作用

  1. 数据冗余:两个从节点提供了数据冗余,即使主节点发生故障,仍然有从节点可以提供数据。
  2. 读写分离:从节点负责处理读操作主节点负责处理写操作,可以提高系统的读取性能。
  3. 故障转移:当主节点发生故障时,哨兵系统可以自动地在从节点中选举出一个新的主节点,保持服务的可用性。
  4. 监控和报警:哨兵系统可以监控Redis 实例的健康状态,并在出现问题时向管理员发送报警通知。

三、优点

  1. 高可用性:通过哨兵系统,Redis 可以实现自动故障转移,确保服务的持续可用。
  2. 数据一致性:主从复制确保了数据的同步,从节点可以作为主节点的数据备份。
  3. 扩展性:可以通过增加从节点来扩展读取性能。
  4. 灵活性:可以根据实际需求调整主从复制的数量和哨兵的数量。

四、Redis哨兵模式的详细工作流程是怎样的?

Redis哨兵(Sentinel)模式是一种高可用性的解决方案,它允许你监控多个Redis实例,并在检测到故障时自动执行故障转移操作。以下是Redis哨兵模式的工作流程:


  1. 哨兵选举:
  • 当哨兵模式启动时,多个哨兵实例会相互通信,并选举出一个领导者(Leader)。
  • 领导者哨兵负责执行故障转移操作。
  1. 监控Redis实例:
  • 每个哨兵实例都会独立地监控一个或多个Redis实例(主节点和从节点)。
  • 哨兵通过定期发送PING命令到Redis实例来检查其健康状态。
  1. 故障检测:
  • 如果哨兵在指定的时间内没有收到某个Redis实例的PING响应,它会认为该实例出现了故障。
  • 一旦检测到故障,哨兵会将故障信息发送给其他哨兵实例。
  1. 主节点故障转移:
  • 当主节点故障时,领导者哨兵会开始故障转移过程。
  • 领导者哨兵会从从节点中选择一个作为新的主节点,这个选择通常基于从节点的运行状态和优先级(通过redis.conf配置文件中的slave-priority设置)。
  1. 配置更新和通知:
  • 领导者哨兵会更新新的主节点和从节点的配置信息。
  • 它还会向客户端发送命令,通知它们连接到新的主节点。
  1. 从节点故障恢复:
  • 如果原来的主节点恢复了正常,它会被重新配置为从节点,并开始从新的主节点同步数据。
  1. 手动故障恢复:
  • 即使哨兵模式可以自动执行故障转移,管理员也可以手动恢复故障的Redis实例。
  • 管理员可以通过命令行工具或Web界面来执行这些操作。
  1. 持久化状态:
  • 哨兵模式会持久化其状态到本地磁盘,包括故障转移的历史记录和当前的主节点信息。
  • 这样即使在哨兵模式重启后,也能恢复到正确的状态。
  1. 日志和监控:
  • 哨兵实例会生成日志,记录其活动的详细信息。
  • 这些日志可以用于监控和故障排查。

通过这个过程,Redis哨兵模式确保了即使在发生故障的情况下,Redis服务也能快速恢复正常运行,从而保证了系统的可用性和数据的一致性。

五、哨兵模式如何确保数据一致性?

哨兵模式(Sentinel Mode)是阿里巴巴开源的一个流量控制组件,主要用于保障微服务架构下的稳定性和高可用性。其主要功能是提供流量控制、熔断降级、系统负载保护等丰富的服务治理功能。


在确保数据一致性方面,哨兵模式主要通过以下机制实现:

  • 流量控制:通过控制进入系统的流量,避免系统过载,从而保持数据一致性不受威胁。例如,当系统检测到某一个资源访问量过大时,可以采用排队等待、限制请求频率等方式,确保系统不会因为流量激增而崩溃。
  • 熔断机制:当检测到服务间调用失败时,哨兵模式可以自动触发熔断机制,暂停服务间的调用,避免雪崩效应,并给系统一个恢复的机会。在这个过程中,可以通过缓存等方式维护数据一致性。
  • 降级策略:当系统负载过高或出现问题时,可以自动或手动将某些服务或资源降级,例如返回静态数据、直接响应错误等,从而减少系统压力,保证核心业务的一致性。
  • 系统负载保护:哨兵模式能够监控系统的实时状态,当系统负载接近或达到阈值时,可以采取措施保护系统,如拒绝部分请求、触发报警等,避免系统因为过载而发生故障。
  • 数据同步与缓存机制:在服务之间调用时,通过引入缓存机制,可以减少对下游系统的压力,同时确保数据的一致性。例如,当一个服务更新了数据后,通过缓存同步机制,将最新数据同步到其他服务,保证数据的一致性。
  • 异常报警:哨兵模式可以实现实时的异常监控和报警,一旦发现系统异常或响应超时等情况,立即通知管理员进行处理,从而确保问题得到及时解决,维护数据一致性。

通过上述机制,哨兵模式在微服务架构中起到了非常重要的作用,它通过多方面的保护措施,确保了系统在面对高并发、复杂依赖关系时的稳定性和数据一致性。


六、搭建安装准备

1、安装用户以及用户组均为 jxkh,创建用户和用户组通常使用useradd和groupadd命令。以下是如何创建一个名为jxkh的用户和用户组:
命令 :

groupadd jxkh

命令 :

useradd -m -g jxkh jxkh
<

相关推荐

  1. redis 哨兵

    2024-06-14 09:52:06       7 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-14 09:52:06       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-14 09:52:06       20 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-14 09:52:06       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-14 09:52:06       20 阅读

热门阅读

  1. UltraISO 未找到虚拟光驱

    2024-06-14 09:52:06       7 阅读
  2. 代码随想录第三十七天打卡

    2024-06-14 09:52:06       7 阅读
  3. 数据库什么情况使用索引(附MYSQL示例)

    2024-06-14 09:52:06       11 阅读
  4. 速盾的防护功能是如何实现的?

    2024-06-14 09:52:06       12 阅读
  5. 判断IP地址是否与CIDR表示的96.32/12匹配

    2024-06-14 09:52:06       12 阅读
  6. QT——事件

    2024-06-14 09:52:06       12 阅读
  7. SqlSugar无实体CURD应用-C#

    2024-06-14 09:52:06       12 阅读
  8. uni-app canvas创建画布

    2024-06-14 09:52:06       9 阅读
  9. 自然语言处理(NLP)教学解决方案

    2024-06-14 09:52:06       8 阅读
  10. Civil 3d中 三角网曲面求取二维和三维面积

    2024-06-14 09:52:06       10 阅读
  11. SQL 基础入门教程

    2024-06-14 09:52:06       9 阅读
  12. SqlServer 数据库挂起

    2024-06-14 09:52:06       7 阅读