-
我用雪花算法生成分布式订单 ID,跑了大半年一直好好的,某天凌晨服务器自动校了一次时、把时钟往回拨了几毫秒,雪花算法当场抛异常拒绝生成 ID、订单全下不了的深度复盘
我用雪花算法(Snowflake)生成分布式唯一订单 ID(靠毫秒时间戳+机器ID+序列号拼出全局唯一且大致递增的 ID),跑了大半年稳得很。可某天凌晨突发:一段时间内所有下单都失败,日志全是雪花算法抛的 Clock moved backwards 时钟回拨异常,几分钟后又自己恢复。排查发现那台服务器凌晨做了一次 NTP 自动校时、把系统时钟往回拨了几毫秒,而雪花算法检测到当前时间小于上次生成 I…- 0
- 0
-
分布式 ID 生成完全指南:从一次"两台机器同时生成了一样的订单号"看懂雪花算法
2021 年我做一个订单系统要给每一笔订单生成一个全局唯一的订单号。第一版我做得很省事订单表是 MySQL 我直接用了表的自增主键当订单号。本地一测完美每插一条订单 ID 自动加一从不重复。我心里很踏实生成唯一 ID 嘛数据库自增不就行了要么随手 UUID 一下。可等系统真正长大扛着真实的业务量一串问题冒了出来。第一种最先把我打懵订单量上来后我做了分库分表把订单拆到两个库结果两个库各自从 1 开始…- 0
- 0
-
雪花算法时钟回拨导致 ID 重复:一次凌晨主键冲突的复盘
订单系统用雪花算法生成订单号,某天凌晨数据库报主键冲突:两笔订单拿到同一个 ID。根因是 NTP 同步把一台机器时钟往回拨了 340ms,雪花算法最怕时钟回拨。几天治理:补时钟回拨防御(小回拨等待、大回拨拒绝)、用只增不减的逻辑时间兜底、workerId 改自动分配、NTP 改 slew 平滑校时。之后再没出现 ID 重复。- 5
- 0
分布式ID
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!



