分布式ID生成方法、装置、服务器和可读存储介质制造方法及图纸

技术编号:30553637 阅读:19 留言:0更新日期:2021-10-30 13:34
本申请公开了分布式ID生成方法、装置、服务器和可读存储介质。ID调用服务器通过从ID生成服务器的关系型数据库中获取两个号段并将两个号段存储在ID调用服务器的缓冲区,其中,两个号段中的一个号段处于分配状态,两个号段中的另一个号段处于就绪状态;在处于分配状态的号段为对应的业务线分配ID的同时,若大于第一消耗阈值,则从ID生成服务器的关系型数据库中获取新号段并将新号段存储在ID调用服务器的缓冲区,新号段处于空闲状态;根据处于分配状态的号段的ID消耗量调整处于就绪状态的号段和处于空闲状态的新号段的工作状态。本申请可以保证业务线可以源源不断的获取到相应的ID,提高分布式系统的容错能力。提高分布式系统的容错能力。提高分布式系统的容错能力。

【技术实现步骤摘要】
分布式ID生成方法、装置、服务器和可读存储介质


[0001]本专利技术涉及计算机
,尤其涉及一种分布式ID生成方法、装置、服务器和可读存储介质。

技术介绍

[0002]随着互联网的快速发展,项目体量越来越大,在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。数据日渐增长,对数据分库分表后需要有一个唯一ID来标识一条数据或消息。
[0003]目前,一般通过数据库的自增ID机制生成有序的ID,但是,ID生成性能依赖数据库读写性能,当数据库异常时将导致整个分布式系统不可用,即使在分布式系统环境中部署多个数据库,每个数据库设置不同的初始值,并且步长为数据库总数,比如部署N个数据库,每个数据库的初始值就为0,1,2,3,
……
,N

1,步长为N。该ID生成策略仍存在很大的局限性,例如,系统定义好步长之后,若想增加数据库,需要重新调整所有数据库的步长,系统扩容困难,系统灵活性差;每次获取一个ID都必须读写一次数据库,数据库压力大。

技术实现思路

