聊一聊雪花算法与分布式ID生成

2023年 12月 12日 81.7k 0

生成全局唯一ID的雪花算法原理

雪花算法是一种用于生成全局唯一ID的算法,最初由Twitter开发,用于解决分布式系统中生成ID的问题。其核心思想是将一个64位的长整型ID划分成多个部分,每个部分用于表示不同的信息,确保了生成的ID在分布式环境下的唯一性。

ID结构

  • 符号位(1位):始终为0,用于保证ID为正数。
  • 时间戳(41位):表示生成ID的时间戳,精确到毫秒级。
  • 工作节点ID(10位):表示生成ID的机器的唯一标识。
  • 序列号(12位):表示在同一毫秒内生成的多个ID的序列号。
  • 生成步骤

  • 获取当前时间戳,精确到毫秒级。
  • 如果当前时间小于上次生成ID的时间,或者在同一毫秒内生成的ID数量超过最大值,等待下一毫秒再继续生成。
  • 如果当前时间等于上次生成ID的时间,序列号自增1。
  • 如果当前时间大于上次生成ID的时间,序列号重新从0开始。
  • 将各个部分的值组合,得到最终的64位ID。
  • Go实现雪花算法的高并发ID生成器

    package main

    import (
    "fmt"
    "sync"
    "time"
    )

    const (
    workerBits = 10
    sequenceBits = 12
    workerMax = -1 ^ (-1

    相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论