public class SnowFlakeIDKeyGenerator extends Object implements IKeyGenerator
雪花算法 ID 生成器。
优化自开源项目:Sequence
Modifier and Type | Field and Description |
---|---|
protected InetAddress |
address
IP 地址信息,用来生成工作机器 ID 和数据中心 ID。
|
Constructor and Description |
---|
SnowFlakeIDKeyGenerator()
雪花算法 ID 生成器。
|
SnowFlakeIDKeyGenerator(InetAddress address)
根据 IP 地址计算数据中心 ID 和工作机器 ID 生成数据库 ID。
|
SnowFlakeIDKeyGenerator(long workerId,
long dataCenterId)
根据数据中心 ID 和工作机器 ID 生成数据库 ID。
|
Modifier and Type | Method and Description |
---|---|
Object |
generate(Object entity,
String keyColumn) |
InetAddress |
getAddress() |
long |
getDataCenterId() |
protected long |
getDataCenterId(long maxDataCenterId)
根据网卡 MAC 地址计算余数作为数据中心 ID。
|
long |
getLastTimeMillis() |
static long |
getOffsetPeriod() |
long |
getSequence() |
static long |
getTwepoch() |
long |
getWorkerId() |
protected long |
getWorkerId(long dataCenterId,
long maxWorkerId)
根据 MAC + PID 的 hashCode 获取 16 个低位生成工作机器 ID。
|
long |
nextId()
获取下一个 ID。
|
void |
setAddress(InetAddress address) |
void |
setLastTimeMillis(long lastTimeMillis) |
static void |
setOffsetPeriod(long offsetPeriod) |
void |
setSequence(long sequence) |
static void |
setTwepoch(long twepoch) |
protected InetAddress address
public SnowFlakeIDKeyGenerator()
public SnowFlakeIDKeyGenerator(InetAddress address)
address
- IP 地址public SnowFlakeIDKeyGenerator(long workerId, long dataCenterId)
workerId
- 工作机器 IDdataCenterId
- 数据中心 IDprotected long getWorkerId(long dataCenterId, long maxWorkerId)
protected long getDataCenterId(long maxDataCenterId)
public Object generate(Object entity, String keyColumn)
generate
in interface IKeyGenerator
public long nextId()
public static long getTwepoch()
public static void setTwepoch(long twepoch)
public static long getOffsetPeriod()
public static void setOffsetPeriod(long offsetPeriod)
public long getWorkerId()
public long getDataCenterId()
public InetAddress getAddress()
public void setAddress(InetAddress address)
public long getSequence()
public void setSequence(long sequence)
public long getLastTimeMillis()
public void setLastTimeMillis(long lastTimeMillis)
Copyright © 2024. All rights reserved.