序列号生成方法、系统、装置、计算机设备及存储介质与流程

文档序号:37797444发布日期:2024-04-30 17:07阅读:5来源:国知局
序列号生成方法、系统、装置、计算机设备及存储介质与流程

本技术涉及计算机,特别是涉及一种序列号生成方法、系统、装置、计算机设备及存储介质。


背景技术:

1、随着互联网技术在各行各业的飞速发展,唯一序列号广泛用于各个业务系统中,用于标识业务对象,定位具体数据,如银行系统的交易流水号、业务单号、客户编号、订单号等。为避免唯一序列号的生成速度成为业务瓶颈,唯一序列号的生成必须要稳定、快速、高效。尤其在复杂的分布式业务场景中,一个优秀的唯一序列号生成方法尤为重要。

2、现有技术通常将序列号保存在数据库中,前端业务节点需要使用序列号时从数据库中读取。但由于数据库的读写速度较慢,序列号的生成速度也会较慢,在业务高发期生成序列号的速度将限制业务进行的速度。


技术实现思路

1、基于此,有必要针对上述技术问题,提供一种序列号生成方法、系统、装置、计算机设备及存储介质。

2、第一方面,本技术提供了一种序列号生成方法。所述方法包括:

3、确定序列号生成请求对应的序列号类型及目标数据库节点;

4、从缓存中读取所述目标数据库节点对应所述序列号类型的当前序列号段,从所述当前序列号段中读取当前序列号,根据所述当前序列号确定所述序列号生成请求对应的目标序列号;

5、在所述当前序列号段中存在未使用序列号的情况下,通过所述未使用序列号对所述当前序列号进行更新;或者,

6、在所述当前序列号段中不存在未使用序列号的情况下,向所述目标数据库节点发送当前序列号段更新请求,接收所述目标数据库节点响应于所述当前序列号段更新请求发送的新的序列号段,通过所述新的序列号段对所述当前序列号段进行更新,并通过更新后的当前序列号段对所述当前序列号进行更新。

7、在其中一个实施例中,所述缓存分为一级缓存、二级缓存、三级缓存,所述三级缓存用于存储缓存序列号段,所述二级缓存用于存储所述缓存序列号段所属的数据库节点的各序列号段,所述一级缓存用于存储各数据库节点对应的各序列号段,所述三级缓存的读取速度大于所述二级缓存的读取速度,且所述二级缓存的读取速度大于所述一级缓存的读取速度。

8、在其中一个实施例中,所述从缓存中读取所述目标数据库节点对应所述序列号类型的当前序列号段,包括:

9、从所述三级缓存中读取所述缓存序列号段,在所述缓存序列号段与所述序列号类型及所述目标数据库节点相匹配的情况下,将所述缓存序列号段作为当前序列号段;或者,

10、在所述缓存序列号段与所述目标数据库节点相匹配、且与所述序列号类型不匹配的情况下,从所述二级缓存中读取与所述序列号类型相匹配的第一目标序列号段,将所述第一目标序列号段作为当前序列号段,并将所述第一目标序列号段作为所述缓存序列号段储存于所述三级缓存中;或者,

11、在所述缓存序列号段与所述目标数据库节点不匹配、且与所述序列号类型不匹配的情况下,从所述一级缓存中读取与所述目标数据库节点及所述序列号类型相匹配的第二目标序列号段,将所述第二目标序列号段作为当前序列号段,并将所述目标数据库节点对应的各序列号段存储至所述二级缓存中,将所述第二目标序列号段作为所述缓存序列号段储存于所述三级缓存中。

12、在其中一个实施例中,所述在所述当前序列号段中存在未使用序列号的情况下,通过所述未使用序列号对所述当前序列号进行更新,包括:

13、在排列在所述当前序列号之后、且与所述当前序列号相邻的候选序列号不是所述当前序列号段的结束序列号的情况下,确定所述当前序列号段中存在未使用序列号,并通过所述候选序列号对所述当前序列号进行更新。

14、在其中一个实施例中,所述通过更新后的当前序列号段对所述当前序列号进行更新,包括:

15、将排列在更新后的当前序列号段的第一位的序列号,作为新的当前序列号。

16、第二方面,本技术还提供了一种序列号生成系统。所述系统包括至少一个服务器节点与至少一个数据库节点,其中,

17、所述服务器节点,用于确定序列号生成请求对应的序列号类型及目标数据库节点,从缓存中读取所述目标数据库节点对应所述序列号类型的当前序列号段,从所述当前序列号段中读取当前序列号,根据所述当前序列号确定所述序列号生成请求对应的目标序列号;

18、所述服务器节点,还用于在所述当前序列号段中存在未使用序列号的情况下,通过所述未使用序列号对所述当前序列号进行更新;或者在所述当前序列号段中不存在未使用序列号的情况下,向所述目标数据库节点发送当前序列号段更新请求;

