百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
I

IdGen

> 编程语言
开源

Twitter 类似 Snowflake 的 ID 生成器 (适用于 .Net)

1.3K stars0 点赞2 次浏览
访问官网GitHub

工具介绍

Twitter 类似 Snowflake 的 ID 生成器 (适用于 .Net)

IdGen

Twitter 类似的 Snowflake ID 生成器,适用于 .Net。可作为 Nuget 包 使用。

为什么

在某些情况下,您需要一个低延迟、分布式、无协调、(大致)按时间顺序排序、紧凑且高可用性的 Id 生成系统。本项目受到 Twitter 的 Snowflake 项目的启发,该项目已被淘汰。请注意,本项目受到 Snowflake 的启发,但并非完全一致的实现。此库为 Id 生成提供了基础;它不提供分配这些 Id 的服务,也不提供生成器 Id(即"工作 ID")的协调。

它是如何工作的

IdGen 就像 Snowflake 一样生成 64 位的 Id。签名位 无法使用,因为这可能会导致某些无法使用无符号类型的系统出现错误的排序,或者使得正确的排序变得困难。因此,实际上,IdGen 生成 63 位的 Id。一个 Id 包含 3 部分:

不过,使用 IdStructure 类,您可以根据自己的需要调整创建的 ID 的结构;如果需要,可以使用 45 位时间戳、2 位生成器 ID 和 16 位序列。只要 3 部分(时间戳、生成器和序列)的总和为 63 位,您就可以继续使用了!

Id 的 timestamp 部分应该说得自明;默认情况下,它每毫秒都会增加一次,表示自特定纪元以来的毫秒数。然而,IdGen 依赖于 ITimeSource,该对象使用一个 'tick' 可以定义为任何值;无论是毫秒(默认值)、秒还是日或纳秒(硬件支持等允许)。默认情况下,IdGen 使用 2015-01-01 0:00:00Z 作为纪元,但您也可以指定自定义纪元。

Id 的 generator-id 部分是您要"配置"的部分;它可以对应主机、线程、数据中心或大洲:这取决于您。不过,generator-id 在系统中应是唯一的:如果您有多个主机或线程,则 generator-id 也应是唯一的。

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

C#c-sharpdotnetidgeneratorsnowflake

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言