是否有好的措施在高并发、多任务情况下,防止自带的雪花ID算法出现生成重复? 返回
历历 发布于2025/12/22
我们最近出现了好多次,在高并发场景下,用自带的雪花ID方法偶尔会出现重复的情况。尤其是在处理系统间的数据同步时,多任务、多线程情况下。想问下老师,有没有好的措施?
热忱回答(15)
-
历历 VIP0
2025/12/22有时一分钟需要生成一万-三万个,有时一天会产生好几次重复的ID。 我们是用SnowFlakeSingle.Instance.NextId()来获取。
0 回复 -
历历 VIP0
2025/12/22能否在SnowFlakeSingle的生产算法中,强制Sleep(1) ?
0 回复 -
历历 VIP0
2025/12/22
我看源码中使用了 lock,搞不懂为什么会出现重复,且只有一个站点,还不是多站点。
0 回复 -
fate sta VIP0
2025/12/22雪花ID重复是没有设置workid,每台机器或者每个应用都要设置不同的workid,并且程序启动后workdid不能修改
0 回复 -
fate sta VIP0
2025/12/22或者机器时间回调。
0 回复 -
fate sta VIP0
2025/12/22文档:雪花ID有介绍
0 回复 -
历历 VIP0
2025/12/22有的,专门 在 appsettings 中有配置 WorkId,但就一个站点。 时间没有回退。 我感觉会不会是系统卡顿造成的?因为场景是系统数据同步。
0 回复 -
fate sta VIP0
2025/12/22本地和服务器都连一个库也要区公workid
0 回复 -
历历 VIP0
2025/12/22系统是单站点,数据进入站点后 重新生成的ID。是B/S的 老师,不是客户端服务端程序。系统是接收数据后,重新生成ID 。
现在不止多任务用同一个方法插入有重复, 不同类型的单据保存方法,也存在重复问题。
所以我猜会不会是系统卡顿并发产生的。
0 回复 -
fate sta VIP0
2025/12/22正确使用雪花ID不存重复的情况
0 回复 -
fate sta VIP0
2025/12/22认真按文档排查,当然你非要认为是算法问题,你也可以重写雪花ID算法。
文档:雪花ID
0 回复 -
fate sta VIP0
2025/12/22另外前端要序列化成string。不然精度会丢失。
0 回复 -
历历 VIP0
2025/12/22@fate sta:数据库直接用的 char(19)类型
0 回复 -
历历 VIP0
2025/12/22是在单站点生成的ID,应该不是因为workid 老师,出现重复的时候 也换过 workid ,包括在系统program中写死一个数字。现在一直解决不了。
0 回复 -
fate sta VIP0
2025/12/22认真按文档排查,目前雪花ID算法没有问题的3年来没一例出现问题,用户写独立DEMO测试后都是自个问题,当然你非要认为是算法问题,你也可以重写雪花ID算法。
文档:雪花ID
0 回复