#id-generator #distributed-id #id #snowflake-id #generator #snowflake #random

sonyflake

受Twitter的Snowflake启发的分布式唯一ID生成器

4个版本

0.2.0 2023年6月22日
0.1.2 2021年9月11日
0.1.1 2020年12月29日
0.1.0 2020年12月29日

#2081算法

Download history 525/week @ 2024-03-13 555/week @ 2024-03-20 714/week @ 2024-03-27 578/week @ 2024-04-03 666/week @ 2024-04-10 703/week @ 2024-04-17 751/week @ 2024-04-24 796/week @ 2024-05-01 811/week @ 2024-05-08 1096/week @ 2024-05-15 862/week @ 2024-05-22 1284/week @ 2024-05-29 785/week @ 2024-06-05 1476/week @ 2024-06-12 1744/week @ 2024-06-19 1311/week @ 2024-06-26

5,504 每月下载量
helyim 中使用

MIT/Apache

20KB
400

sonyflake-rs

Build crates.io docs.rs License

Twitter的Snowflake启发的分布式唯一ID生成器。

这是原始的sony/sonyflake的Rust实现,原始版本是用Go编写的。

Sonyflake ID由以下部分组成

  • 39位表示10毫秒为单位的时序
  • 8位表示序列号
  • 16位表示机器ID

安装

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

[dependencies]
sonyflake = "0.2"

快速入门

use sonyflake::Sonyflake;

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

基准测试

基准测试在配备2.8GHz i7和16GB内存的MacBook Pro(15英寸,2017)上运行。使用cargo bench自行运行。

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