目前在生产环境中发现,使用com.baomidou.mybatisplus.toolkit.IdWorker生成的分布式id会出现重复的问题,并且并发目前还并不算大,最大的时候在10左右,结果监控显示,每天至少有5次的重复
Comment From: qmdx
希望能够提供详细使用例子,最好能够复现
Comment From: FelixLiuSheng
只需要在短时间内重复调用获取分布式ID即可,增加一个监控检测id重复,就容易会出现
Comment From: FelixLiuSheng
我项目里面是使用的id作为主键并且唯一,使用后在并发时就容易出现了ID重复,根据我们的监控显示,这样的错误一般在一天几次,如我第一个描述的一样,我建议是不是可以把随机值占的比例调大一点,把机器位调小一点等方式来改善一下这个问题?
Comment From: soulmz
@qmdx 参考资料: https://mp.weixin.qq.com/s/e-hEYALJXVKAP18WheJjRg
Comment From: yuxiaobin
@FelixLiuSheng 能不能大概描述一下你们生产环境?比如几台机器?并发大概多少?
- 是否是一台机器部署了多个应用,这多个应用段时间获取ID出现重复?
- 或者是多台机器,什么系统?
多提供点环境参数,有助于查看和解决这个重复问题
Comment From: qmdx
idWorker 雪花算法 与 机器码 进程 id 时间有关系,出现该问题,注意查看每个可能的因素是否干扰
Comment From: lizhongmin612
你们是不是没有指定workId 用的默认的workId获取策略。这种依赖jvm pid做hash运算的策略有可能导致多不同实例的workId重复
Comment From: xuhanfeng2219
我项目里面是使用的id作为主键并且唯一,使用后在并发时就容易出现了ID重复,根据我们的监控显示,这样的错误一般在一天几次,如我第一个描述的一样,我建议是不是可以把随机值占的比例调大一点,把机器位调小一点等方式来改善一下这个问题?
我们现在用的是3.0.7.1的版本也出现你碰到的这种问题,只要单量大,并发上来了,就会出现这样的问题,我们200万单大概出现了接近200次的重复,你们现在解决了吗?我看你是2年前遇到的这个问题。