随笔 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 小时前
redis+lua+固定窗口实现分布式限流
redis·分布式·lua
啊喜拔牙3 小时前
如何搭建spark yarn模式的集群
大数据·分布式·spark
听雨·眠3 小时前
关于kafka
分布式·kafka·消息队列
TE-茶叶蛋3 小时前
NestJS + Kafka 秒杀系统完整实践总结
分布式·kafka
慧一居士4 小时前
Kafka批量消费部分处理成功时的手动提交方案
分布式·后端·kafka
搞不懂语言的程序员5 小时前
如何实现Kafka的Exactly-Once语义?
分布式·kafka·linq
ErizJ5 小时前
Golang|分布式索引架构
开发语言·分布式·后端·架构·golang
zcyf08096 小时前
kafka理论学习汇总
java·分布式·学习·kafka
xiaoxi6667 小时前
Dubbo实战:四步实现注册中心平滑迁移
分布式·nacos·dubbo·注册中心
刘翔在线犯法8 小时前
如何搭建spark yarn模式的集合集群
大数据·分布式·spark