算法:7位集群+40位时间戳+7位每秒最大生产个数数
适用于集群下唯一id生成:
public class TimeStampIDGenerator{
/**
* workerID must be unique for each node in cluster.
*/
private long workerID;
private long sequence = 0;
private long mark = 0;
private static final int MAXSEQUENCE = 128;
private static final int MAXWORKERID = 128;
private long lastTimeGen;
private final int workerIDBitWidth = 7;
private final int timeStampBitWidth = 40;
private final int sequenceBitWidth = 7;
private long sequenceLeftShift = 0;
private long timeStampLeftShift = sequenceBitWidth;
private long workerIDLeftShift = sequenceBitWidth + timeStampBitWidth;
/**
* MillSeconds from January 1, 1970 to November 3rd 2010
*/
private final long TIMEBASELINE = 1288834974657L;
public long nextId() {
synchronized (this) {
long timeGen = timeGen();
mark++;
sequence = (++sequence) % MAXSEQUENCE;
if (timeGen == lastTimeGen) {
if (mark >= MAXSEQUENCE) {
timeGen = tillNextMill();
mark = 0;
}
} else {
mark = 0;
}
lastTimeGen = timeGen;
return sequence << sequenceLeftShift | (timeGen - TIMEBASELINE) << timeStampLeftShift
| workerID << workerIDLeftShift;
}
}
public void setWorkerID(long id) {
if (validateWorkerID(id)) {
workerID = id;
} else {
throw new IllegalStateException("invalid id:" + id);
}
}
private boolean validateWorkerID(long id) {
if (id > MAXWORKERID || id < 0) {
return false;
} else {
return true;
}
}
private long tillNextMill() {
long timeGen = timeGen();
while (timeGen <= lastTimeGen) {
timeGen = timeGen();
}
// System.out.println("i'm in tillNextMill");
return timeGen;
}
private long timeGen() {
return System.currentTimeMillis();
}
@Override
public long generateId() {
return this.nextId();
}
}
分享到:
相关推荐
多语言新雪花算法(SnowFlake IdGenerator)是一种分布式系统中生成唯一ID的方法,其特点是高性能、有序、且能够支持多语言环境。该算法最初由Twitter提出,它能够为每个分布式系统中的节点生成一个64位的唯一ID。...
支持容器环境自动扩容(自动注册 WorkerId ),单机或分布式唯一IdGenerator。 迄今为止最全面的分布式主键ID生成器。 优化的雪花算法(SnowFlake)——雪花漂移算法,在缩短ID长度的同时,具备极高瞬时并发处理...
在探讨多语言新雪花算法(SnowFlake IdGenerator)的同时,我们将深入解析C语言基础的应用和重要性。雪花算法(SnowFlake)是一种由Twitter开发的用于生成唯一ID的算法,它能够有效避免在分布式系统中ID的重复问题。...
多语言新雪花算法(SnowFlake IdGenerator)是一种在分布式系统中用来生成唯一ID的算法。它是由Twitter开发的,并且被广泛应用于各个需要生成全局唯一ID的场景中。SnowFlake算法的目的是生成一个64位的整数,该整数...
最全面的分布式主键ID生成器。 优化的雪花算法(SnowFlake)——雪花漂移算法,在缩短ID长度的同时,具备极高瞬时并发处理能力(50W/0.1...支持容器环境自动扩容(自动注册 WorkerId ),单机或分布式唯一IdGenerator。
迄今为止最全面的分布式主键ID生成器。优化的雪花算法(SnowFlake)——雪花漂移算法,在缩短ID长度的同时,具备极高瞬时并发处理能力...支持容器环境自动扩容(自动注册 WorkerId ),单机或分布式唯一IdGenerator。
从给定的文件信息中可以看出,这个压缩包文件包含了一个与编程相关的项目,具体是使用C语言编写的一个名为“yitter_IdGenerator”的代码。根据文件标题和描述,我们可以得知这是一套C语言编程的代码,涉及到的领域是...
4. **hilo**:高低位算法(Hi-Lo Algorithm),它通过组合高位和低位数字来生成 ID,从而减少对数据库的访问。你需要预先创建一个名为 `high_val` 的表,以及一个 `nextval` 列,还需要指定最大低位值(max_lo)。 ...
1. 雪花算法:`id-generator` 可能采用了Twitter开源的Snowflake算法,该算法生成的ID由三部分组成:时间戳、工作节点ID和序列号。时间戳确保了ID的全局唯一性,工作节点ID可以区分不同的服务实例,序列号在每个节点...
1. **主文件**:一般命名为`index.js`或`idGenerator.js`,这是库的核心实现,包含了生成唯一ID的算法和函数。可能包含的方法有`generate()`或`createID()`,这些方法内部可能使用了时间戳、随机数、递增计数器等...
在Hibernate中,`Generator`是负责生成主键值的策略,通常在`<id>`元素中通过`class`属性指定。不同的数据库和不同的应用场景可能需要不同的生成策略。接下来,我们将逐一介绍各种常见的生成策略及其适用场景。 ###...
支持容器环境自动扩容(自动注册 WorkerId ),单机或分布式唯一IdGenerator。 这是优化的雪花算法(雪花漂移),它生成的ID更短、速度更快。支持 k8s 等容器环境自动扩容(自动注册 WorkerId),可在单机或分布式...
Snowflake-1.3.1_优化的雪花漂移算法,在缩短ID长度的同时,具备极高瞬时并发处理能力(50W-0.1s),原生支持 C#-Java...支持容器环境自动扩容(自动注册 WorkerId ),单机或分布式唯一IdGenerator,顶尖优化,超强效能
多语言版、包含生成16位、18位、19位3种长度的...idgenerator 16位雪花ID(多语言版,包括java、C#、Go、Python、NodeJs、PHP、Rust、SQL); itsm-learning 18位雪花ID(C#版); snowflake-net 19位雪花ID(C#版);
迄今为止最全面的分布式主键ID生成器。 优化的雪花算法(SnowFlake)——雪花漂移算法,在缩短ID长度的同时,具备极高瞬时并发处理能力...支持容器环境自动扩容(自动注册 WorkerId ),单机或分布式唯一IdGenerator。
public class SnowflakeIdGenerator { private static final SnowflakeIdWorker idWorker = new SnowflakeIdWorker(0, 0); public static long generateId() { return idWorker.nextId(); } } ``` 在这个例子中...
Vesta ID Generator是基于Twitter的Snowflake算法实现的,该算法的主要特点是将64位整数分为几个部分:时间戳(毫秒)、工作节点ID(worker ID)和序列号(sequence)。这种设计使得在分布式系统中,每个节点可以...
因此,"ID_generator"可能提供了一种优化的解决方案,比如使用雪花算法(Snowflake Algorithm)或者其他分布式ID生成算法。 雪花算法是由Twitter开源的一种生成全局唯一ID的算法,它的优点在于能够生成具有时间戳、...
从文件名推测,idgenerator-master.7z可能是一个包含了雪花算法ID生成器源代码的压缩包文件。readme.txt文件通常用于提供项目或文件包的说明信息,可能包含了如何使用或部署雪花算法生成器的指导。 雪花算法在处理...
在计算机科学中,随机数生成器(Random Number Generator, RNG)是关键工具,分为伪随机数生成器(Pseudo-Random Number Generator, PRNG)和真随机数生成器(True Random Number Generator, TRNG)。由于TRNG通常...