#unique-id #id-generator #id #snowflake-id #snowflake #unique

webe_id

基于Snowflake的唯 一ID生成器,但适用于我们这些巫师

3个不稳定版本

0.2.0 2020年9月13日
0.1.1 2019年11月9日
0.1.0 2019年11月9日

#1124数据库接口

自定义许可

7KB
71

WebeID

基于Snowflake的唯 一ID生成器,但适用于我们这些巫师

64位唯 一ID

定义

5字节 - 自定义纪元以来的时间(总共34.84年)。
1字节 - 节点ID(总共256个节点)
2字节 - 增量序列号

对此ID的假设

  • 技术将迅速发展,到那时,128位ID(如GUID)在极大型数据库表中将具有可接受的性能。
    • 这意味着我们不需要大的时间范围,我们很可能永远不会使用Snowflake和Sonyflake的“未来使用”位。
  • 使用此ID的开发者是一个爱好者或小型生产者。
    • 不太可能将ID创建扩展到成千上万的分布式机器。
    • 使用这些ID不太可能超过34.84年的最大时间范围

优势

  • 自定义纪元。
  • 防止系统时间回滚的安全性。
  • 防止序列溢出的安全性。
  • 支持快速ID创建,每节点每毫秒最多可创建65536个ID。
  • 数据部分可以在常见的8位字节边界上分割
    • 解析部分不需要位操作。使用 ".to_be_bytes()" 转换为big-endian字节序列,然后使用切片索引0-4,5,6-7
    • 当每秒生成许多ID时,前6个字节会非常重复(因此可压缩)

备注

  • 我可以选择10ms的间隔,如Sony的Sonyflake,这将总时间范围提高到348.4年
    • 每10ms更高的序列意味着ID将更具可压缩性。
    • 然而;我的猜测是,未来的处理器,甚至在几年后,将能够超过10ms的最大序列范围(导致重复)。

无运行时依赖项