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就可以使用随机数了

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