全局唯一标识生成方法、系统、电子设备及存储介质与流程

    专利查询2026-09-25  13


    本申请涉及分布式数据处理,尤其涉及一种全局唯一标识生成方法、系统、电子设备及存储介质。


    背景技术:

    1、随着当前信息技术的飞速发展,分布式系统已成为支撑大数据处理、云计算服务及高并发互联网应用的基石。然而,随着系统规模的不断扩大与用户需求的日益增长,分布式系统的设计与实现正面临着诸多挑战。传统的id(identity,身份标识)生成策略,如基于数据库自增或简单随机生成,已难以满足大数据环境下的即时性、高并发及分布式部署需求,因此,分布式全局唯一id的高效、可靠生成是确保数据一致性与系统可扩展性的关键环节。

    2、在相关技术中,分布式全局唯一id的生成技术主要有以下几种:1、java的uuid(universally unique identifier,通用唯一识别码)生成,通过java api(javaapplication programming interface,java应用程序编程接口)生成,但uuid占用16个字符,空间占用较多且索引效率低下;2、数据库主键自增,利用关系型数据库管理系统的特性生成id,但受限于数据库性能,并发性能不高,同时易造成数据量泄露;3、雪花算法,通过多节点部署生成id,但也存在时钟回拨问题和id冲突;4、美团leaf,采用开源框架性能,以预分发的方式生成id,但使用及部署成本较高,框架较复杂。综上,现有的分布式全局唯一id生成方法,在功能性、空间结构、安全性、运维成本上都有不足。

    3、因此,需要提出一种更为高效、可靠且易于部署和维护的分布式全局唯一id生成解决方案。


    技术实现思路

    1、鉴于以上所述现有技术的缺点,本申请公开了一种全局唯一标识生成方法、系统、设备及存储介质,用于解决上述技术问题中至少之一。

    2、第一方面,本申请提供了一种全局唯一标识生成方法,所述方法包括:若监测到发号器重启,则读取持久化文件中的自增命令并进行重写,所述持久化文件中记录有所述发号器执行的所有自增命令;根据重写结果生成工作节点标识,并获取当前的第一时间戳与第一序列号,其中,所述第一序列号根据所述第一时间戳生成,所述重写结果包括上一个工作节点标识;将所述第一时间戳、所述第一序列号与所述工作节点标识进行组合,生成全局唯一标识。

    3、于本申请一实施例中,在所述读取持久化文件中的自增命令并进行重写之前,还包括:记录所述发号器中的所有写操作命令,生成所述持久化文件,其中,所述写操作命令包括所述自增命令;构建自增命令重写函数,并设置所述自增命令重写函数的执行条件,其中,所述执行件包括所述发号器的重启。

    4、于本申请一实施例中,所述读取持久化文件中的自增命令并进行重写,包括:调用所述自增命令重写函数,遍历所述持久化文件中的每一所述写操作命令,检测各所述写操作命令中是否存在预设字段,其中,所述预设字段包括键字段与自增命令标识字段;若任意写操作命令中存在所述预设字段,且所述键字段为字符串型字段,则将所述任意写操作命令添加至预先构建的自增命令集合,对所述自增命令集合中的全部自增命令进行重写。

    5、于本申请一实施例中,所述根据重写结果生成工作节点标识,包括:根据所述上一个工作节点标识确定所述发号器中键的第一键值,其中,所述上一个工作节点标识的数据类型为所述字符串型字段;在所述第一键值的基础上增加预设的自增步长,获得第二键值;将所述第二键值写回至所述键中对所述第一键值进行刷新,并将所述第二键值作为所述工作节点标识。

    6、于本申请一实施例中,所述将所述第一时间戳、所述第一序列号与所述工作节点标识进行组合,生成全局唯一标识,包括:获取全局唯一标识结构,所述全局唯一标识结构包括正整数标识字段、时间戳字段、工作节点标识字段与用于区分同一时间戳内生成的多个不同的全局唯一标识的序列号字段,其中,所述工作节点标识字段为字符串型字段;根据所述全局唯一标识结构,对所述第一时间戳、所述第一序列号与所述工作节点标识进行组合,生成所述全局唯一标识。

    7、于本申请一实施例中,在所述第一时间戳获取之后,还包括:获取所述发号器中存储的生成上一个全局唯一标识时的第二时间戳;将所述第二时间戳与所述第一时间戳进行比较;若所述第二时间戳大于所述第一时间戳,则进行全局唯一标识生成失败的报警;若所述第二时间戳小于或等于所述第一时间戳,则进入所述第一序列号的生成操作,并将所述第一时间戳存储至所述发号器中,对所述第二时间戳进行刷新。

    8、于本申请一实施例中,所述第一序列号的生成方式,包括:若所述第二时间戳小于所述第一时间戳,则所述第一序列号从0开始生成;若所述第二时间戳等于所述第一时间戳,则获取所述发号器中存储的生成所述上一个全局唯一标识时的第二序列号,并将所述第二序列号与预设的最大序列号进行比较;若所述第二序列号小于所述最大序列号,则在所述第二序列号的基础上加一生成所述第一序列号;若所述第二序列号等于所述最大序列号,则等待至下一时间戳时所述第一序列号从0开始生成。

    9、第二方面,本申请提供了一种全局唯一标识生成系统,所述系统包括:重写模块,用于若监测到发号器重启,则读取持久化文件中的自增命令并进行重写,所述持久化文件中记录有所述发号器执行的所有自增命令;第一生成模块,用于根据重写结果生成工作节点标识,并获取当前的第一时间戳与第一序列号,其中,所述第一序列号根据所述第一时间戳生成,所述重写结果包括上一个工作节点标识;第二生成模块,用于将所述第一时间戳、所述第一序列号与所述工作节点标识进行组合,生成全局唯一标识。

    10、第三方面,本申请提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得电子设备实现第一方面描述的全局唯一标识生成方法。

    11、第四方面,本申请提供了一种计算机可读存储介质,其上存储有计算机程序,当计算机程序被计算机的处理器执行时,使计算机执行第一方面描述的全局唯一标识生成方法。

    12、如上所述,本申请实施例提供的一种全局唯一标识生成方法、系统、电子设备及存储介质,具有以下有益效果:

    13、通过对自增命令进行持久化,在监测到发号器重启时,只读取持久化文件中的自增命令并进行重写,然后根据重写结果生成工作节点标识,并获取当前的第一时间戳与第一序列号,该第一序列号根据第一时间戳生成,该重写结果包括上一个工作节点标识,最后将第一时间戳、第一序列号与工作节点标识进行组合,生成全局唯一标识,在发号器挂掉重启后,只对自增命令进行重写,不仅避免了全局唯一标识重复的问题,还降低了重启时间的消耗,提升了发号器的性能,并且,结合了发号器的分布式特性和雪花算法的全局唯一性,保证了生成的全局唯一标识的可靠性。

    14、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。



    技术特征:

    1.一种全局唯一标识生成方法,其特征在于,所述方法包括:

    2.根据权利要求1所述的全局唯一标识生成方法,其特征在于,在所述读取持久化文件中的自增命令并进行重写之前,还包括:

    3.根据权利要求2所述的全局唯一标识生成方法,其特征在于,所述读取持久化文件中的自增命令并进行重写,包括:

    4.根据权利要求3所述的全局唯一标识生成方法,其特征在于,所述根据重写结果生成工作节点标识,包括:

    5.根据权利要求1所述的全局唯一标识生成方法,其特征在于,所述将所述第一时间戳、所述第一序列号与所述工作节点标识进行组合,生成全局唯一标识,包括:

    6.根据权利要求1至5任一项所述的全局唯一标识生成方法,其特征在于,在所述第一时间戳获取之后,还包括:

    7.根据权利要求6所述的全局唯一标识生成方法,其特征在于,所述第一序列号的生成方式,包括:

    8.一种全局唯一标识生成系统,其特征在于,所述系统包括:

    9.一种电子设备,其特征在于,包括:

    10.一种计算机可读存储介质,其特征在于,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行权利要求1至7任一项所述的全局唯一标识生成方法。


    技术总结
    本申请提供一种全局唯一标识生成方法、系统、电子设备及存储介质,其中,该方法包括:若监测到发号器重启,则读取持久化文件中的自增命令并进行重写,持久化文件中记录有发号器执行的所有自增命令;根据重写结果生成工作节点标识,并获取当前的第一时间戳与第一序列号,其中,第一序列号根据第一时间戳生成,重写结果包括上一个工作节点标识;将第一时间戳、第一序列号与工作节点标识进行组合,生成全局唯一标识。在发号器挂掉重启后,只对自增命令进行重写,不仅避免了全局唯一标识重复的问题,还降低了重启时间的消耗,提升了发号器的性能,并且,结合了发号器的分布式特性和雪花算法的全局唯一性,保证了生成的全局唯一标识的可靠性。

    技术研发人员:石峻臣,孙文彬,王汉雄
    受保护的技术使用者:重庆赛力斯凤凰智创科技有限公司
    技术研发日:
    技术公布日:2024/11/26
    转载请注明原文地址:https://tc.8miu.com/read-39313.html

    最新回复(0)