首页 > 其他分享 >.NET集成IdGenerator生成分布式全局唯一ID

.NET集成IdGenerator生成分布式全局唯一ID

时间:2024-01-24 09:04:43浏览次数:22  
标签:IdGenerator 生成 算法 NET 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次漂移最大值).

连续请求量5K5W50W
传统雪花算法 0.0045s 0.053s 0.556s
雪花漂移算法 0.0015s 0.012s 0.113s

标签:IdGenerator,生成,算法,NET,ID,分布式
From: https://www.cnblogs.com/Can-daydayup/p/17983468

相关文章

  • oceanbase中的trace_id如何转换为地址信息
    日常运维过程中,我们经常会使用OceanBase的trace_id来定位问题,trace_id是唯一表示SQL执行语句的,如果我们知道trace_id如何转换为地址,我们就知道了该SQL在哪个节点上执行的。下面来演示如何通过trace_id来获取地址信息以及端口 lixingdeMacBook-Pro:c_languagelihanghang$sh......
  • Blazor SSR/WASM IDS/OIDC 单点登录授权实例4 - 部署服务端/独立WASM端授权
    目录:OpenID与OAuth2基础知识BlazorwasmGoogle登录BlazorwasmGitee码云登录BlazorSSR/WASMIDS/OIDC单点登录授权实例1-建立和配置IDS身份验证服务BlazorSSR/WASMIDS/OIDC单点登录授权实例2-登录信息组件wasmBlazorSSR/WASMIDS/OIDC单点登录授权实例3-服......
  • dotnet 扩展Service方法 secs4net
    secs_learn/Program.csusingDeviceWorkerService;usingMicrosoft.Extensions.DependencyInjection;usingMicrosoft.Extensions.Hosting;Host.CreateDefaultBuilder(args).ConfigureServices((hostContext,services)=>{services.AddSecs4Net&l......
  • Docker Net 老版本升级到新版本 Docker Build报错
    #net8使用,正常从net3.1直接升级到8FROMmcr.microsoft.com/dotnet/sdk:8.0ASbuildFROMmcr.microsoft.com/dotnet/runtime:latestFROMbuildWORKDIR/appCOPY/./appRUNdotnetrestoreRUNdotnetpublish-o/out-cReleaseEXPOSE5000ENTRYPOINT["dotnet"......
  • dotnet注册服务 secs4net secs
    secs_learn/Program.cs此文件是应用程序的入口点,用于配置和启动主机。使用Host.CreateDefaultBuilder(args)创建一个默认配置的主机构建器,自动加载环境变量、配置文件等设置。.ConfigureServices(...)方法中,通过services.AddHostedService<DeviceWorker>()注册DeviceWor......
  • Blazor SSR/WASM IDS/OIDC 单点登录授权实例5 - Winform 端授权
    目录:OpenID与OAuth2基础知识BlazorwasmGoogle登录BlazorwasmGitee码云登录BlazorSSR/WASMIDS/OIDC单点登录授权实例1-建立和配置IDS身份验证服务BlazorSSR/WASMIDS/OIDC单点登录授权实例2-登录信息组件wasmBlazorSSR/WASMIDS/OIDC单点登录授权实例3-服......
  • AI4Science 再填新成员:谷歌推出天气模型MetNet-3 已落地相关产品、谷歌天气预报模型Gr
    相关:https://zhidx.com/news/40169.htmlhttps://zhidx.com/news/40290.html论文地址:https://www.science.org/doi/10.1126/science.adi2336《Learningskillfulmedium-rangeglobalweatherforecasting》Editor’ssummaryThenumericalmodelsusedtopredictwea......
  • Microsoft 365 开发:开发者如何使用App ID连接Graph API的方法汇总
    51CTOBlog地址:https://blog.51cto.com/u_13969817在上文中我们介绍了如何在AzureAD中注册Application并授权相关GraphAPI,本文将给大家介绍开发者如何使用AppID和Certificate(Secret)通过PowerShell连接GraphAPI?采用AppID和Certificate通过PowerShell连接GraphAPI的命令如下所......
  • JeecgBoot集成TiDB,打造高效可靠的数据存储解决方案
    TiDB简介TiDB是PingCAP公司自主设计、研发的开源分布式关系型数据库,同时支持在线事务处理与在线分析处理(HybridTransactionalandAnalyticalProcessing,HTAP)的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时HTAP、云原生的分布式数据库、兼容MySQL5......
  • Discarded invalid param(s) "xxx" when navigating.路由params传值报错
    从VueRouter的2022-8-22更新后,无法使用name+params的方式进行传递,官方给出的说法是所以我采用了HistoryAPI的模式A组件import{useRouter}from"vue-router"letrouter=useRouter()constparams={title:'标题'}functiontoRouter(){router.push({name:......