雪花 ID 分布式唯一主键生成

发布时间:2026/10/3 2:03:08
雪花 ID 分布式唯一主键生成 摘要代拍系统订单、商品、议价、包裹、消息等海量数据表单机自增 ID 存在分库分表冲突、泄露业务量级问题。本文采用雪花算法生成全局唯一 64 位数字 ID拆分机器、业务、时间分段适配分布式多节点部署附带工具类完整代码bidfans 所有业务主键均基于该算法生成。一、自增 ID 分布式缺陷单库自增 ID 在多服务、分库场景下会出现主键重复数字连续自增易被外部统计平台订单、商品总量存在业务数据泄露风险ID 无业务分段标识无法从主键快速区分数据所属业务表检索排查效率低。 雪花 ID 内置时间戳、机器编号、业务标识三段信息全局不重复无连续规律同时可通过 ID 解析生成时间、业务类型便于日志排查。二、雪花 ID 分段规则设计64 位二进制分段1 位符号位固定 041 位毫秒时间戳5 位业务标识位区分订单 / 商品 / 包裹8 位机器节点编号9 位自增序列号。 41 位时间戳可使用数十年5 位支持 32 类业务区分8 位支持 256 台服务节点9 位每毫秒生成 512 个 ID完全满足代拍系统并发创建数据需求。三、雪花生成工具代码public class SnowIdGenerator { // 时间戳起始基准 private static final long START_TIME 1704067200000L; private static final int BIZ_BIT 5; private static final int WORK_BIT 8; private static final int SEQ_BIT 9; private final long workId; private final long bizType; private long lastTime System.currentTimeMillis(); private long sequence 0; public SnowIdGenerator(long workId, long bizType) { this.workId workId; this.bizType bizType; } public synchronized long nextId() { long now System.currentTimeMillis(); if (now lastTime) throw new RuntimeException(时钟回拨禁止生成ID); if (now lastTime) { sequence (sequence 1) ((1 SEQ_BIT) - 1); if (sequence 0) now waitNextMs(lastTime); } else sequence 0; lastTime now; long timePart (now - START_TIME) (BIZ_BIT WORK_BIT SEQ_BIT); long bizPart bizType (WORK_BIT SEQ_BIT); long workPart workId SEQ_BIT; return timePart | bizPart | workPart | sequence; } private long waitNextMs(long last) { long now; do { now System.currentTimeMillis(); } while (now last); return now; } }启动服务时读取配置文件分配机器编号不同业务创建独立生成器实例保证 ID 携带业务标识。四、时钟回拨容错处理机器时钟回调会造成 ID 重复工具类内置时间校验检测当前时间小于上次生成时间直接抛出异常阻断 ID 生成同时记录告警日志运维及时校准服务器时间。bidfans 多节点集群部署三年未出现主键重复问题。结语定制化雪花 ID 生成器解决分布式主键冲突、数据泄露问题内置业务分段便于运维排查轻量无第三方依赖适配所有分布式跨境代拍系统主键生成需求。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询