IdHelper是一个.NET(支持.NET45+或.NET Standard2+)生成分布式趋势自增Id组件,有两个版本:原始版为基于雪花Id(不了解请自行百度)方案,需要手动管理设置WorkerId;完美版在原始版的基础上使用Zookeeper来解决原始版中的WorkerId的分配问题和时间回拨问题。

原始版安装方式:Nuget安装IdHelper即可

完美版安装方式:Nuget安装IdHelper.Zookeeper即可

请按需选择,强烈推荐完美版

项目地址:https://github.com/Coldairarrow/IdHelper

分布式趋势自增Id的生成方案比较多,其中雪花Id是比较常用的,但是雪花Id及其依赖WorkerId的分配和机器时钟。WorkerId分配问题:传统雪花Id是需要分配数据中心Id和机器Id(即WorkerId),我为了使用方便(项目比较小),用不到数据中心Id,就把数据中心Id去掉并补充到机器Id,使机器Id可分配范围为1~1023,每个服务机器Id不能重复,若手工去为每个服务设置无疑十分麻烦还容易搞错(其实是)。时钟回拨问题:由于强依赖机器时钟,因此当时间回拨时将发生灾难性问题,虽然这种概率很小,但是实际存在。为了解决上述两个问题,本组件应运而生。

原始版

Nuget安装包:IdHelper

刚出炉的包,排名比较靠后,请认准作者:Coldairarrow

using Coldairarrow.Util;
using System;namespace Demo
{class Program{static void Main(string[] args){new IdHelperBootstrapper().SetWorkderId(1).Boot();Console.WriteLine($"WorkerId:{IdHelper.WorkerId},Id:{IdHelper.GetId()}");Console.ReadLine();}}
}

完美版

1:安装并配置JAVA环境(Zookeeper需要用JAVA) 教程:连接

2:安装并启动Zookeeper,教程:链接

3:Nuget安装包:IdHelper.Zookeeper

using Coldairarrow.Util;
using System;namespace Demo.Zookeeper
{class Program{static void Main(string[] args){new IdHelperBootstrapper().UseZookeeper("127.0.0.1:2181", 200, "Test").Boot();Console.WriteLine($"WorkerId:{IdHelper.WorkerId},Id:{IdHelper.GetId()}");Console.ReadLine();}}
}

测试

以上所有示例在源码中都有,若觉得不错请点赞加星星,希望能够帮助到大家。

有任何问题请及时反馈或加群交流

QQ群1:(已满)

QQ群2:579202910

.NET 分布式自增Id组件(解决自动分配机器Id、时间回拨问题)相关推荐

  1. 分布式id生成器:彻底解决雪花算法时间回拨问题

    Butterfly 简介 雪花算法是twitter提出的分布式id生成器方案,但是有三个问题,其中前两个问题在业内很常见: 时间回拨问题 机器id的分配和回收问题 机器id的上限问题 Butterfl ...

  2. snowflake做主键 自增_GitHub - MarvinYu/snowflake: Twitter的雪花算法(snowflake)分布式自增ID...

    snowflake 分布式id生成算法的有很多种,Twitter的雪花算法(SnowFlake)就是其中经典的一种. SnowFlake算法的优点: 生成ID时不依赖于数据库,完全在内存生成,高性能高 ...

  3. 雪花算法及运用PHP,雪花算法生成全局唯一ID,参考了下网上雪花算法生成规则,机器ID和序列号自动获取 理论上毫秒可生成 1024*4096个唯一ID

    任务要求毫秒生成10000个唯一ID 研究了下twitter/snowflake的算法思想: 参考了下网上雪花算法生成规则,把数据中心和机器编号整合一起,变成10位机器ID, 机器ID和序列号自动获取 ...

  4. Twitter的分布式自增ID算法Snowflake实现分析及其Java、Php和Python版

    在分布式系统中,需要生成全局UID的场合还是比较多的,twitter的snowflake解决了这种需求,实现也还是很简单的,除去配置信息,核心代码就是毫秒级时间41位+机器ID 10位+毫秒内序列12 ...

  5. Twitter的分布式自增ID算法snowflake (Java版)

    概述 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的. 有些时候我们希望能使用一种 ...

  6. 基于.NET Standard的分布式自增ID算法--美团点评LeafSegment

    概述 前一篇文章讲述了最流行的分布式ID生成算法snowflake,本篇文章根据美团点评分布式ID生成系统文章,介绍另一种相对更容易理解和编写的分布式ID生成方式. 实现原理 Leaf这个名字是来自德 ...

  7. 分布式自增ID雪花算法snowflake (Java版)

    概述 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的. 有些时候我们希望能使用一种 ...

  8. 分布式下使用雪花算法生成全局ID及解决时钟回拨问题

    简介 雪花算法是 64 位 的二进制,一共包含了四部分: 1位是符号位,也就是最高位,始终是0,没有任何意义,因为要是唯一计算机二进制补码中就是负数,0才是正数 41位是时间戳,具体到毫秒,41位的二 ...

  9. 分布式自增ID生成算法 - 雪花算法(SnowFlake)

    一.概述 1.SnowFlake算法生成id的结果是一个64bit大小的整数,它的结构如下图: ●  1位,不用.二进制中最高位为1的都是负数,但是我们生成的id一般都使用整数,所以这个最高位固定是0 ...

最新文章

  1. 提交表单自动刷新_Web自动化测试:元素的基础操作和浏览器基础操作
  2. jvm性能调优实战 - 30使用jmap和jhat摸清线上系统的对象分布
  3. Android通用流行框架汇总
  4. argmax函数_1.4 TensorFlow2.1常用函数
  5. IPv4地址和IPv6地址的比较,IPv6地址及其表示
  6. 8月13日见!三星Note 20国行版官宣:唯一悬念只剩价格
  7. 语音情感识别研究进展综述
  8. sql instr函数_如何实现SQL INSTR()函数?
  9. 1.13 单用户模式;1.14 救援模式;1.15 克隆虚拟机;1.16 Linux机器相互登录
  10. 分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(2月13日-2月19日)
  11. getent passwd 不能访问到 ldap 的用户
  12. 前端:【学成在线项目】HTML+CSS详细制作过程(代码只做参考)
  13. iOS UI自动化测试详解
  14. 阮兄弟的致远OAa8v5移动端增加功能和OEM实例
  15. 遥感图像计算机分类论文,遥感影像和监督分类论文,关于基于监督分类的土地利用遥感影像提取方法相关参考文献资料-免费论文范文...
  16. 裸奔真的会中木马病毒 挖矿病毒 wup.exe 程序文件占用电脑资源
  17. DHCP的工作原理及过程
  18. 什么是码元(以二进制位来参考)
  19. 51c语言字符,51单片机C语言教程(九) 语句应用
  20. 100个口腔正畸测试题及答案

热门文章

  1. LNK2005 连接错误解决办法
  2. powerpoint预览_如何放大和缩小PowerPoint演示文稿的一部分
  3. 火狐 增强查找工具栏_在“提示”框中:简单的IE至Firefox同步,轻松的Windows工具栏和识别USB电缆...
  4. 还原出厂设置 擦除frp_如何备份,擦除和还原Apple Watch
  5. 怎么做mysql查询系统_mysql数据库系统学习(一)---一条SQL查询语句是如何执行的?...
  6. 时任上海来伊份互联网事业群总裁王戈钧 :传统企业(线上+线下)移动互联网改造...
  7. 学会这些, 让你的服务器远离***影响
  8. T-SQL利用Row_Number函数实现分页
  9. 生成jar文件的方法
  10. 分享一个基于.NET6包含DDD,ES,CQRS等概念的开源项目