内置工具
Mybatis-Kits 提供了一些内置的工具包
生成分布式唯一ID
ID 生成算法:
Twitter Snowflake 算法 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000
- 第一位为未使用,接下来的41位为毫秒级时间(41位的长度可以使用69年)
- 然后是5位dataCenterId和5位workerId(10位的长度最多支持部署1024个节点)
- 最后12位是毫秒内的计数(12位的计数顺序号支持每个节点每毫秒产生4096个ID序号)
接口:
- Long nextId() 返回一个 Long 型的ID
- String nextIdStr() 返回一个字符串 Long 型 ID
- String nextIdHex() 返回一个 16 进制类型 ID
如果部署多台服务器的话,需要配置 Snowflake
的 workerId(服务器ID) 和 dataCenterId(数据中心ID),已保证在不同机器生成的 ID 不会重复
配置方法也比较简单,在 resources
目录下新建 snowflake.properties
,添加以下配置参数:
# 工作机器ID(0~31)
snowflake.workId=1
# 数据中心ID(0~31)
snowflake.dataCenterId=1
配置好了之后就可以开始使用了
Snowflake idWorker = new Snowflake(1, 2);
for (int i = 0; i < 1000; i++) {
long id = idWorker.nextId();
System.out.println(id);
}
// 直接调用
Long id = Snowflake::getInstance()->nextId();
← 添加事务处理