snowflake 雪花算法

分布式ID生成器之雪花算法

分布式ID生成器

概念

分布式ID生成器,是一种在分布式系统中用于生成唯一标识符的工具。分布式系统中,多个节点可能同时需要生成唯一的标识,传统的单机 ID 生成方式(如自增 ID)往往无法满足需求。分布式 ID 生成器可以确保在不同的节点上生成的 ID 具有唯一性,避免冲突。

特点

  1. 全局唯一性:不能出现重复的ID标识
  2. 递增性:生成的ID对用户或者业务是递增的
  3. 高可用性:要确保任何时候都能生成正确的ID
  4. 高性能性:在高并发的环境下依然表现良好

常见生成算法

  1. UUID(Universally Unique Identifier)

    是一种通用唯一识别码,通过随机数生成,具有很高的唯一性。但 UUID 比较长,且无序,在数据库索引等场景下可能效率不高。

  2. 雪花算法(Snowflake)

    通常由多个部分组成,如时间戳、机器标识、序列号等。通过合理的位分配,可以在不同的机器上生成不重复的有序 ID。

  3. 数据库自增 ID

    利用数据库的自增特性来生成 ID,但需要考虑数据库的性能和单点故障问题。可以通过数据库集群或者分布式数据库中间件来解决。

典型应用场景

  1. 数据库id

    短时间内产生大量的数据(如大量订单涌入系统、微博短时间大量转发和评论等业务场景),在数据插入到数据库之前,需要对数据分配唯一的id,然后插入保存到数据库中

  2. 分布式系统

    任务调度的id

  3. 消息队列

    消息的唯一标识符id

雪花算法

snowflake

bwmarrin/snowflake: A simple to use Go (golang) package to generate or parse Twitter snowflake IDs (github.com)

image.pngsonyflake

sony/sonyflake:受 Twitter 的 Snowflake 启发的分布式唯一 ID 生成器 — sony/sonyflake: A distributed unique ID generator inspired by Twitter’s Snowflake (github.com)

image.png


snowflake 雪花算法
http://willxu0313.github.io/2025/01/22/gin-backend/雪花算法/
作者
Will
发布于
2025年1月22日
许可协议