#唯一标识符 #ID生成器 #唯一ID #节点ID #可排序 #分布式 #时间戳

无需std scru64

SCRU64: 可排序、基于时钟、特定领域唯一标识符

13个版本 (2个稳定版)

1.0.1 2024年8月17日
1.0.0 2023年9月28日
0.5.0 2023年9月23日
0.4.2 2023年9月6日
0.1.0 2023年3月15日

#193数据结构

Download history 1/week @ 2024-05-29 117/week @ 2024-08-14

每月117 次下载

Apache-2.0

83KB
1.5K SLoC

SCRU64: 可排序、基于时钟、特定领域唯一标识符

Crates.io License

SCRU64 ID提供由分布式节点生成的紧凑、按时间顺序排列的唯一标识符。SCRU64具有以下特性

  • 63位非负整数,可以存储为有符号/无符号64位整数
  • 按生成时间排序(作为整数和文本)
  • 12位不区分大小写的文本表示(Base36)
  • 基于Unix纪元的约38位时间戳,确保使用寿命直到4261年
  • 可变长度的节点/机器ID和计数器字段,共享24位
// pass node ID through environment variable
// (e.g., SCRU64_NODE_SPEC=42/8 command ...)

// generate a new identifier object
let x = scru64::new();
println!("{}", x); // e.g., "0u2r85hm2pt3"
println!("{}", x.to_u64()); // as a 64-bit unsigned integer

// generate a textual representation directly
println!("{}", scru64::new_string()); // e.g., "0u2r85hm2pt4"

有关详细信息,请参阅SCRU64规范

SCRU64的唯一性是领域特定的,即依赖于对每个生成器的节点ID的集中分配。如果您需要去中心化、全局唯一的按时间顺序排列的标识符,请考虑SCRU128

包功能

默认功能

  • std将库与系统时钟等集成,以获取当前时间戳。在没有std的情况下,此包在no_std环境中提供有限的功能。
  • global_gen(暗示std)启用了主要的new()new_string()函数以及底层的进程范围全局生成器。

可选功能

  • serde通过serde启用序列化/反序列化。
  • tokio(与global_gen一起)启用了tokio::new()tokio::new_string()函数,这是new()new_string()的非阻塞对应物。

许可

根据Apache许可证版本2.0许可。

另请参阅

依赖关系

~0–1.3MB
~24K SLoC