1 个不稳定版本
0.1.0 | 2023年3月18日 |
---|
#2091 in 算法
13KB
147 行
雪花生成器
Snowgen
是一个基于Rust的生成唯一、分布式ID的库。它受到Twitter的雪花ID生成器的启发,并为分布式系统中的唯一ID生成提供了一种高效、线程安全的解决方案。
特性
- 可自定义ID的每个组件的纪元、节点ID、机器ID和位长度
- 线程安全,确保在多线程环境中也能生成唯一的ID
- 构建器模式,便于配置和验证
入门指南
将以下行添加到您的 Cargo.toml
文件中的 [dependencies]
snowgen = "0.1.0"
用法
use snowgen::{SnowgenBuilder, Epoch};
fn main() {
// Create a new Snowgen builder with default values
let builder = SnowgenBuilder::new();
// Customize the builder
let snowgen = builder
.node_id(1)
.machine_id(2)
.epoch(Epoch::MillisecondsSinceUnixEpoch(1615890112000))
.timestamp_bits(41)
.node_id_bits(5)
.machine_id_bits(5)
.sequence_bits(12)
.build()
.unwrap();
// Generate a unique ID
let unique_id = snowgen.next_id().unwrap();
println!("Generated ID: {}", unique_id);
}
基准测试结果
single_thread_snowgen time: [243.83 ns 244.11 ns 244.41 ns]
change: [-0.3326% -0.0319% +0.2692%] (p = 0.84 > 0.05)
No change in performance detected.
Found 4 outliers among 100 measurements (4.00%)
1 (1.00%) low severe
3 (3.00%) low mild
multi_thread_snowgen time: [52.552 µs 52.991 µs 53.352 µs]
change: [-0.8495% -0.0131% +0.7323%] (p = 0.98 > 0.05)
No change in performance detected.
Found 5 outliers among 100 measurements (5.00%)
2 (2.00%) low severe
2 (2.00%) high mild
许可证
本项目采用许可证。