流水号生成方法、电子设备及存储介质技术

技术编号:38327903 阅读:10 留言:0更新日期:2023-07-29 09:10
本公开实施例公开了一种流水号生成方法、电子设备及存储介质,其中,包括:响应于接收到业务方需要生成流水号的消息,从应用数据库中获取第二时间戳和第三时间戳;响应于第一时间戳、第二时间戳和第三时间戳满足第一设定条件,对上一个流水号的时钟回拨标识位执行自增一的操作,得到待生成流水号的时钟回拨标识位;基于第一时间戳和第二时间戳,确定时间戳初始值;响应于上一个流水号的序列号等于序列号阈值,将待生成流水号的序列号设置为序列号初始值,对时间戳初始值执行自增一的操作,得到待生成流水号的占位时间戳;基于待生成水流号的生成信息,生成待生成水流号。本公开实施例可通过消费未来时间确保流水号生成的连续性。性。性。

【技术实现步骤摘要】
流水号生成方法、电子设备及存储介质


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

技术介绍

[0002]在很多应用程序的使用场景中需要生成流水号,例如,有业务发生时,需要生成流水号来唯一表示该业务。
[0003]一般流水号的生成与时间戳有关,因流水号位数有限,每秒钟生成流水号数量有限,在当前时间范围内生成的流水号量达到最大量,当如果还要继续生成流水号,得等待下一个时间范围才能生成,无法保障流水号生成的连续性。

技术实现思路

[0004]本公开实施例所要解决的一个技术问题是:提供一种流水号生成方法、电子设备及存储介质。
[0005]根据本公开实施例的一个方面,提供一种流水号生成方法,包括:
[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]第一设置子模本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种流水号生成方法,其特征在于,所述方法包括:响应于接收到业务方需要生成流水号的消息,从应用数据库中获取第二时间戳和第三时间戳,所述消息中携带有所述业务方的标识信息;响应于第一时间戳、所述第二时间戳和所述第三时间戳满足第一设定条件,对上一个流水号的时钟回拨标识位执行自增一的操作,得到待生成流水号的时钟回拨标识位;基于所述第一时间戳和所述第二时间戳,确定所述待生成流水号的时间戳初始值;比较所述上一个流水号的序列号与序列号阈值;响应于所述上一个流水号的序列号等于序列号阈值,将所述待生成流水号的序列号设置为序列号初始值,并且对所述时间戳初始值执行自增一的操作,得到所述待生成流水号的占位时间戳;基于所述待生成水流号的生成信息,生成所述待生成水流号,所述待生成水流号的生成信息包括所述待生成水流号的时钟回拨标识位、所述待生成流水号的占位时间戳和待生成流水号的序列号;其中,所述第一时间戳为当前系统时间戳,所述第二时间戳为上一个流水号的占位时间戳,所述第三时间戳为生成上一个流水号时的系统时间戳,所述第一设定条件为所述第一时间戳小于所述第三时间戳,并且所述第二时间戳和所述第三时间戳相等。2.根据权利要求1所述的方法,其特征在于,所述比较所述上一个流水号的序列号与序列号阈值之后,所述方法还包括:响应于所述上一个流水号的序列号小于序列号阈值,对所述上一个流水号的序列号执行自增一的操作,得到所述待生成流水号的序列号,并且将所述时间戳初始值作为所述待生成流水号的占位时间戳。3.根据权利要求1所述的方法,其特征在于,所述基于所述第一时间戳和所述第二时间戳,确定所述待生成流水号的时间戳初始值,包括:响应于所述第一时间戳不小于所述第二时间戳,将所述待生成流水号的时间戳初始值设置为所述第一时间戳;响应于所述第一时间戳小于所述第二时间戳,将所述待生成流水号的时间戳初始值设置为所述第二时间戳。4.根据权利要求1所述的方法,其特征在于,所述生成所述待生成水流号之后,所述方法还包括:将所述待生成流水号的生成信息以及生成所述待生成流水号时的系统时间戳存储在应用数据库...

【专利技术属性】
技术研发人员:张鹏蒋元涛叶伟杨艳收
申请(专利权)人:北京理房通支付科技有限公司
类型:发明
国别省市:

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

1