内置工具

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();