You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C++中生成非UUID类型的短全局唯一ID

C++ 短全局唯一ID实现方案

这类更短的全局唯一ID核心逻辑都是通过拼接时间戳、节点/进程标识、序列号/随机数的组合,再使用比十六进制更紧凑的编码方式(如Base62、Base58)压缩字符串长度,C++生态有很多对应的实现方案,也可以快速自研适配业务需求:

  • 自研实现
    可以根据自身业务的唯一性要求灵活调整各字段位宽,典型的64位ID结构可以参考:

    • 41位毫秒级时间戳(可覆盖约70年的时间范围)
    • 10位节点/机器标识(可支持1024个节点部署)
    • 12位同毫秒内序列号(单节点每毫秒可生成4096个ID)
      最终生成的64位整数转Base62编码后仅11位字符串,长度远小于36位的标准UUID。如果不需要分布式部署,还可以裁剪节点位宽,进一步压缩总长度。
  • 成熟开源实现
    不想自研可以直接用现成的稳定库:

    • snowflake-cpp:雪花算法的C++实现,原生输出64位整数,适合分布式有序ID场景,转字符串后最长19位,编码为Base62仅11位
    • ulid-cpp:实现ULID标准,固定26位字符长度,按时间有序,可读性和唯一性平衡较好,比UUID短10位
    • xid-cpp:完全对齐Go生态XID实现,12字节原始内容编码后为20位字符串,跨语言兼容性好
    • nanoid-cpp:对齐Go生态NanoID实现,支持自定义ID长度和字符集,默认长度21位,低并发场景下可缩短到6~8位使用

选择方案时如果需要ID按生成时间排序,优先选择带时间戳前缀的有序方案(雪花ID、ULID、XID);如果只需要唯一、无序,优先选NanoID,灵活度更高。

内容的提问来源于stack exchange,提问作者user3472

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 06:54:03