.NET集成IdGenerator生成分布式全局唯一ID
前言
生成分布式唯一ID的方式有很多种如常见的有UUID、Snowflake(雪花算法)、数据库自增ID、Redis等等,今天我们来讲讲.NET集成IdGenerator生成分布式全局唯一ID。
分布式ID是什么?
分布式ID是一种在分布式系统中生成唯一标识符的方法,用于解决多个节点之间标识符重复或性能问题。
分布式ID需要满足的条件
- 全局唯一性:分布式ID在整个分布式系统中必须是唯一的,不同节点生成的ID不能重复。
- 高性能:生成分布式ID的算法或机制应该具有高效的性能,能够在大规模的分布式环境下迅速生成ID。
- 高可用 :生成分布式ID的服务要保证可用性无限接近于100%。
- 方便易用 :拿来即用,使用方便,快速接入。
- 压缩性:分布式ID应该尽可能地使用较少的存储空间,减少对网络传输和存储的负载。
IdGenerator介绍
IdGenerator是一个全面的分布式主键ID生成器,使用的是优化的雪花算法(SnowFlake)雪花漂移算法,在缩短ID长度的同时,具备极高瞬时并发处理能力(50W/0.1s)。
- 这是优化的雪花算法(雪花漂移),它生成的ID更短、速度更快。
- 支持 k8s 等容器环境自动扩容(自动注册 WorkerId),可在单机或分布式环境生成数字型唯一ID。
- 原生支持 C#/Java/Go/Rust/C/SQL/Node.js/PHP(C扩展) 等语言,并提供Python、PB多线程安全调用动态库(FFI)。
- 兼容所有雪花算法(号段模式或经典模式,大厂或小厂),将来你可做任意的升级切换。(一般无须升级,但理论上支持)。
C# IdGenerator支持环境
.NET Standard 2.0+ (支持:.net framework4.6.1+/.net core 2.0+/.net5/.net6+/.net7+/.net8/mono5.4+/Unity 2018+/Xamarin)。
性能数据
(参数:10位自增序列,1000次漂移最大值).
连续请求量 | 5K | 5W | 50W |
---|---|---|---|
传统雪花算法 | 0.0045s | 0.053s | 0.556s |
雪花漂移算法 | 0.0015s | 0.012s | 0.113s |