前段时间我们线上的系统除了一些问题。原因是我们的数据库id主键使用的是雪花id,然后我们在赋值的时候使用的是IdWorker.getId()进行赋值,然后由于我们的服务器有限,因此一个服务在同一台机器上启动了5个服务,最后在日志记录里面就看到了雪花id重复了,示例图所示:
我们知道雪花id的生成与本机上服务器时间,workid(机器部分),datacenterid(数据标识id部分)这3个因素有关,所以在同一台机器上,这些信息其实都是一样的。所以出现了重复id的问题。那么遇到这个问题如何解决呢?其实很简单,服务器时间我们没法改变,那么我们就改变这个workid和datacenerid即可,所以我们只需要在配置文件中添加如下的配置:
mybatis-plus.global-config.worker-id: ${random.int(1,31)} mybatis-plus.global-config.datacenter-id: ${random.int(1,31)}
然后我们再启动服务,进行部署之后,就可以看到不会再出现重复的雪花id了,这里我的测试样本是本地服务启动了4个
然后使用压测工具进行压测:
整个压测的日志,没有看到任何错误的日志,所有数据都成功进库了。
数据库的数据也是对的
最后附上本测试案例sql及源码,登陆后即可下载。
还没有评论,来说两句吧...