Skip to content
Go back

如何设计订单编号?

最近项目需要设计订单模块,其中首当其冲的就是订单号的设计。本文整理部分订单号设计思路,抛砖引玉。

设计要求

设计思路

数据库自增ID

优点:

缺点:

UUID

优点:

缺点:

在不考虑可读性的情况下,UUID 也还是不错的。各个语言都有成熟的库,使用方便。

SnowFlake(雪花算法)

SnowFlake 使用 int64 数字做唯一ID,且 ID 引入时间戳,保持自增性且不重复。

雪花算法结构:

雪花算法结构

优点:

缺点:

其实也可以将业务数据放进去,比如从工作机器中抽个几位标识业务字段。

转为二进制也可解出业务数据。

自定义组合

假设订单号需包含:订单类型、商品大类ID、日期、用户ID。

简单组合

订单类型(1位) 商品大类ID(2位) 日期(10位)          用户ID(后4位)
1            22              1625133028          9527

订单号即:1226251330289527,长度16位。

这样也比较容易看出规律,需要将数据变形,比如将数据反过来显示,具体实现自行思考吧。

总结

订单号设计还是需要根据具体业务来设计。如果不考虑可读性,雪花算法就挺好。

参考:


Share this post on:

Previous Post
Gin 集成 Swagger
Next Post
Go decimal