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

相关推荐
Database_Cool_35 分钟前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
肥胖小羊10 小时前
解决企业微信 AccessToken 刷新并发冲突的分布式锁机制实践
分布式·企业微信
风中凌乱1 天前
kafka新版本集群的安装与部署
分布式·kafka
SLD_Allen1 天前
大规模分布式AI训练基础设施
人工智能·分布式·模型训练
富士康质检员张全蛋1 天前
Kafka的操作-消费的详情
分布式·kafka
昕光xg2 天前
Istio笔记04-基于Jaeger的分布式链路追踪
笔记·分布式·istio
Benjamin℡2 天前
Zookeeper(一)搭建单体和集群服务以及Zookeeper客户端
分布式·zookeeper·云原生
wWYy.2 天前
分布式:数据复制
分布式
正儿八经的少年2 天前
分布式 ID
分布式
七夜zippoe2 天前
深入解析CANN仓库中的HCCL分布式通信库
pytorch·分布式·cann·hccl·通信库