Class InstagramIdGenerator
java.lang.Object
icu.congee.id.generator.shardingid.InstagramIdGenerator
Instagram风格的分布式ID生成器
该生成器基于Instagram的Snowflake ID生成算法的变体实现,用于生成分布式环境下的唯一标识符。 ID由以下部分组成: - 41位时间戳(毫秒级,以自定义epoch为基准) - 13位分片ID(最多支持8192个分片) - 10位序列号(每毫秒最多生成1024个ID)
- Since:
- 1.0
- Author:
- ixiongdi
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionlong生成一个唯一的分布式IDstatic void测试方法,演示ID生成器的使用方式
-
Constructor Details
-
InstagramIdGenerator
public InstagramIdGenerator(int shardId) 构造一个Instagram风格的ID生成器- Parameters:
shardId- 分片ID,用于标识不同的生成器实例,取值范围[0, 8191]- Throws:
IllegalArgumentException- 当分片ID超出有效范围时抛出
-
-
Method Details
-
generateId
public long generateId()生成一个唯一的分布式ID该方法是线程安全的,使用synchronized关键字确保并发安全。 当检测到时钟回拨时,会抛出异常以确保ID的单调递增性。
- Returns:
- 生成的唯一ID
- Throws:
RuntimeException- 当检测到时钟回拨时抛出
-
main
-