Snowflake Generator
Genera ID a 64 bit in stile Twitter: timestamp + machine ID + sequenza
Il tuo Snowflake ID
Timestamp (41 bit)
-
Data/ora
-
Datacenter ID (5 bit)
-
Worker ID (5 bit)
-
Sequence (12 bit)
-
Rappresentazione binaria
-
64 bit: 1 sign + 41 timestamp + 5 datacenter + 5 worker + 12 sequence
Ordinabile: ordinabile per tempo grazie ai 41 bit di timestamp in alto
Throughput: fino a 4.096 ID/ms per worker (12 bit di sequence)
Epoch: Twitter usa 2010-11-04, qui personalizzabile (default 2010-01-01)
JavaScript
// Twitter Snowflake — richiede BigInt
const EPOCH = 1262304000000n; // 2010-01-01
let lastTs = 0n, seq = 0n;
function snowflake(datacenter = 1n, worker = 1n) {
let ts = BigInt(Date.now());
if (ts === lastTs) {
seq = (seq + 1n) & 0xFFFn;
if (seq === 0n) while (BigInt(Date.now()) <= ts) {}
} else {
seq = 0n;
}
lastTs = ts;
return ((ts - EPOCH) << 22n)
| (datacenter << 17n)
| (worker << 12n)
| seq;
}