springboot+redis集群实现集群拓扑动态刷新温故

server/2024/11/9 17:07:36/

springboot项目,并集成redis集群,当redis集群节点宕掉后又恢复了,但springboot调用redis集群服务报错,下面对springboot集成redis集群实现集群拓扑动态刷新进行温习和巩固。

原因分析:
使用lettuce连接redis集群实例,一个redis节点宕掉之后,实例执行规格变更后,分片数有变化时,部分槽位(Slot)会迁移到新分片上,当客户端连接到新分片时会出现报错。
解决方法:

  • jedis client默认自动支持(由于jedis通过自身异常反馈来识别重连、刷新服务端的集群信息机制,保证其自动故障恢复)
  • luttuce client 默认未开启,需要手动开启刷新
  • springboot 1.x之前版本默认使用jedis,无需要手动开启刷新
  • springboot 2.x,redis client默认为Lettuce,默认不支持拓扑刷新解决方案:
  • 使用jedis,不需要手动指定开启刷新
  • 使用lettuce,需要设置开启刷新节点拓扑策略
  • springboot 2.3.0开始,支持集群拓扑刷新功能,属性配置开启即可

下面为springboot2.3.10版本集成redis集群的配置实例
1、redis集群配置
redis集群需要搭建3主3从,在搭建用于公司生产环境的集群时,搭建3主6从,这样不会一个节点宕机导致全部宕机,可靠性更高,会搭3主3从就会搭3主6从。redis集群搭建参考大佬相关博文即可,此处不再介绍。
2、springboot集成redis集群
pom依赖

<!--默认是lettuce客户端-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- redis依赖commons-pool 这个依赖一定要添加 -->
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId>
</dependency>

application.yml配置如下

spring:application:name: testredis:lettuce:pool:max-active: 8   # 连接池最大连接数默认值为8 max-wait: -1ms  # 连接池最大阻塞时间(使用负值表示没有限制)默认值为-1max-idle: 8     # 连接池中最大空闲连接数默认值为8min-idle: 0     # 连接池中的最小空闲连接数,默认值为0cluster:# 感知集群的主从切换refresh:adaptive: true    #支持集群拓扑动态感应刷新,自适应拓扑刷新是否使用所有可用的更新,默认false关闭period: 2000      #定时刷新cluster:nodes: - 192.168.1.11:7306 - 192.168.1.11:7305- 192.168.1.11:7304- 192.168.1.11:7303- 192.168.1.11:7302- 192.168.1.11:7301max-redirects: 3

或application.properties配置

spring.redis.lettuce.cluster.refresh.adaptive=true
spring.redis.lettuce.cluster.refresh.period=5000

springboot2.3 以后加上下面配置可自动刷新拓扑,某节点挂掉后,会有新的主从关系,如果不配置,调用接口时程序会报错。


http://www.ppmy.cn/server/98246.html

相关文章

路径规划 | 五种经典算法优化机器人路径规划(Matlab)

目录 效果一览基本介绍程序设计参考文献 效果一览 基本介绍 五种经典算法优化机器人路径规划&#xff0c;算法可任意更换&#xff01;地图可修改&#xff01;Matlab语言 1.分为简单路径规划和复杂路径规划两种情景&#xff0c;采用粒子群算法(PSO)&#xff0c;遗传算法(GA)&am…

使用jlink高版本调试和烧录立创·地文星CW32F030C8T6开发板

文章目录 使用jlink高版本调试和烧录立创地文星CW32F030C8T6开发板CW32F030固件包下载Jlink补丁Devices.xml文件 Jlink烧录Jlink仿真 使用jlink高版本调试和烧录立创地文星CW32F030C8T6开发板 CW32F030固件包下载 下载地址&#xff1a;https://www.whxy.com/uploads/files/20…

数据可视化(王者英雄数据分析)

目 录 第1章 绪 论 1.1 课题背景及研究目的 1.2 课题研究内容 第2章 课题概要及算法原理 2.1 课题概要 2.2 数据说明 2.3 关键技术 第3章 数据分析 3.1 数据统计分析 3.2 可视化分析 3.2.1数据读取及展示 3.2.2数据描述性分析 第4章 数据建模 4.1 数据预处理 4.2…

我在高职教STM32——I2C通信入门(2)

大家好,我是老耿,高职青椒一枚,一直从事单片机、嵌入式、物联网等课程的教学。对于高职的学生层次,同行应该都懂的,老师在课堂上教学几乎是没什么成就感的。正是如此,才有了借助CSDN平台寻求认同感和成就感的想法。在这里,我准备陆续把自己花了很多心思设计的教学课件分…

【css】使用CSS绘制奥运五环--巴黎奥运

使用CSS绘制奥运五环 在2024年巴黎奥运会期间&#xff0c;本文来使用 CSS 来画一个奥运五环。奥运五环由五个相互交叠的圆环组成&#xff0c;分别代表五大洲。 奥运五环是相互连接的&#xff0c;因此在视觉上会产生重叠效果&#xff0c;这也是实现五环最有挑战性的部分 HTML结…

简述hadoop技术栈的组成?

hadoop由HDFS、Mapreduce、YARN三大组件组成。 HDFS&#xff1a; HDFS是分布式文件存储系统&#xff0c;负责海量数据的存储。 元数据是描述核心数据的数据。 NameNode是集群的主节点&#xff0c;用于管理集群中的各种数据。 SecondaryNameNode主要用于辅助NameNode进行文件…

【RN】实现markdown文本简单解析

需求 支持文本插入&#xff0c;比如 xxx {product_name} xxx &#xff0c;如果提供了product_name变量的值为feedback&#xff0c;则可以渲染出 xxx feedback xxx。支持链接解析&#xff0c;比如 [baidu](https://www.baidu.com/)&#xff0c;可以直接渲染成超链接的形式。支持…

常见中间件漏洞

Tomcat CVE-2017-12615 1.打开环境&#xff0c;抓包 2.切换请求头为 PUT&#xff0c;请求体添加木马&#xff0c;并在请求头添加木马文件名 1.jsp&#xff0c;后方需要以 / 分隔 3.连接 后台弱口令部署war包 1.打开环境,进入指点位置,账户密码均为 tomcat 2.在此处上传一句话…