.NET 分布式自增Id组件(解决自动分配机器Id、时间回拨问题)
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、时间回拨问题)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET Core 微信小程序退款——(
- 下一篇: .NET Core 3.0 可卸载程序集