一种包含业务语义的分布式ID生成及业务语义获取方法技术

技术编号:37744941 阅读:21 留言:0更新日期:2023-06-05 23:31
本发明专利技术提供一种包含业务语义的分布式ID生成及业务语义获取方法,该方法包括对集群位置、业务类型进行编号,得到第一集群号和第一业务类型号;将第一集群号、机器号、第一业务类型号和业务流水号转化为二进制编号,得到第二集群号、第二机器号、第二业务类型号和第二业务流水号;获取第一时间,将第一时间与基准时间作差,得到第一时长进行二进制编号,得到时间号;将第二集群号、时间号、第二机器号、第二业务类型号和第二业务流水号根据预设的ID模板排布,得到第一分布式ID;编码得到第二分布式ID;ID解析的步骤包括;接收第二分布式ID,进行解码得到第一分布式ID,获取第二集群号、时间号、第二机器号、第二业务类型号和第二业务流水号。流水号。流水号。

【技术实现步骤摘要】
一种包含业务语义的分布式ID生成及业务语义获取方法


[0001]本专利技术涉及分布式系统
,尤其涉及一种包含业务语义的分布式ID生成及业务语义获取方法。

技术介绍

[0002]ID是分布式系统中数据节点的唯一标识,传统的做法是使用通用唯一识别码(UniversallyUniqueIdentifier,UUID)或者数据库自增ID,但是上述两种方式都存在着一些固有的弊端。
[0003]如数据库自增ID,虽然ID短小精炼、趋势递增,但是无法做到全局唯一,容易与其他ID混淆,在分布式环境,尤其是在分域集群部署环境下难以使用;
[0004]再如UUID,虽然UUID生成的ID效率高且全局唯一,但是生成的ID过长,且没有业务语义信息,因此,无法根据业务语义信息对分布式系统中数据节点难以建立索引,并查询。

技术实现思路

