SnowflakeIdWorker 重复
k8s 雪花生成器重复
·
k8s环境下容易重复
多个相同pod同时启动后,并发插入表发生主键重复
主键用的雪花生成器
分布式解决方案: 使用注册中心例如nacos的注册服务的ip作为workerid
代码如下
Spring的InetUtils工具类: 获取
InetUtils inetUtils
获取网卡ip地址
InetAddress address = inetUtils.findFirstNonLoopbackAddress();
byte[] ipAddressByteArray = address.getAddress();
//保证位数 唯一id作为雪花的workerid就ok了
long workerid = ((ipAddressByteArray[ipAddressByteArray.length - 2] & 0B11) << Byte.SIZE) + (ipAddressByteArray[ipAddressByteArray.length - 1] & 0xFF);
dataId就可以使用随机数了
更多推荐
已为社区贡献3条内容
所有评论(0)