随笔 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 版)?也可以合并前两部分一起做。

相关推荐
方方洛1 天前
ray教程-28-附录G-CICD与Slurm与云上调度
人工智能·分布式·机器学习
空奈qwq1 天前
【Kafka 从入门到实战】从手写一个队列到生产级消息中间件:架构、分区、消费组、零拷贝全解析
分布式·架构·kafka
山甫aa2 天前
锁一篇搞定:乐观锁、悲观锁、CAS、数据库锁与分布式锁【从零开始的 Web 后端学习】
java·数据库·分布式·后端·学习·web
严肃小白兔3 天前
Cloudflare Durable Objects 支持自动重试:分布式调用如何避免重复执行?
分布式
方方洛3 天前
ray教程-27-附录F-RayClient与runtime_env与多语言
人工智能·分布式·机器学习
方方洛4 天前
ray教程-25-附录E-端到端实战案例
人工智能·分布式·机器学习
迅翼SwiftWing5 天前
编队系列(二)|固定翼如何依靠邻居信息保持队形?一致性控制、通信拓扑与分布式仿真实现,附仿真代码
分布式
ly76895 天前
幂等消费者与重试副作用:Kafka 端点接入时的去重边界
分布式·kafka·linq·apache camel·幂等消费者·重试副作用·去重边界
qq_452396235 天前
第三篇:《从 ZooKeeper 到 KRaft 的迁移实战:前置条件、三阶段流程与回滚策略》
分布式·zookeeper·云原生