6个版本

0.1.10 2023年10月17日
0.1.9 2023年10月17日
0.1.8 2022年10月6日

#433数据结构

MIT/Apache

21KB
402

snowflake-rs

一个简单的Rust包,用于生成或解析Twitter的雪花ID,为分布式系统生成可按时间排序的64位唯一ID(灵感来源于Twitter的雪花)

Build crates.io docs.rs License

这是一个受Twitter的Snowflake启发的分布式唯一ID生成器。

这是对原始的houseme/snowflake的Rust实现,原始版本是用Go编写的。

雪花ID由以下部分组成

39位表示时间(以10毫秒为单位)8位表示序列号16位表示机器ID

安装

将以下内容添加到您的Cargo.toml

[dependencies]
snowflake_me = "0.1"

快速入门

use snowflake_me::Snowflake;

let sf = Snowflake::new().unwrap();
let next_id = sf.next_id().unwrap();
println!("{}", next_id);

基准测试

使用 cargo bench 运行基准测试。

1、基准测试在配备2.4GHz i9和64GB内存的2019年款MacBook Pro (16英寸)上运行。

test bench_decompose ... bench:         651 ns/iter (+/- 251)
test bench_new       ... bench:     795,722 ns/iter (+/- 371,556)
test bench_next_id   ... bench:      36,652 ns/iter (+/- 1,105)

2、基准测试在配备2.8GHz i7和16GB内存的2017年款MacBook Pro (15英寸)上运行。

test bench_decompose ... bench:       1,066 ns/iter (+/- 132)
test bench_new       ... bench:     738,129 ns/iter (+/- 318,192)
test bench_next_id   ... bench:      37,390 ns/iter (+/- 499)

许可证

许可协议为以下之一

任选其一。

贡献

除非您明确表示,否则根据Apache-2.0许可证定义的,您有意提交的工作的所有贡献,均将按照上述协议双许可,不附加任何额外条款或条件。

依赖关系

~4–5.5MB
~97K SLoC