找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2410

积分

1

好友

333

主题
发表于 2025-12-25 03:30:33 | 查看: 37| 回复: 0

哨兵架构部署与配置要点

在哨兵架构中,建议将哨兵集群节点与Redis服务集群节点独立部署,这在生产环境中尤为重要,不推荐复用节点以避免单点风险。

SpringBoot项目中,标准的配置方式非常简洁,核心在于正确配置哨兵节点地址。以下是典型的 application.yml 配置示例:

spring:
  redis:
    sentinel:
      master: mymaster  # 必须与哨兵配置中的`sentinel monitor`指定的主节点名称一致
      nodes: # 配置所有哨兵节点的地址
        - 192.168.1.100:26379
        - 192.168.1.101:26379
        - 192.168.1.102:26379
    password: your-redis-password # 如果Redis服务启用了密码,在此配置
    database: 0
    lettuce:
      pool:
        max-active: 8
        max-idle: 8
        min-idle: 0

客户端服务发现机制解析

细心的开发者可能会发现,在上面的配置中,我们并未直接指定任何Redis主节点或从节点的地址。这是因为Lettuce(或Jedis)客户端内置了一套高效的自动服务发现机制,其工作流程如下:

  1. 连接哨兵:应用启动时,客户端会根据配置连接到其中一个哨兵节点。
  2. 查询主节点:客户端向哨兵发送 SENTINEL get-master-addr-by-name 命令,传入配置的 master 名称(如 mymaster),从而获取当前主Redis节点的真实IP和端口。
  3. 建立连接:客户端使用获取到的主节点地址建立实际的Redis连接,开始进行数据操作。
  4. 订阅事件:同时,客户端会订阅哨兵节点上的特定发布/订阅频道。
  5. 故障转移响应:当哨兵集群完成故障转移,选举出新的主节点后,会通过频道发布 +switch-master 事件。客户端监听到此事件后,会自动断开旧连接,并使用新的主节点地址重新建立连接,整个过程对应用程序几乎透明。

哨兵模式主从切换示意图

核心注意事项

  • 哨兵节点配置spring.redis.sentinel.nodes 应配置集群中所有哨兵节点的地址,客户端会从中选择可用的进行连接,而不仅仅是配置所谓的主哨兵。
  • Master名称一致性:配置项 spring.redis.sentinel.master 的值必须与Redis哨兵配置文件中的 sentinel monitor <master-name> ... 指令所定义的名称完全一致。
  • 密码配置:如果Redis服务实例设置了密码,在 spring.redis.password 中配置即可。若哨兵进程本身也配置了密码(较少见),则可能需要额外设置 spring.redis.sentinel.password
  • 客户端选择:Spring Boot 2.x 版本默认使用Lettuce客户端,其原生支持哨兵模式。如果项目中使用的是Jedis客户端,请确保其版本对哨兵模式有良好支持。

通过以上配置与机制解析,开发者可以清晰地理解SpringBoot如何与作为关键的数据库/中间件的Redis哨兵集群协作,实现高可用的数据缓存服务。




上一篇:英飞凌AURIX™ TC4x SMM模块深度解析:域控制器电源管理与ASIL-D功能安全实现
下一篇:杭州黑岩科技跨界开发战棋游戏《荒渊暗涌》:动画公司的单机游戏探索之路
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-11 20:14 , Processed in 0.279435 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表