U8SDK技术博客:http://www.uustory.com,欢迎来坐坐。
百度传课已经停运,最新U8SDK视频教程已经转移至B站:U8SDK视频教程
U8Server支持分布式部署之后, 我们还有一个问题需要解决, 那就是分布式环境下,唯一订单号生成问题。 之前U8Server的订单号生成规则是 32位时间戳+32位序号,最终生成一个64位的long类型的订单号。
之前也考虑过,使用UUID等方式, 但是综合考虑下来, 我们决定还是让订单号使用数字类型(好排序),同时让订单号逐渐递增,并具有一定的自解释语义(这里主要指的是订单的产生时间)
支持分布式部署之后,我们对订单号的生成规则,做如下调整:
1、32位时间戳不变(精确到秒,最多支持生成64年的订单号)
2、中间加10位唯一U8Server实例ID,从0开始,也就是最多支持1024个部署节点。
3、后22位序列号(不同秒之后,序号重置,从0开始)
具体的占位说明如下图:
我们接下来看看订单号生成代码:
public class IDGenerator {
private static IDGenerator instance;
private