Skip to content
Twitter's Snowflake UUID generator in Erlang.
Erlang
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
src
test
.gitignore
Makefile
README.md
rebar
rebar.config

README.md

Snowflake: a 64-bit UUID generator

Original design by Twitter.

1> application:start(snowflake).
2> snowflake:new().
<<0,231,97,68,12,192,0,0>>
3> snowflake:serialize(snowflake:new()).
<<"AOdiTg5AAAA=">>
4> sets:size(sets:from_list([snowflake:new() || _I <- lists:seq(1,100000)])).
100000
5> lists:map(fun ({T, _}) -> T end,[timer:tc(snowflake, new, []) || _I <- lists:seq(1,100)]).
[93,46,42,42,42,53,55,43,42,43,73,36,34,33,39,52,48,39,35,
 54,36,34,33,34,40,35,33,33,34|...]

To do

  • Fix for NTP adjustments

    Sometimes NTP will repeat milliseconds, but this violates the strict ordering of snowflake. Snowflake should keep track of the last seen time and wait until NTP catches back up so as to ensure monotonicity.

Something went wrong with that request. Please try again.