【技术实现步骤摘要】
分布式ID生成方法、装置、服务器和可读存储介质
[0001]本专利技术涉及计算机
,尤其涉及一种分布式ID生成方法、装置、服务器和可读存储介质。
技术介绍
[0002]随着互联网的快速发展,项目体量越来越大,在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。数据日渐增长,对数据分库分表后需要有一个唯一ID来标识一条数据或消息。
[0003]目前,一般通过数据库的自增ID机制生成有序的ID,但是,ID生成性能依赖数据库读写性能,当数据库异常时将导致整个分布式系统不可用,即使在分布式系统环境中部署多个数据库,每个数据库设置不同的初始值,并且步长为数据库总数,比如部署N个数据库,每个数据库的初始值就为0,1,2,3,
……
,N
‑
1,步长为N。该ID生成策略仍存在很大的局限性,例如,系统定义好步长之后,若想增加数据库,需要重新调整所有数据库的步长,系统扩容困难,系统灵活性差;每次获取一个ID都必须读写一次数据库,数据库压力大。
技术实现思路
[0004]鉴 ...
【技术保护点】
【技术特征摘要】
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调用服务器的缓冲区,其中,所述两个号段中的一个号段...
【专利技术属性】
技术研发人员:李文杰,
申请(专利权)人:深圳墨世科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。