一种序列号生成方法、装置、电子设备及存储介质制造方法及图纸

技术编号:37242473 阅读:7 留言:0更新日期:2023-04-20 23:23
本公开关于一种序列号生成方法、装置、电子设备及存储介质,包括:获取当前随机数;将当前随机数与第一增量值相加,得到参考值;在参考值小于预设最大值的情况下,对参考值及预设最大值进行取模运算,得到更新后的当前随机数;在参考值大于或等于预设最大值的情况下,获取新的预设最大值,将新的预设最大值与第二增量值相减,对相减结果及新的预设最大值进行取模运算,得到更新后的当前随机数;对更新后的当前随机数进行变换处理,得到序列号。这样,在应用程序多实例部署、高并发场景下,这种方法产生重复的序列号的可能性较低,有利于维持序列号的唯一性。序列号的唯一性。序列号的唯一性。

【技术实现步骤摘要】
一种序列号生成方法、装置、电子设备及存储介质


[0001]本公开涉及数据处理
,尤其涉及一种序列号生成方法、装置、电子设备及存储介质。

技术介绍

[0002]随着电商业务的蓬勃发展,各种电商平台都提供了合作商引流能力,为了便于对订单进行跟踪,需要为每个订单生成其唯一对应的不与其他订单重复的订单号。
[0003]相关技术中,可以先生成一个随机数,然后基于固定格式对随机数进行处理,得到唯一的订单号,其中,随机数的生成可以使用Golang语言自带的math/rand包来实现,Golang语言是谷歌公司开发的一种编程语言,math/rand包是Golang语言中定义的一种随机数生成器。
[0004]但是,在应用程序多实例部署、高并发场景下,math/rand包可能会产生重复的随机数,进而导致产生的订单号重复,影响对订单进行跟踪。

技术实现思路

