callicoder / java-snowflake

Distributed Unique ID Generator in Java inspired by Twitter Snowflake

Home Page:https://www.callicoder.com/distributed-unique-id-sequence-number-generator/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Java distributed Unique ID generator inspired by Twitter snowflake

You can read about Twitter snowflake here.

The IDs are 64-bits in size and are generated with the combination of the following:

  • Epoch timestamp in milliseconds precision - 41 bits. The maximum timestamp that can be represented using 41 bits is 2^41 - 1, or 2199023255551, which comes out to be Wednesday, September 7, 2039 3:47:35.551 PM. That gives us 69 years with respect to a custom epoch..
  • Node ID - 10 bits. This gives us 1024 nodes/machines.
  • Local counter per machine - 12 bits. The counter’s max value would be 4095.

How to use

The Snowflake class should be used as a singleton in your application.

Snowflake s = new Snowflake(275)
s.nextId()

Read the blog to understand more: