这里采用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