Class InstagramIdGenerator

java.lang.Object
uno.xifan.id.generator.shardingid.InstagramIdGenerator

public class InstagramIdGenerator extends Object
Instagram风格的分布式ID生成器

该生成器基于Instagram的Snowflake ID生成算法的变体实现,用于生成分布式环境下的唯一标识符。 ID由以下部分组成: - 41位时间戳(毫秒级,以自定义epoch为基准) - 13位分片ID(最多支持8192个分片) - 10位序列号(每毫秒最多生成1024个ID)

Since:
1.0
Author:
ixiongdi
  • 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

      public static void main(String[] args)
      测试方法,演示ID生成器的使用方式
      Parameters:
      args - 命令行参数(未使用)