雪花算法(Snowflake Algorithm)C# 实现版本

时间:2024-11-03 14:43:33

这里采用10位的工作ID,当时间回拔时,采用工作ID增加1来避免生成与旧的ID重复。

雪花算法的结构

雪花算法生成的ID是一个64位的Long型数字,结构如下:

  • 高41位:时间戳(timestamp)
  • 中间10位:工作节点ID(workerId),用来避免时间回拔。
  • 低12位:序列号(sequence)

时间戳(timestamp)

时间戳是雪花算法的核心部分,用于记录生成ID的时间。时间戳是一个41位的数字,精度为毫秒级别。它的计算方式是:

timestamp = (当前时间 - 起始时间)

Twepoch = 1704067200000L;//2024-01-01 00:00:00

整个代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WindowsFormsApp_snowflake
{
    public class Sn