[0005]鉴于此,本专利技术实施例提供了一种包含业务语义的分布式ID生成及业务语义获取方法及系统,以消除或改善现有技术中存在的一个或更多个缺陷。
[0006]本专利技术的一个方面提供了一种包含业务语义的分布式ID生成及业务语义获取方法,分布式系统包括多个数据节点,业务语义包括数据节点所处的集群位置、数据节点的机器号、数据节点的业务类型和业务流水号,该方法包括ID生成步骤和ID解析步骤,所述ID生成步骤在分布式系统的第一数据节点进行,所述ID解析步骤在分布式系统的第二数据节点进行,
[0007]所述ID生成步骤包括:
[0008]对所述集群位置、业务类型进行十进制编号,得到第一集群号和第一业务类型号;
[0009]分别将所述第一集群号、机器号、第一业务类型号和业务流水号转化为二进制编号,得到第二集群号、第二机器号、第二业务类型号和第二业务流水号;
[0010]获取将所述第一集群号、机器号、第一业务类型号和业务流水号转化为二进制编号的时间为第一时间,将所述第一时间与预设的基准时间作差,得到第一时长,将所述第一时长进行二进制编号,得到时间号;将所述第二集群号、时间号、第二机器号、第二业务类型号和第二业务流水号根据预设的ID模板进行排布,得到第一分布式ID;
[0011]对第一分布式ID进行编码得到第二分布式ID;
[0012]所述ID解析步骤包括;
[0013]接收所述第二分布式ID,对所述第二分布式ID进行解码得到第一分布式ID,获取所述第一分布式ID中的第二集群号、时间号、第二机器号、第二业务类型号和第二业务流水号。
[0014]本专利技术的包含业务语义的分布式ID生成及业务语义获取方法,利用二级制位运算技术,将集群位置、业务类型、机器号、业务流水号和时间号的信息编码为二进制,再利用
BASE62编码技术对编码结果进行压缩,使得最终得到的第二分布式ID包含各种业务信息,通过ID解析步骤可以得知第二分布式ID对应数据节点的业务信息,便于查询。
[0015]在本专利技术的一些实施方式中,所述ID模板包括集群位、时间位、机器位、业务位和流水号位,将所述第二集群号、时间号、第二机器号、第二业务类型号和第二业务流水号根据预设的ID模板进行排布的步骤包括:
[0016]将第二集群号填入集群位,将时间号填入时间位,将第二机器号填入机器位,将第二业务类型号填入业务位,将第二业务流水号填入流水号位。
[0017]在本专利技术的一些实施方式中,所述时间位预设为第一位数,机器位预设为第二位数,业务位预设为第三位数,流水号位预设为第四位数,
[0018]将时间号填入时间位的步骤包括:判断所述第一位数是否大于所述时间号的位数,若是,则将第一位数与时间号的位数作差,得到第一空位数,在所述时间号左侧填充第一空位数个0,使时间位的位数与时间号的位数相等;
[0019]将第二机器号填入机器位的步骤包括:判断所述第二位数是否大于所述第二机器号的位数,若是,则将第二位数与第二机器号的位数作差,得到第二空位数,在所述第二机器号左侧填充第二空位数个0,使机器位的位数与第二机器号的位数相等;
[0020]将第二业务类型号填入业务位的步骤包括:判断所述第三位数是否大于所述第二业务类型号的位数,若是,则将第三位数与第二业务类型号的位数作差,得到第三空位数,在所述第二业务类型号左侧填充第三空位数个0,使业务位的位数与第二业务类型号的位数相等;
[0021]将第二业务流水号填入流水号位的步骤包括:判断所述第四位数是否大于所述第二业务流水号的位数,若是,则将第四位数与第二业务流水号的位数作差,得到第四空位数,在所述第二业务流水号左侧填充第四空位数个0,使流水号位的位数与第二业务流水号的位数相等。
[0022]在本专利技术的一些实施方式中,将所述第二集群号、时间号、第二机器号、第二业务类型号和第二业务流水号根据预设的ID模板进行排布的步骤还包括:
[0023]将所述时间号左移第二移动位数,使所述时间号填入时间位,第二移动位数=第二位数+第三位数+第四位数;
[0024]将所述第二机器号左移第三移动位数,使所述第二机器号填入机器位,第三移动位数=第三位数+第四位数;
[0025]将所述第二业务类型号左移第四移动位数,使所述第二业务类型号填入业务位,第四移动位数=第四位数;
[0026]将所述第二业务流水号填入流水号位;
[0027]将所述第二集群号左移第一移动位数,使所述第二集群号填入集群位,第一移动位数=第一位数+第二位数+第三位数+第四位数。
[0028]在本专利技术的一些实施方式中,得到第一分布式ID的步骤包括联合填入集群位的第二集群号、填入时间位的时间号、填入机器位的第二机器号、填入业务位的第二业务类型号和填入流水号位的第二业务流水号,构建第一分布式ID。
[0029]在本专利技术的一些实施方式中,获取所述第一分布式ID中的第二集群号、时间号、第二机器号、第二业务类型号和第二业务流水号的步骤包括:
[0030]将第一分布式ID右移第一位数+第二位数+第三位数+第四位数个位数,得到第二集群号;
[0031]删除第一分布式ID中的第二集群号,得到第一序列;
[0032]将所述第一序列右移第二位数+第三位数+第四位数个位数,得到时间号;
[0033]将所述第一序列左移第一位数,并在右侧补充第一位数个0,得到第二序列,将所述第二序列右移第一位数+第三位数+第四位数个位数,得到第二机器号;
[0034]将所述第一序列左移第一位数+第二位数个位数,并在右侧补充第一位数+第二位数个0,得到第三序列,将所述第三序列右移第一位数+第二位数+第四位数个位数,得到第二业务类型号;
[0035]将所述第一序列左移第一位数+第二位数+第三位数个位数,并在右侧补充第一位数+第二位数+第三位数个0,得到第四序列,将所述第四序列右移第一位数+第二位数+第三位数个位数,得到第二业务流水号。
[0036]在本专利技术的一些实施方式中,所述ID解析步骤还包括:
[0037]本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种包含业务语义的分布式ID生成及业务语义获取方法,其特征在于,分布式系统包括多个数据节点,业务语义包括数据节点所处的集群位置、数据节点的机器号、数据节点的业务类型和业务流水号,该方法包括ID生成步骤和ID解析步骤,所述ID生成步骤在分布式系统的第一数据节点进行,所述ID解析步骤在分布式系统的第二数据节点进行,所述ID生成步骤包括:对所述集群位置、业务类型进行十进制编号,得到第一集群号和第一业务类型号;分别将所述第一集群号、机器号、第一业务类型号和业务流水号转化为二进制编号,得到第二集群号、第二机器号、第二业务类型号和第二业务流水号;获取将所述第一集群号、机器号、第一业务类型号和业务流水号转化为二进制编号的时间为第一时间,将所述第一时间与预设的基准时间作差,得到第一时长,将所述第一时长进行二进制编号,得到时间号;将所述第二集群号、时间号、第二机器号、第二业务类型号和第二业务流水号根据预设的ID模板进行排布,得到第一分布式ID;对第一分布式ID进行编码得到第二分布式ID;所述ID解析步骤包括;接收所述第二分布式ID,对所述第二分布式ID进行解码得到第一分布式ID,获取所述第一分布式ID中的第二集群号、时间号、第二机器号、第二业务类型号和第二业务流水号。2.根据权利要求1所述的方法,其特征在于,所述ID模板包括集群位、时间位、机器位、业务位和流水号位,将所述第二集群号、时间号、第二机器号、第二业务类型号和第二业务流水号根据预设的ID模板进行排布的步骤包括:将第二集群号填入集群位,将时间号填入时间位,将第二机器号填入机器位,将第二业务类型号填入业务位,将第二业务流水号填入流水号位。3.根据权利要求2所述的方法,其特征在于,所述时间位预设为第一位数,机器位预设为第二位数,业务位预设为第三位数,流水号位预设为第四位数,将时间号填入时间位的步骤包括:判断所述第一位数是否大于所述时间号的位数,若是,则将第一位数与时间号的位数作差,得到第一空位数,在所述时间号左侧填充第一空位数个0,使时间位的位数与时间号的位数相等;将第二机器号填入机器位的步骤包括:判断所述第二位数是否大于所述第二机器号的位数,若是,则将第二位数与第二机器号的位数作差,得到第二空位数,在所述第二机器号左侧填充第二空位数个0,使机器位的位数与第二机器号的位数相等;将第二业务类型号填入业务位的步骤包括:判断所述第三位数是否大于所述第二业务类型号的位数,若是,则将第三位数与第二业务类型号的位数作差,得到第三空位数,在所述第二业务类型号左侧填充第三空位数个0,使业务位的位数与第二业务类型号的位数相等;将第二业务流水号填入流水号位的步骤包括:判断所述第四位数是否大于所述第二业务流水号的位数,若是,则将第四位数与第二业务流水号的位数作差,得到第四空位数,在所述第二业务流水号左侧填充第四空位数个0,使流水号位的位数与第二业务流水号的位数相等。4.根据权利要求3所述的方法,其特征在于,将所述第二集群号、时间号、第二机器号、第二业务类型号和第二业务流水号根据预设的ID模板进行排布的步骤还包括:
将所述时间号左移第二移动位...

【专利技术属性】
技术研发人员:吉祥屠志鹏蒋明鹏张晨宇周烁李荣宽陈洪冰
申请(专利权)人:电科云北京科技有限公司
类型:发明
国别省市:

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

1