{"repo":"yitter/IdGenerator","free":true,"listed":false,"github":"https://github.com/yitter/IdGenerator","clone":"git clone https://github.com/yitter/IdGenerator.git","description":"💎多语言实现，高性能生成唯一数字ID。 💎优化的雪花算法（SnowFlake）——雪花漂移算法，在缩短ID长度的同时，具备极高瞬时并发处理能力（50W/0.1s）。 💎原生支持 C#/Java/Go/Rust/C/JavaScript/TypeScript/Python/Pascal 多语言，提供其它适用于其它语言的多线程安全调用动态库（FFI）。💎支持容器环境自动扩容（自动注册 WorkerId ），单机或分布式唯一IdGenerator。💎顶尖优化，超强效能。","language":"C","stars":3204,"topics":["snowflake","idgenerator","dotnet","rust","java","go","twritter-snowflake","c-sharp","unique-id","typescript"],"license":"MIT","category":"databases-storage","readme_excerpt":"雪花算法中非常好用的数字ID生成器 💎 最佳实践（置顶） 针对大家在使用中经常出现的性能疑问，我给出以下3组最佳实践： ❄ 如果ID生成需求不超过5W个/s，不用修改任何配置参数 ❄ 如果超过5W个/s，低于50W个/s，推荐修改：SeqBitLength=10 ❄ 如果超过50W个/s，接近500W个/s，推荐修改：SeqBitLength=12 总之，增加 SeqBitLength 会让性能更高，但生成的 ID 会更长。 💎 算法介绍 ❄ 这是优化的雪花算法（雪花漂移），它生成的ID更短、速度更快。 ❄ 支持 k8s 等容器环境自动扩容（自动注册 WorkerId），可在单机或分布式环境生成数字型唯一ID。 ❄ 原生支持 C#/Java/Go/C/Rust/Python/Node.js/PHP(C扩展)/SQL/ 等语言，并提供多线程安全调用动态库（FFI）。 ❄ 兼容所有雪花算法（号段模式或经典模式，大厂或小厂），将来你可做任意的升级切换。 ❄ 这是计算机历史上最全面的雪花ID生成工具。【截至2022年8月】 需求来源 💧 作为架构设计的你，想要解决数据库主键唯一的问题，特别是在分布式系统多数据库中。 💧 你希望数据表主键用最少的存储空间，索引速度更快，Select、Insert 和 Update 更迅速。 💧 你要考虑在分库分表（合库合表）时，主键值可直接使用，并能反映业务时序。 💧 如果这样的主键值太长，超过前端 js Number 类型最大值，须把 Long 型转换为 String 型，你会觉得有点沮丧。 💧 尽管 Guid 能自增，但占用空间大，索引速度慢，你不想用它。 💧 应用实例可能超过50个，每个并发请求可达10W/s。 💧 要在容器环境部署应用，支持水平复制、自动扩容。 💧 不想依赖 redis 的自增操作获得连续的主键ID，因为连续的ID存在业务数据安全风险。 💧 你希望系统运行 100 年以上。 传统算法问题 ❌ 生成的ID太长。 ❌ 瞬时并发量不够。 ❌ 不能解决时间回拨问题。 ❌ 不支持后补生成前序ID。 ❌ 可能依赖外部存储系统。 新算法特点 ✔ 整形数字，随时间单调递增（不一定连续），长度更短，用50年都不会超过 js Number类型最大值。（默认配置） ✔ 速度更快，是传统雪花算法的2-5倍，0.1秒可生成50万个（基于8代低压i7）。 ✔ 支持时间回拨处理。比如服务器时间回拨1秒，本算法能自动适应生成临界时间的唯一ID。 ✔ 支持手工插入新ID。当业务需要在历史时间生成新ID时，用本算法的预留位能生成5000个每秒。 ✔ 不依赖任何外部缓存和数据库。（k8s环境下自动注册 WorkerId 的动态库依赖 redis） ✔ 基础功能，开箱即用，无需配置文件、数据库连接等。 性能数据 (参数：10位自增序列，1000次漂移最大值) 连续请求量 5K 5W 50W ---- ---- ---- ---- 传统雪花算法 0.0045s 0.053s 0.556s 雪花漂移算法 0.0015s 0.012s 0.113s 💍 极致性能：500W/s 3000W/s。（所有测试数据均基于8代低压i7计算） 如何处理时间回拨 🔶 当发生系统时间回拨时，算法采用过去时序的预留序数生成新的ID。 🔶 回拨生成的ID序号，默认靠前，也可以调整为靠后。 🔶 允许时间回拨至本算法预设基数（参数可调）。 💎 ID组成说明 本算法生成的ID由3部分组成（沿用雪花算法定义）： +-------------","default_branch":null,"files":null,"tree":[],"storefront":"/r/yitter","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/yitter/IdGenerator/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}