随笔 20250402 分布式 ID 生成器 Snowflake 里面的坑

以下是你上传的「Snowflake 中的坑及配置实践」内容的文字版整理:


简介:分布式 ID 生成器 Snowflake 里面的坑你是否知道?

一、分布式 ID 生成器需求

  • 性能强劲

  • 全局唯一不能重复

  • 防止恶意用户根据 ID 的规律来获取数据


二、全局唯一不能重复的坑

坑一:
  • 分布式部署就需要分配不同的 workId,如果 workId 相同,可能会导致生成的 ID 相同
坑二:
  • 分布式情况下,需要保证各个系统时间一致

    如果服务器的时钟回拨,就会导致生成的 ID 重复

    什么时候会有系统回拨?

    • 小滴课堂-老王闲着,人工在生产环境做了系统时间调整,应该不会这么傻吧?

    • 业务需求,代码里确实做了系统时间同步


三、配置实操

示例配置:
复制代码
spring.shardingsphere.sharding.tables.traffic.key-generator.props.worker.id=1

四、实现方式

方式一:MybatisPlus 中配置
  • 用于订单 ID 的配置,示例代码如下(TrafficDO 类配置):

    @TableId(value = "id", type = IdType.ASSIGN_ID)

  • 默认实现类为 DefaultIdentifierGenerator,底层使用的是雪花算法


方式二:Sharding-JDBC 配置文件中配置
  • 在注释 DO 类中 ID 分配策略如下:

    id 生成策略

    key-generator:
    column: id
    props:
    worker:
    id: 0
    # id 生成策略
    type: SNOWFLAKE


是否需要我将这些内容也整理成页面样式(例如 Markdown 网页或 PDF 版)?也可以合并前两部分一起做。

相关推荐
风吹夏回14 天前
RabbitMQ 核心术语 + Python pika 方法完整讲解
分布式·python·rabbitmq
风吹夏回14 天前
RabbitMQ 三种模式入门:HelloWorld、WorkQueue、PubSub
分布式·rabbitmq·ruby
霸道流氓气质14 天前
分布式追踪与 RequestId 传播完全指南
分布式
cheems952714 天前
[RabbitMQ高级特性] 消息确认机制:从 Ready / Unacked 到 basicAck、basicReject、basicNack 的底层拆解
分布式·rabbitmq·ruby
枫华落尽14 天前
【Hadoop01-完全分布式运行模式】
分布式
隔壁阿布都14 天前
ShedLock 分布式定时任务锁框架介绍
spring boot·分布式
文艺倾年14 天前
【强化学习】数学推导专题,20W字总结(十五)
人工智能·分布式·大模型·强化学习·vibecoding
ACP广源盛1392462567314 天前
GSV9001S@ACP#1080P 级视频处理芯片,物理 AI 普及终端的高性价比选择
大数据·人工智能·分布式·嵌入式硬件·spark
guslegend14 天前
第1章:初始Kafka
分布式·kafka
ACP广源盛1392462567315 天前
GSV5600@ACP#多接口协议转换芯片,物理 AI 便携终端的互联核心
大数据·人工智能·分布式·嵌入式硬件·spark