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异常:

posted @   jiafeng  阅读(1905)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示