[0004]鉴于上述问题,本专利技术提出一种分布式ID生成方法、装置、服务器和可读存储介质。
[0005]本申请提出一种分布式ID生成方法,所述方法包括:
[0006]从ID生成服务器的关系型数据库中获取两个号段并将所述两个号段存储在ID调用服务器的缓冲区,其中,所述两个号段中的一个号段处于分配状态,所述两个号段中的另一个号段处于就绪状态;
[0007]在所述处于分配状态的号段为对应的业务线分配ID的同时,实时确定处于分配状态的号段的ID消耗量是否大于预设的第一消耗阈值;
[0008]若大于所述第一消耗阈值,则从ID生成服务器的关系型数据库中获取新号段并将所述新号段存储在ID调用服务器的缓冲区,所述新号段处于空闲状态;
[0009]根据所述处于分配状态的号段的ID消耗量调整处于就绪状态的号段和处于空闲状态的新号段的工作状态。
[0010]本申请所述的分布式ID生成方法,所述根据所述处于分配状态的号段的ID消耗量调整处于就绪状态的号段和处于空闲状态的新号段的工作状态,包括:
[0011]确定所述处于分配状态的号段的ID消耗量是否大于预设的第二消耗阈值,所述第二消耗阈值大于所述第一消耗阈值;
[0012]若大于所述第二消耗阈值,则将所述处于就绪状态的号段转换为所述分配状态,将所述处于空闲状态的新号段转换为所述就绪状态;
[0013]重新执行所述实时确定处于分配状态的号段的ID消耗量是否大于预设的第一消耗阈值。
[0014]本申请所述的分布式ID生成方法,所述从ID生成服务器的关系型数据库中获取两个号段并将所述两个号段存储在ID调用服务器的缓冲区,包括:
[0015]根据所述ID调用服务器对应的业务线标识参数、预设最小ID、预设最大ID和预设号段长度从ID生成服务器的关系型数据库中获取两个号段并将所述两个号段存储在ID调用服务器的缓冲区,其中,两个号段中处于分配状态的号段的ID范围为[预设最小ID,预设最小ID+预设号段长度),两个号段中处于就绪状态的号段的ID范围为[预设最大ID

预设号段长度,预设最大ID)。
[0016]本申请所述的分布式ID生成方法,所述从ID生成服务器的关系型数据库中获取新号段并将所述新号段存储在ID调用服务器的缓冲区,包括:
[0017]根据所述ID调用服务器对应的业务线标识参数、处于就绪状态的号段的ID范围中的最大ID和预设号段长度从ID生成服务器的关系型数据库中获取新号段并将所述新号段存储在ID调用服务器的缓冲区,其中,所述新号段的ID范围为[处于就绪状态的号段的ID范围中的最大ID+1,处于就绪状态的号段的ID范围中的最大ID+1+预设号段长度)。
[0018]本申请还提出一种分布式ID生成装置,所述装置包括:
[0019]第一获取模块,用于从ID生成服务器的关系型数据库中获取两个号段并将所述两个号段存储在ID调用服务器的缓冲区,其中,所述两个号段中的一个号段处于分配状态,所述两个号段中的另一个号段处于就绪状态;
[0020]判断模块,用于在所述处于分配状态的号段为对应的业务线分配ID的同时,实时确定处于分配状态的号段的ID消耗量是否大于预设的第一消耗阈值;
[0021]第二获取模块,用于若大于所述第一消耗阈值,则从ID生成服务器的关系型数据库中获取新号段并将所述新号段存储在ID调用服务器的缓冲区,所述新号段处于空闲状态;
[0022]ID分配模块,用于根据所述处于分配状态的号段的ID消耗量调整处于就绪状态的号段和处于空闲状态的新号段的工作状态。
[0023]本申请所述的分布式ID生成装置,所述根据所述处于分配状态的号段的ID消耗量调整处于就绪状态的号段和处于空闲状态的新号段的工作状态,包括:
[0024]确定所述处于分配状态的号段的ID消耗量是否大于预设的第二消耗阈值,所述第二消耗阈值大于所述第一消耗阈值;
[0025]若大于所述第二消耗阈值,则将所述处于就绪状态的号段转换为所述分配状态,将所述处于空闲状态的新号段转换为所述就绪状态;
[0026]重新执行所述确定处于分配状态的号段的ID消耗量是否大于预设的第一消耗阈值。
[0027]本申请所述的分布式ID生成装置,所述从ID生成服务器的关系型数据库中获取两个号段并将所述两个号段存储在ID调用服务器的缓冲区,包括:
[0028]根据所述ID调用服务器对应的业务线标识参数、预设最小ID、预设最大ID和预设号段长度从ID生成服务器的关系型数据库中获取两个号段并将所述两个号段存储在ID调用服务器的缓冲区,其中,两个号段中处于分配状态的号段的ID范围为[预设最小ID,预设最小ID+预设号段长度),两个号段中处于就绪状态的号段的ID范围为[预设最大ID

预设号段长度,预设最大ID)。
[0029]本申请所述的分布式ID生成装置,所述从ID生成服务器的关系型数据库中获取新号段并将所述新号段存储在ID调用服务器的缓冲区,包括:
[0030]根据所述ID调用服务器对应的业务线标识参数、处于就绪状态的号段的ID范围中的最大ID和预设号段长度从ID生成服务器的关系型数据库中获取新号段并将所述新号段存储在ID调用服务器的缓冲区,其中,所述新号段的ID范围为[处于就绪状态的号段的ID范围中的最大ID+1,处于就绪状态的号段的ID范围中的最大ID+1+预设号段长度)。
[0031]本申请还提出一种服务器,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序在所述处理器上运行时执行本申请所述的分布式ID生成方法。
[0032]本申请还提出一种可读存储介质,其存储有计算机程序,所述计算机程序在处理器上运行时执行本申请所述的分布式ID生成方法。
[0033]本申请一方面,始终保持有且仅有一个号段有权限为对应的业务线分配ID,并本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式ID生成方法,其特征在于,所述方法包括:从ID生成服务器的关系型数据库中获取两个号段并将所述两个号段存储在ID调用服务器的缓冲区,其中,所述两个号段中的一个号段处于分配状态,所述两个号段中的另一个号段处于就绪状态;在所述处于分配状态的号段为对应的业务线分配ID的同时,实时确定处于分配状态的号段的ID消耗量是否大于预设的第一消耗阈值;若大于所述第一消耗阈值,则从ID生成服务器的关系型数据库中获取新号段并将所述新号段存储在ID调用服务器的缓冲区,所述新号段处于空闲状态;根据所述处于分配状态的号段的ID消耗量调整处于就绪状态的号段和处于空闲状态的新号段的工作状态。2.根据权利要求1所述的分布式ID生成方法,其特征在于,所述根据所述处于分配状态的号段的ID消耗量调整处于就绪状态的号段和处于空闲状态的新号段的工作状态,包括:确定所述处于分配状态的号段的ID消耗量是否大于预设的第二消耗阈值,所述第二消耗阈值大于所述第一消耗阈值;若大于所述第二消耗阈值,则将所述处于就绪状态的号段转换为所述分配状态,将所述处于空闲状态的新号段转换为所述就绪状态;重新执行所述实时确定处于分配状态的号段的ID消耗量是否大于预设的第一消耗阈值。3.根据权利要求1所述的分布式ID生成方法,其特征在于,所述从ID生成服务器的关系型数据库中获取两个号段并将所述两个号段存储在ID调用服务器的缓冲区,包括:根据所述ID调用服务器对应的业务线标识参数、预设最小ID、预设最大ID和预设号段长度从ID生成服务器的关系型数据库中获取两个号段并将所述两个号段存储在ID调用服务器的缓冲区,其中,两个号段中处于分配状态的号段的ID范围为[预设最小ID,预设最小ID+预设号段长度),两个号段中处于就绪状态的号段的ID范围为[预设最大ID

预设号段长度,预设最大ID)。4.根据权利要求1至3中任一项所述的分布式ID生成方法,其特征在于,所述从ID生成服务器的关系型数据库中获取新号段并将所述新号段存储在ID调用服务器的缓冲区,包括:根据所述ID调用服务器对应的业务线标识参数、处于就绪状态的号段的ID范围中的最大ID和预设号段长度从ID生成服务器的关系型数据库中获取新号段并将所述新号段存储在ID调用服务器的缓冲区,其中,所述新号段的ID范围为[处于就绪状态的号段的ID范围中的最大ID+1,处于就绪状态的号段的ID范围中的最大ID+1+预设号段长度)。5.一种分布式ID生成装置,其特征在于,所述装置包括:第一获取模块,用于从ID生成服务器的关系型数据库中获取两个号段并将所述两个号段存储在ID调用服务器的缓冲区,其中,所述两个号段中的一个号段...

【专利技术属性】
技术研发人员:李文杰
申请(专利权)人:深圳墨世科技有限公司
类型:发明
国别省市:

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

1