本发明涉及数据处理,尤其涉及一种业务标识生成方法、装置、计算机设备及存储介质。
背景技术:
1、标识(id)生成是计算机系统的必备功能。对于单体系统来说,id生成不算什么难事,可以采用自增id方式实现。但是对于分布式系统或者其它多节点系统来说,id生成系统变得尤为重要,甚至它会制约着系统的成败。因此基于时钟序列和时间值等因子计算出来的uuid便被设计出来了,如图1所示。它的出现似乎解决了id不唯一的问题。当用户把请求打到分布式应用上的时候,每个分布式应用的节点负责单独处理id问题。该方式需要调用uuid的生成策略生成全局唯一id以达到业务id唯一的目的。
2、这种id生成方案虽然操作简单,但是,采用uuid方式,id本身将失去任何意义,表现在我们面前的只是一堆字符,如果想从id里面读出一些信息将变得不可能。
技术实现思路
1、本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种业务标识生成方法、装置、计算机设备及存储介质,以解决针对分布式系统或者其它多节点系统的标识生成方案生成的标识无法从中读取信息等技术问题。
2、在第一方面,本发明提供一种业务标识生成方法,所述方法包括:
3、将待生成的业务标识按照位方式划分为多个区间并定义各个所述区间的大小,其中所述多个区间至少包括业务区、自增因子区以及校验区;
4、根据定义的所述业务区的大小定义业务数据,以及调用预设服务根据定义的所述自增因子区的大小计算自增因子;
5、根据所述业务数据、所述自增因子以及定义的所述校验区的大小计算得到校验数据;
6、根据所述业务数据、所述自增因子以及所述校验数据生成业务标识。
7、本申请实施例,通过采用位方式对业务标识进行划分,使每部分具有特殊的含义,以达到一码多义的目的。
8、在上述的业务标识生成方法的一个技术方案中,所述根据定义的所述业务区的大小定义业务数据包括:
9、根据定义的所述业务区的大小按照预设规则定义当前业务对应的业务编码以生成所述业务数据。
10、本申请实施例,通过利用业务区中的业务数据实现针对不同的业务定义其对应的业务编码,从而实现利用业务区的业务数据以达到区分同业务的目的。
11、在上述的业务标识生成方法的一个技术方案中,所述预设服务包括redis服务,所述调用预设服务根据定义的所述自增因子区的大小计算自增因子包括:
12、调用redis服务生成自增数据,基于所述自增因子区的大小以及所述自增数据得到自增因子。
13、本申请实施例中,通过采用redis服务实现id自增,一方面,避免由于自加变量释放等因素导致id重复等问题,另一方面,由于全程只有redis这一个io链路的请求,且基于redis和io单线程的加持,性能具有稳定和高效的特点。
14、在上述的业务标识生成方法的一个技术方案中,生成所述自增数据的自增键包括当前时间和业务数据。
15、在上述的业务标识生成方法的一个技术方案中,调用redis服务生成自增数据包括:
16、调用redis服务的incr方法生成自增数据。
17、在上述的业务标识生成方法的一个技术方案中,所述根据所述业务数据、所述自增因子以及定义的所述校验区的大小计算得到校验数据,包括:
18、对所述业务数据和所述自增因子进行异或计算得到初始数据;
19、基于所述校验区的大小对所述初始数据进行截取,得到所述校验数据。
20、本申请实施例,通过在业务标识中划分出校验区,从而实现可以利用校验区中的校验数据进行业务标识的自校验。
21、在上述的业务标识生成方法的一个技术方案中,所述业务数据、所述自增因子以及所述校验数据包括二进制数据;
22、所述根据所述业务数据、所述自增因子以及所述校验数据生成业务标识,包括:
23、将所述业务数据、所述自增因子以及所述校验数据按照高低位转化为中间标识数据;
24、对所述中间标识数据进行二进制-十进制的转换,得到所述业务标识。
25、在第二方面,本发明提供一种业务标识生成装置,所述装置包括:
26、区间划分模块,用于将待生成的业务标识按照位方式划分为多个区间并定义各个所述区间的大小,其中所述多个区间至少包括业务区、自增因子区以及校验区;
27、第一计算模块,用于根据定义的所述业务区的大小定义业务数据,以及调用预设服务根据定义的所述自增因子区的大小计算自增因子;
28、第二计算模块,用于根据所述业务数据、所述自增因子以及定义的所述校验区的大小计算得到校验数据;
29、标识生成模块,用于根据所述业务数据、所述自增因子以及所述校验数据生成业务标识。
30、在第三方面,本发明提供一种计算机设备,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,当所述计算机程序被所述处理器执行时,实现如第一方面任一项所述的业务标识生成方法。
31、在第四方面,本发明提供一种可读存储介质,所述计算机可读存储介质内存储有计算机程序,其特征在于,所述计算机程序被执行时,实现如第一方面任一项所述的业务标识生成方法。
32、本发明上述一个或多个技术方案,至少具有如下一种或多种有益效果:
33、在实施本发明的技术方案中,将待生成的业务标识按照位方式划分为多个区间并定义各个所述区间的大小,其中所述多个区间至少包括业务区、自增因子区以及校验区;根据定义的所述业务区的大小定义业务数据,以及调用预设服务根据定义的所述自增因子区的大小计算自增因子;根据所述业务数据、所述自增因子以及定义的所述校验区的大小计算得到校验数据;根据所述业务数据、所述自增因子以及所述校验数据生成业务标识。本申请方案,通过采用位方式对业务标识进行划分,使每部分具有特殊的含义,利用业务区中的业务数据实现针对不同的业务定义其对应的业务编码,从而实现利用业务区的业务数据以达到区分同业务的目的,利用自增因子区实现业务标识的自增特性,利用校验区实现业务标识的自校验特性,以达到一码多义的目的。
34、本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
1.一种业务标识生成方法,其特征在于,所述方法包括:
2.根据权利要求1所述的业务标识生成方法,其特征在于,所述根据定义的所述业务区的大小定义业务数据包括:
3.根据权利要求1或2任一项所述的业务标识生成方法,其特征在于,所述预设服务包括redis服务,所述调用预设服务根据定义的所述自增因子区的大小计算自增因子包括:
4.根据权利要求3所述的业务标识生成方法,其特征在于,生成所述自增数据的自增键包括当前时间和业务数据。
5.根据权利要求3所述的业务标识生成方法,其特征在于,调用redis服务生成自增数据包括:
6.根据权利要求1或2任一项所述的业务标识生成方法,其特征在于,所述根据所述业务数据、所述自增因子以及定义的所述校验区的大小计算得到校验数据,包括:
7.根据权利要求1或2任一项所述的业务标识生成方法,其特征在于,所述业务数据、所述自增因子以及所述校验数据包括二进制数据;
8.一种业务标识生成装置,其特征在于,所述装置包括:
9.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,当所述计算机程序被所述处理器执行时,实现权利要求1~7中任一项所述的业务标识生成方法。
10.一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,其特征在于,所述计算机程序被执行时,实现权利要求1~7中任一项所述的业务标识生成方法。