U8Server——分布式环境下唯一订单号生成规则

本文介绍了U8Server在分布式部署后如何调整订单号生成规则以确保全局唯一。新的订单号由时间戳(精确到秒)加U8Server实例ID和序号组成,其中时间戳部分占26位,实例ID占10位,序号占22位。通过这种方式,可以确保在分布式环境中生成64位的递增、有序且唯一的订单号。
摘要由CSDN通过智能技术生成

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值