对于分布式id,有很多方案,现在大多数用的是基于雪花算法Snowflake的实现,美团有Leaf,百度有Uidgenerator,我这里记录下苞米豆在MybatisPlus3中的分布式id实现
简单介绍下雪花算法
雪花算法也叫雪花id,是一个64bit的整型数据,原生的Snowflake是这样的:
最高位不用,41bit保存时间戳,单位是毫秒,10bit的机器位,12bit的唯一序列号,可以理解是某一毫秒内,某台机器生成了不重复的序列号
10bit 一般一会分为5bit的datacenterId存储位和5bit的workerId存储位
从mybatisplus3.X开始,苞米豆已经把雪花算法的java实现放在了mybatisplus中,并且提供了默认实现类
public interface IdentifierGenerator {
/**
* 生成Id
*
* @param entity 实体
* @return id
*/
Number nextId(Object entity);
/**
* 生成uuid
*