#unique-id #node-id #snowflake #cluster #generation #id-generator #uid

bin+lib snowflake_uid

一个模块,使用雪花逻辑在节点集群中生成保证唯一的ID

2 个版本

0.1.1 2024年5月6日
0.1.0 2024年5月5日

##301 in 配置

48 次每月下载

MIT/Apache

11KB
132

雪花

雪花是一个库,它提供了一个基于Twitter 的雪花逻辑的简单唯一ID生成实现。

+--------------------------------------------------------------------------+
| 1 Bit Unused | 41 Bit Timestamp |  10 Bit NodeID  |   12 Bit Sequence ID |
+--------------------------------------------------------------------------+

逻辑

  • 有两个组件 - GeneratorConfig
  • Config 有一个默认实现,它提供每毫秒 2 ^ 21 (2097152) 个唯一 ID(每个节点 1024 个,跨 2048 个节点)直到 2149 年(大约从纪元开始 139 年)。这些值可以根据需要自定义以支持更高的吞吐量或更长的唯一 ID 有效生成周期。默认配置使用以下详细信息 -
    • timestampBits - 42
    • nodeIdBits - 11

lib.rs:

雪花-UID

雪花-UID 是一个库,它提供了一个基于 Twitter 的雪花逻辑的简单唯一ID生成实现。

+--------------------------------------------------------------------------+
| 1 Bit Unused | 41 Bit Timestamp |  10 Bit NodeID  |   12 Bit Sequence ID |
+--------------------------------------------------------------------------+

逻辑

  • 有两个组件 - GeneratorConfig
  • Config 有一个默认实现,它提供每毫秒 2 ^ 21 (2097152) 个唯一 ID(每个节点 1024 个,跨 2048 个节点)直到 2149 年(大约从纪元开始 139 年)。这些值可以根据需要自定义以支持更高的吞吐量或更长的唯一 ID 有效生成周期。默认配置使用以下详细信息 -
    • timestamp_bit_count - 42
    • node_id_bit_count - 11

示例

use snowflake_uid::{Config, Generator};

// Default config
let cfg = Config::default();
let mut gen = Generator::from(cfg, env::var_os("HOST_NODE_ID"));
let uid = gen.get();

// Custom config for more coarse window size and larger number of nodes in the cluster.
let cfg_2 = Config::from(40, 13);
let mut gen = Generator::from(cfg_2, env::var_os("HOST_NODE_ID"));
let uid = gen.get();

无运行时依赖