Fity3是一个53位适合Twitter雪崩方案的生成器。
项目描述
Fity3是一个53位适合Twitter雪崩方案的生成器。
其方案是
timestamp | worker_id | sequence 41 bits | 8 bits | 4 bits
Twitter的雪崩方案用于id生成具有许多良好特性。在不协调的方式下,每秒可以创建大量大致排序的id。
然而,在用IEEE 754浮点数进行数值计算的环境中使用64位整数是痛苦的。特别是JavaScript和Redis排序集的分数。
此方案允许
69年的id(与雪崩相同)
最多256个唯一id生成工作者
每个工作者每毫秒最多可以生成16个id
因此每秒最多4百万个id
如果您正在构建一个系统,它不太受欢迎,那么使用率将增长到每秒创建超过4百万个新事物,但您可以从不协调的增量id生成中受益,并且不想每次通过Websocket从JavaScript请求数据时都自讨苦吃,这个方案可能是一个有用的替代方案。
>>> import fity3
>>> f3 = fity3.generator(1)
>>> next(f3)
14127739136
>>> next(f3)
14132125952
>>> next(f3)
14135079168
# convenience to convert to a unix timestamp
>>> fity3.to_timestamp(14135079168)
1413374250
让我们希望我们不会在2079年支持这些系统中的任何一个。