雪花算法生成的id的组成
为什么它能保证id不重复?
- (1)第一位0,保证了生成的id为正数
- (2)中间的时间戳确保了生成后的id为递增状态,这样就可以在存储时消耗下降到最低,也是区别于uuid(乱序) 的一大优点
- (3)工作机器id保证了多台机器同一时刻生成的id也不重复
- (4)12位的序列号是同一个机器在同一时刻所能生成的最多的id的数量,2^12次方个id
雪花算法的问题
机器id如何设置?
可以在redis中做机器ID的自动分配,利用redis做机器id的自动配置
如何使用
- 引入hutool工具包
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.10</version>
</dependency>
private static long dataCenterId = 1; //数据中心
private static long workerId = 1; //机器标识
IdUtil.getSnowflake(workerId, dataCenterId).nextId();
//得到的就是唯一的id