19、所述目标数据库节点,用于响应于所述当前序列号段更新请求,将所述目标数据库节点中储存的储存序列号段发送至所述服务器节点,并对所述储存序列号段进行更新;

20、所述服务器节点,还用于通过所述储存序列号段对所述当前序列号段进行更新,并通过更新后的当前序列号段对所述当前序列号进行更新。

21、在其中一个实施例中,所述当前序列号段由第一起始序列号、当前序列号及第一结束序列号组成,所述储存序列号段由第二起始序列号及序列号段长度组成,

22、所述目标数据库节点,还用于响应于所述当前序列号段更新请求,将所述第二起始序列号及序列号段长度发送至所述服务器节点,并将所述第二起始序列号与所述序列号段长度之和作为新的第二起始序列号;

23、所述服务器节点,还用于将所述第一起始序列号更新为所述第二起始序列号,并将所述第一结束序列号更新为所述第二起始序列号与所述序列号段长度之和。

24、在其中一个实施例中,所述数据库节点对应至少一个备数据库节点,所述系统还包括消息中间件,

25、所述消息中间件,用于接收所述当前序列号段更新请求,并将所述当前序列号段更新请求发送至所述目标数据库节点;或者在所述目标数据库节点发生故障的情况下,将所述当前序列号段更新请求发送至所述目标数据库节点的所述备数据库节点。

26、第三方面,本技术还提供了一种序列号生成装置。所述装置包括:

27、确定模块,用于确定序列号生成请求对应的序列号类型及目标数据库节点;

28、读取模块,用于从缓存中读取所述目标数据库节点对应所述序列号类型的当前序列号段,从所述当前序列号段中读取当前序列号,根据所述当前序列号确定所述序列号生成请求对应的目标序列号;

29、更新模块,用于在所述当前序列号段中存在未使用序列号的情况下,通过所述未使用序列号对所述当前序列号进行更新;或者在所述当前序列号段中不存在未使用序列号的情况下,向所述目标数据库节点发送当前序列号段更新请求,接收所述目标数据库节点响应于所述当前序列号段更新请求发送的新的序列号段,通过所述新的序列号段对所述当前序列号段进行更新,并通过更新后的当前序列号段对所述当前序列号进行更新。

30、在其中一个实施例中,所述缓存分为一级缓存、二级缓存、三级缓存,所述三级缓存用于存储缓存序列号段,所述二级缓存用于存储所述缓存序列号段所属的数据库节点的各序列号段,所述一级缓存用于存储各数据库节点对应的各序列号段,所述三级缓存的读取速度大于所述二级缓存的读取速度,且所述二级缓存的读取速度大于所述一级缓存的读取速度。

31、在其中一个实施例中,所述读取模块,还用于:

32、从所述三级缓存中读取所述缓存序列号段,在所述缓存序列号段与所述序列号类型及所述目标数据库节点相匹配的情况下,将所述缓存序列号段作为当前序列号段;或者,

33、在所述缓存序列号段与所述目标数据库节点相匹配、且与所述序列号类型不匹配的情况下,从所述二级缓存中读取与所述序列号类型相匹配的第一目标序列号段,将所述第一目标序列号段作为当前序列号段,并将所述第一目标序列号段作为所述缓存序列号段储存于所述三级缓存中;或者,

34、在所述缓存序列号段与所述目标数据库节点不匹配、且与所述序列号类型不匹配的情况下,从所述一级缓存中读取与所述目标数据库节点及所述序列号类型相匹配的第二目标序列号段,将所述第二目标序列号段作为当前序列号段,并将所述目标数据库节点对应的各序列号段存储至所述二级缓存中,将所述第二目标序列号段作为所述缓存序列号段储存于所述三级缓存中。

35、在其中一个实施例中,所述更新模块,还用于:

36、在排列在所述当前序列号之后、且与所述当前序列号相邻的候选序列号不是所述当前序列号段的结束序列号的情况下,确定所述当前序列号段中存在未使用序列号,并通过所述候选序列号对所述当前序列号进行更新。

37、在其中一个实施例中,所述更新模块,还用于:

38、将排列在更新后的当前序列号段的第一位的序列号,作为新的当前序列号。

39、第四方面,本技术还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以上任一项方法。

40、第五方面,本技术还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以上任一项方法。

41、第六方面,本技术还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以上任一项方法。

42、上述序列号生成方法、系统、装置、计算机设备及存储介质,预先将数据库节点生成的序列号段存储于缓存中,并在接收到序列号生成请求的情况下,从缓存中读取当前序列号段并读取当前序列号,在根据当前序列号确定序列号生成请求对应的目标序列号后,重新根据当前序列号段确定需要存储在缓存中的当前序列号,仅需要在当前序列号段用尽的情况下向数据库发送请求对当前序列号段进行更新。因此可以减少需要访问数据库的次数,提高生成序列号的速度。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1