原文地址:https://www.zhihu.com/question/19805896
总结:
设计编码的规则如下:
下单渠道1位+支付渠道1位+业务类型1位+时间信息4位+下单时间的Unix时间戳后8位(加上随机码随机后的数字)+用户user id后4位。
然后你会说,这样算下来就订单号就19位了啊,一点都不精简啊,不好记不好念不好输的。但我说的上面的这些业务标记,你不一定要全部加上啊。
这里“”Unix时间戳后8位(加上随机码随机后的数字)”
个人觉得也可以这样做:Unix时间戳后6位+2位自增流水ID(防止在同一毫秒级产生重复单号)。
如果用随机码,就怕在毫秒级产生ID冲突(因为有随机码会一样的情况),故得加上判重的处理。
性能问题
1:每天把明天要用的订单号先随机好,放进redis之类的缓存里里随用随取,这样就不会有性能和并发的问题了。