hutool雪花算法生成重复
参考链接:
记一次线上 Snowflake 算法 id 重复事件复盘_idutil.getsnowflake-CSDN博客
Snowflake生成器单机模拟时间回退导致id重复 · Issue #1206 · dromara/hutool (github.com)
一、问题描述
使用版本:
<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.6.3</version> </dependency>
获取id具体代码:
public class SnowflakeUtils { /** * 生成Snowflake id */ public static String createNo() { Snowflake snowflake = new Snowflake(1, 1); return snowflake.nextIdStr(); } }
问题:高并发时重复。具体表现为jmeter设置10秒内发送200个请求时,偶发性会产生1~2个重复id,500个时,固定会有一场,1000个并发时,大约2%重复
解决方法:
1)单例模式获取雪花算法实例
2)升级到叫新版本(对于我的版本其实不用,但是最好升级一下)
改造后的pom和java:
pom:
<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.25</version> </dependency>
java:
public class SnowflakeUtils { /** * 生成Snowflake id */ public static String createNo() { Snowflake snowflake = IdUtil.getSnowflake(1, 1);//单例方式获取实例,否则高并发会重复!!! return snowflake.nextIdStr(); } }
jmeter:
设置
0异常:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)