public class FlexIDKeyGenerator extends Object implements IKeyGenerator
特点: 1、保证 id 生成的顺序为时间顺序,越往后生成的 ID 值越大; 2、运行时,单台机器并发量在每秒钟 10w 以内; 3、运行时,无视时间回拨; 4、最大支持 99 台机器; 5、够用大概 300 年左右的时间;
缺点: 1、每台机器允许最大的并发量为 10w/s。 2、出现时间回拨,重启机器时,在时间回拨未恢复的情况下,可能出现 id 重复。
ID组成:时间(7+)| 毫秒内的时间自增 (00~99:2)| 机器ID(00 ~ 99:2)| 随机数(00~99:2)用于分库分表时,通过 id 取模,保证分布均衡。
| 限定符和类型 | 字段和说明 |
|---|---|
private long |
clockSeq |
private static long |
INITIAL_TIMESTAMP |
private long |
lastTimeMillis |
private static long |
MAX_CLOCK_SEQ |
private long |
workId |
| 构造器和说明 |
|---|
FlexIDKeyGenerator() |
FlexIDKeyGenerator(long workId) |
private static final long INITIAL_TIMESTAMP
private static final long MAX_CLOCK_SEQ
private long lastTimeMillis
private long clockSeq
private long workId
public FlexIDKeyGenerator()
public FlexIDKeyGenerator(long workId)
private long nextId()
private int getRandomInt()
Copyright © 2024. All rights reserved.