public class SnowflakeIdWorker extends Object
| 限定符和类型 | 字段和说明 |
|---|---|
private long |
datacenterId
数据中心ID(0~31)
|
private long |
datacenterIdBits
数据标识id所占的位数
|
private long |
datacenterIdShift
数据标识id向左移17位(12+5)
|
private long |
lastTimestamp
上次生成ID的时间截
|
private long |
maxDatacenterId
支持的最大数据标识id,结果是31
|
private long |
maxWorkerId
支持的最大机器id,结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数)
|
private long |
sequence
毫秒内序列(0~4095)
|
private long |
sequenceBits
序列在id中占的位数
|
private long |
sequenceMask
生成序列的掩码,这里为4095 (0b111111111111=0xfff=4095)
|
private long |
timestampLeftShift
时间截向左移22位(5+5+12)
|
private long |
twepoch
开始时间截 (2015-01-01)
|
private long |
workerId
工作机器ID(0~31)
|
private long |
workerIdBits
机器id所占的位数
|
private long |
workerIdShift
机器ID向左移12位
|
| 构造器和说明 |
|---|
SnowflakeIdWorker(long workerId,
long datacenterId)
构造函数
|
private final long twepoch
private final long workerIdBits
private final long datacenterIdBits
private final long maxWorkerId
private final long maxDatacenterId
private final long sequenceBits
private final long workerIdShift
private final long datacenterIdShift
private final long timestampLeftShift
private final long sequenceMask
private long workerId
private long datacenterId
private long sequence
private long lastTimestamp
public SnowflakeIdWorker(long workerId,
long datacenterId)
workerId - 工作ID (0~31)datacenterId - 数据中心ID (0~31)public long nextId()
protected long tilNextMillis(long lastTimestamp)
lastTimestamp - 上次生成ID的时间截protected long timeGen()
public static void main(String[] args)
Copyright © 2022 Pivotal Software, Inc.. All rights reserved.