[0005]本公开提供一种序列号生成系统、方法、装置、电子设备及存储介质,以至少解决相关技术中在应用程序多实例部署、高并发场景下,math/rand包可能会产生重复的随机数,进而导致产生的订单号重复,影响对订单进行跟踪的问题。本公开的技术方案如下:
[0006]根据本公开实施例的第一方面,提供一种序列号生成方法,包括:
[0007]获取当前随机数;
[0008]将所述当前随机数与第一增量值相加,得到参考值;
[0009]在所述参考值小于预设最大值的情况下,对所述参考值及所述预设最大值进行取模运算,得到更新后的当前随机数;
[0010]在所述参考值大于或等于所述预设最大值的情况下,获取新的预设最大值,将所述新的预设最大值与第二增量值相减,对相减结果及所述新的预设最大值进行取模运算,得到更新后的当前随机数;
[0011]对所述更新后的当前随机数进行变换处理,得到序列号。
[0012]可选地,所述获取当前随机数,包括:
[0013]从远程字典数据库中获取当前随机数;
[0014]所述在所述参考值大于或等于所述预设最大值的情况下,获取新的预设最大值,包括:
[0015]在所述参考值大于或等于所述预设最大值的情况下,从所述远程字典数据库中调用预设命令函数的输出结果,作为新的预设最大值;所述预设命令函数用于将预设键值与所述第二增量值相加,对所述预设键值进行更新并作为输出结果。
[0016]可选地,所述从远程字典数据库中获取当前随机数,还包括:
[0017]对所述远程字典数据库进行互斥锁加锁处理;
[0018]在所述得到更新后的当前随机数之后,还包括:
[0019]对所述远程字典数据库进行互斥锁解锁处理。
[0020]可选地,所述在所述参考值大于或等于所述预设最大值的情况下,获取新的预设最大值,还包括:
[0021]建立监测线程,所述监测线程用于按照预设周期获取所述预设命令函数的输出结果;
[0022]在所述监测线程获取到所述预设命令函数的输出结果之后,对所述预设命令函数的输出结果进行互斥锁加锁处理;
[0023]在所述得到更新后的当前随机数之后,还包括:
[0024]对所述预设命令函数的输出结果进行互斥锁解锁处理,并结束所述监测线程。
[0025]可选地,所述方法还包括:
[0026]响应于序列号获取指令,获取降级标识;
[0027]在所述降级标识为第一预设值的情况下,执行所述获取当前随机数的步骤;
[0028]在所述降级标识为第二预设值的情况下,调用预设随机数生成器生成随机数,并对所述生成的随机数进行变换处理,得到序列号。
[0029]可选地,所述方法还包括:
[0030]在未获取到所述当前随机数,或未获取到所述新的预设最大值的情况下,将所述降级标识修改为所述第二预设值,并执行所述调用预设随机数生成器生成随机数,并对所述生成的随机数进行变换处理,得到序列号的步骤;
[0031]直至获取到所述当前随机数,或获取到所述新的预设最大值,将所述降级标识修改为所述第一预设值。
[0032]可选地,所述对所述更新后的当前随机数进行变换处理,得到序列号,包括:
[0033]获取用户编码及时间参数;
[0034]拼接所述用户编码、所述时间参数及所述更新后的当前随机数,得到序列号。
[0035]根据本公开实施例的第二方面,提供一种序列号生成装置,包括:
[0036]获取模块,用于获取当前随机数;
[0037]计算模块,用于将所述当前随机数与第一增量值相加,得到参考值;
[0038]第一更新模块,用于在所述参考值小于预设最大值的情况下,对所述参考值及所述预设最大值进行取模运算,得到更新后的当前随机数;
[0039]第二更新模块,用于在所述参考值大于或等于所述预设最大值的情况下,获取新的预设最大值,将所述新的预设最大值与第二增量值相减,对相减结果及所述新的预设最大值进行取模运算,得到更新后的当前随机数;
[0040]处理模块,用于对所述更新后的当前随机数进行变换处理,得到序列号。
[0041]可选地,所述获取模块,用于:
[0042]从远程字典数据库中获取当前随机数;
[0043]所述第二更新模块,用于:
[0044]在所述参考值大于或等于所述预设最大值的情况下,从所述远程字典数据库中调用预设命令函数的输出结果,作为新的预设最大值;所述预设命令函数用于将预设键值与所述第二增量值相加,对所述预设键值进行更新并作为输出结果。
[0045]可选地,所述装置还包括:
[0046]加解锁模块,用于对所述远程字典数据库进行互斥锁加锁处理;在得到更新后的当前随机数之后,对所述远程字典数据库进行互斥锁解锁处理。
[0047]可选地,所述第二更新模块,用于:
[0048]建立监测线程,所述监测线程用于按照预设周期获取所述预设命令函数的输出结果;
[0049]在所述监测线程获取到所述预设命令函数的输出结果之后,对所述预设命令函数的输出结果进行互斥锁加锁处理;
[0050]在得到更新后的当前随机数之后,对所述预设命令函数的输出结果进行互斥锁解锁处理,并结束所述监测线程。
[0051]可选地,所述装置还包括响应模块,用于:
[0052]响应于序列号获取指令,获取降级标识;
[0053]在所述降级标识为第一预设值的情况下,执行所述获取当前随机数的步骤;
[0054]在所述降级标识为第二预设值的情况下,调用预设随机数生成器生成随机数,并对所述生成的随机数进行变换处理,得到序列号。
[0055]可选地,所述响应模块,用于:
[0056]在未获取到所述当前随机数,或未获取到所述新的预设最大值的情况下,将所述降级标识修改为所述第二预设值,并执行所述调用预设随机数生成器生成随机数,并对所述生成的随机数进行变换处理,得到序列号的步骤;
[0本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种序列号生成方法,其特征在于,包括:获取当前随机数;将所述当前随机数与第一增量值相加,得到参考值;在所述参考值小于预设最大值的情况下,对所述参考值及所述预设最大值进行取模运算,得到更新后的当前随机数;在所述参考值大于或等于所述预设最大值的情况下,获取新的预设最大值,将所述新的预设最大值与第二增量值相减,对相减结果及所述新的预设最大值进行取模运算,得到更新后的当前随机数;对所述更新后的当前随机数进行变换处理,得到序列号。2.根据权利要求1所述的序列号生成方法,其特征在于,所述获取当前随机数,包括:从远程字典数据库中获取当前随机数;所述在所述参考值大于或等于所述预设最大值的情况下,获取新的预设最大值,包括:在所述参考值大于或等于所述预设最大值的情况下,从所述远程字典数据库中调用预设命令函数的输出结果,作为新的预设最大值;所述预设命令函数用于将预设键值与所述第二增量值相加,对所述预设键值进行更新并作为输出结果。3.根据权利要求2所述的序列号生成方法,其特征在于,所述从远程字典数据库中获取当前随机数,还包括:对所述远程字典数据库进行互斥锁加锁处理;在所述得到更新后的当前随机数之后,还包括:对所述远程字典数据库进行互斥锁解锁处理。4.根据权利要求2所述的序列号生成方法,其特征在于,所述在所述参考值大于或等于所述预设最大值的情况下,获取新的预设最大值,还包括:建立监测线程,所述监测线程用于按照预设周期获取所述预设命令函数的输出结果;在所述监测线程获取到所述预设命令函数的输出结果之后,对所述预设命令函数的输出结果进行互斥锁加锁处理;在所述得到更新后的当前随机数之后,还包括:对所述预设命令函数的输出结果进行互斥锁解锁处理,并结束所述监测线程。5.根据权利要求1所述的序列号生成方法,其特征在于,所述方法还包括:响应于序列号获取指令,获取降级标识;在所述降级标识为第一预设值的情况下,执行所述获取当前随机数的步骤;在所述降级标识为第二预设值的情况下,调用预设随机数生成器生成随机数,并对所述生成的随机数进行变换处理,得到序列号。6.根据权利要求5所述的序列号生成方法,其特征在于,所述方法还包括:在未获取到所述当前随机数,或未获取到所述新的预设最大值的情况下,将所述降级标识修改为所述第二预设值,并执行所述调用预设随机数生成器生成随机数,并对所述生成的随机数进行变换处理,得到序列号的步骤;直至获取到所述当前随机数,或获取到所述新的预设最大值,将所述降级标识修改为所述第一预设值。7.根据权利要求1所述的序列号生成方法,其特征在于,所述对所述更新后的当前随机
数进行变换处理,得到序列号,包括:获取用户编码及时间参数;拼接所述用户编码、所述时间参数及所述更新后的当前随机数,得到序列号。8.一种序列号生成装置,其特征在于,包括:获取模块,用于获取当前随机数;计算模块,用于将所述当前随机数与第一增量值相加,得到参考值;第一更新模块,用于在所述参考值小于预设最大值的情况下,对所述参考值及所述预设最...

【专利技术属性】
技术研发人员:马单王健徐锐徐东明徐蕾
申请(专利权)人:中国电信股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1