System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机,特别是涉及一种序列号生成方法、系统、装置、计算机设备及存储介质。
技术介绍
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、在其中一个实施例中,所述缓存分为一级缓存、二级缓存、三级缓存,所述三级缓存用于存储缓存序列号段,所述二级缓存用于存储所述缓存序列号段所属的数据库节点的各序列号段,所述一级本文档来自技高网...
【技术保护点】
1.一种序列号生成方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述缓存分为一级缓存、二级缓存、三级缓存,所述三级缓存用于存储缓存序列号段,所述二级缓存用于存储所述缓存序列号段所属的数据库节点的各序列号段,所述一级缓存用于存储各数据库节点对应的各序列号段,所述三级缓存的读取速度大于所述二级缓存的读取速度,且所述二级缓存的读取速度大于所述一级缓存的读取速度。
3.根据权利要求2所述的方法,其特征在于,所述从缓存中读取所述目标数据库节点对应所述序列号类型的当前序列号段,包括:
4.根据权利要求1所述的方法,其特征在于,所述在所述当前序列号段中存在未使用序列号的情况下,通过所述未使用序列号对所述当前序列号进行更新,包括:
5.根据权利要求4所述的方法,其特征在于,所述通过更新后的当前序列号段对所述当前序列号进行更新,包括:
6.一种序列号生成系统,其特征在于,所述系统包括至少一个服务器节点与至少一个数据库节点,其中,
7.根据权利要求6所述的系统,其特征在于,所述当前序列号段由第一起始
8.根据权利要求6所述的系统,其特征在于,所述数据库节点对应至少一个备数据库节点,所述系统还包括消息中间件,
9.一种序列号生成装置,其特征在于,所述装置包括:
10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述的方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。
12.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。
...【技术特征摘要】
1.一种序列号生成方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述缓存分为一级缓存、二级缓存、三级缓存,所述三级缓存用于存储缓存序列号段,所述二级缓存用于存储所述缓存序列号段所属的数据库节点的各序列号段,所述一级缓存用于存储各数据库节点对应的各序列号段,所述三级缓存的读取速度大于所述二级缓存的读取速度,且所述二级缓存的读取速度大于所述一级缓存的读取速度。
3.根据权利要求2所述的方法,其特征在于,所述从缓存中读取所述目标数据库节点对应所述序列号类型的当前序列号段,包括:
4.根据权利要求1所述的方法,其特征在于,所述在所述当前序列号段中存在未使用序列号的情况下,通过所述未使用序列号对所述当前序列号进行更新,包括:
5.根据权利要求4所述的方法,其特征在于,所述通过更新后的当前序列号段对所述当前序列号进行更新,包括:
6.一种序列号生成系统,其特征在于,所述系统包括...
【专利技术属性】
技术研发人员:郑迪,李伟仁,马思雨,冯宇东,
申请(专利权)人:中国工商银行股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。