分布式全局ID生成方法、存储介质、电子设备及方法技术

技术编号:21832482 阅读:40 留言:0更新日期:2019-08-10 17:56
本发明专利技术公开了一种分布式全局ID生成方法、存储介质、电子设备及方法,涉及互联网网络领域,该方法包括设定全局ID的总比特数;将总比特数划分为若干个区间,并设定每个区间的比特数;获取存储系统上线时间至互动事件生成时间间的秒数,并将该秒数数值转化为二进制后作为一个区间,获取互动事件生成时时间的毫秒,并将毫秒数值转化为二进制后作为一个区间,获取互动事件所在数据表的编号,并将编号转化为二进制后作为一个区间;生成一个随机数,并将该随机数转化为二进制后作为一个区间;将获得的区间拼接并转化为十进制后得到的数值作为互动事件的全局ID。本发明专利技术能够有效避免全局ID生成的重复。

Distributed Global ID Generation Method, Storage Media, Electronic Equipment and Method

【技术实现步骤摘要】
分布式全局ID生成方法、存储介质、电子设备及方法
本专利技术涉及互联网网络领域,具体涉及一种分布式全局ID生成方法、存储介质、电子设备及方法。
技术介绍
互联网应用中,对于用户在贴吧等社交论坛中发布的每一条动态、帖子等互动事件,均需要一个全局唯一的ID与之对应,从而其他用户对该互动事件的相关行为均可以与之关联,方便系统处理操作,并将该互动事件存储于数据表中。当前,当数据表的数据记录量较大时,对数据表内容的插入、删除、更新、查询等操作将会变得较为缓慢,此时便需要进行分库分表操作,即将一个数据表的内容拆分到一个数据库的多个数据表或多个数据库的多个数据表中。当所有互动事件存于一个数据表中时,一般使用自增主键作为互动事件的全局ID,而当使用多个数据表存储互动事件时,由于每个数据表的主键独自自增,此时各个数据表的主键便会存在重复的情况,此时便不宜再使用主键作为互动事件的全局ID,因此迫切需要一种针对多数据表的全局ID生成方式。
技术实现思路
针对现有技术中存在的缺陷,本专利技术的目的在于提供一种分布式全局ID生成方法,针对多数据表式存储的互动事件进行全局ID生成,有效避免全局ID生成的重复。为达到以上目的,本专利技术采取的技术方案是,包括:设定全局ID的总比特数;将总比特数划分为若干个区间,并设定每个区间的比特数;获取存储系统上线时间至互动事件生成时间间的秒数,并将该秒数数值转化为二进制后作为一个区间,获取互动事件生成时时间的毫秒,并将毫秒数值转化为二进制后作为一个区间,获取互动事件所在数据表的编号,并将编号转化为二进制后作为一个区间;生成一个随机数,并将该随机数转化为二进制后作为一个区间;将秒数转化的区间、毫秒转化的区间、编号转化的区间和随机数转化的区间拼接并转化为十进制后得到的数值作为互动事件的全局ID。在上述技术方案的基础上,所述存储系统上线时间至互动事件生成时间间的秒数,由互动事件生成时的unix时间减去存储系统上线时的unix时间得出。在上述技术方案的基础上,对于存储系统上线时间至互动事件生成时间间的秒数取整,并将该秒数取整后的数值转化为二进制后作为一个区间。在上述技术方案的基础上,所述全局ID还包括保留位,所述全局ID的总比特数为64位,其中,1~2位为保留位,3~33位为秒数数值转化为二进制后的数值,34~43位为毫秒数值转化为二进制后的数值,44~56位为编号转化为二进制后的数值,57~64位为随机数转化为二进制后的数值。在上述技术方案的基础上,存储用户的互动事件的数据表编号与该用户ID的后三位相同。在上述技术方案的基础上,所述生成的随机数位于0~255之间。本专利技术还提供一种存储介质,该存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的方法。本专利技术还提供一种电子设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述所述的方法。本专利技术还提供一种分布式全局ID生成系统,包括:设定模块,其用于设定全局ID的总比特数,以及将总比特数划分为若干个区间,并设定每个区间的比特数;获取模块,其用于获取存储系统上线时间至互动事件生成时间间的秒数,并将该秒数数值转化为二进制后作为一个区间,获取互动事件生成时时间的毫秒,并将毫秒数值转化为二进制后作为一个区间,获取互动事件所在数据表的编号,并将编号转化为二进制后作为一个区间,以及生成一个随机数,并将该随机数转化为二进制后作为一个区间;执行模块,其用于将秒数转化的区间、毫秒转化的区间、编号转化的区间和随机数转化的区间拼接并转化为十进制后得到的数值作为互动事件的全局ID。在上述技术方案的基础上,所述存储系统上线时间至互动事件生成时间间的秒数,由互动事件生成时的Unix时间减去存储系统上线时的Unix时间得出。与现有技术相比,本专利技术的优点在于:在生成全局ID的过程中,将生成互动事件时的时间作为全局ID的一部分,且采用编号处理的方式对互动事件所存储的数据表进行区分,且数据表的编号也作为全局ID的一部分,针对多数据表式存储的互动事件进行全局ID生成,有效避免全局ID生成的重复,且本专利技术的全局ID短,在程序和数据库中可用无符号长整型表示,总用空间少,同时使用时间作为全局ID的高位,保证趋势递增,采用递增趋势保证数据表的插入性能。附图说明图1为本专利技术实施例中一种分布式全局ID生成方法的流程图;图2为本专利技术实施例中一种电子设备的结构示意图。具体实施方式以下结合附图及实施例对本专利技术作进一步详细说明。参见图1所示,本专利技术实施例提供一种分布式全局ID生成方法,用于生成互动事件的全局ID,互动事件存储于存储系统的数据表中,存储系统中的数据表有多个,且每个数据表可以存储多个互动事件,用户发布的互动事件存于数据表中,互动事件为互联网用户发布的动态、帖子、评论、点赞等互动操作。本实施例的分布式全局ID生成方法包括:S1:设定全局ID的总比特数,即对互动事件的全局ID的位数进行设置,如64位。本专利技术实施例中,比特为二进制数字中的位,如二进制数0100就是4比特。S2:将总比特数划分为若干个区间,并设定每个区间的比特数,即对全局ID的总比特数进行划分,如第1~3位为一个,第4~10位为一个区间,等等。S3:获取存储系统上线时间至互动事件生成时间间的秒数,并将该秒数数值转化为二进制后作为一个区间,获取互动事件生成时时间的毫秒,并将毫秒数值转化为二进制后作为一个区间,获取互动事件所在数据表的编号,并将编号转化为二进制后作为一个区。存储系统上线时间至互动事件生成时间间的秒数,由互动事件生成时的unix时间减去存储系统上线时的unix时间得出,unix时间为从协调世界时1970年1月1日0时0分0秒起至现在的总秒数,在一种实时方式中,例如存储系统上线时间至互动事件生成时间间的秒数可能为13.3秒,则对于存储系统上线时间至互动事件生成时间间的秒数取13秒,然后将13转化为二进制后,转化为二进制后的数值作为一个区间内的数,即存储系统上线时间至互动事件生成时间间的秒数取整,并将该秒数取整后的数值转化为二进制后作为一个区间;对于取整后剩下的0.3秒,则为毫秒,即300毫秒,将300转化为二进制后作为一个区间的数。存在这样一种可能,例如互动事件所在数据表的编号转化为二进制后为11010,而编号所对应的区间位数为7位,则在11010前面加两个0,变为0011010后作为一个区间,其它区间数字类似问题的处理方式与此相同。S4:生成一个随机数,并将该随机数转化为二进制后作为一个区间。通过随机数的生成,减少各数据表间主键冲突的概率。S5:将秒数转化的区间、毫秒转化的区间、编号转化的区间和随机数转化的区间拼接并转化为十进制后得到的数值作为互动事件的全局ID。在一种实施方式中,是依次将秒数对应的区间、毫秒对应的区间、编号对应的区间和随机数对应的区间拼接,然后将拼接得到的数转化为十进制后得到的数值作为互动事件的全局ID。在一种实施方式中,全局ID的总比特数为64位,其中,1~2位为保留位,即留下2比特作为扩展用,防止后续秒数对应的区间不够用时扩展,保留2比特可以使整个存储系统的使用时间增加3倍。3~33位为秒数数值转化为二进制后的数值,31比特可存储2147483本文档来自技高网...

【技术保护点】
1.一种分布式全局ID生成方法,用于生成互动事件的全局ID,所述互动事件存储于存储系统的数据表中,其特征在于,包括:设定全局ID的总比特数;将总比特数划分为若干个区间,并设定每个区间的比特数;获取存储系统上线时间至互动事件生成时间间的秒数,并将该秒数数值转化为二进制后作为一个区间,获取互动事件生成时时间的毫秒,并将毫秒数值转化为二进制后作为一个区间,获取互动事件所在数据表的编号,并将编号转化为二进制后作为一个区间;生成一个随机数,并将该随机数转化为二进制后作为一个区间;将秒数转化的区间、毫秒转化的区间、编号转化的区间和随机数转化的区间拼接并转化为十进制后得到的数值作为互动事件的全局ID。

【技术特征摘要】
1.一种分布式全局ID生成方法,用于生成互动事件的全局ID,所述互动事件存储于存储系统的数据表中,其特征在于,包括:设定全局ID的总比特数;将总比特数划分为若干个区间,并设定每个区间的比特数;获取存储系统上线时间至互动事件生成时间间的秒数,并将该秒数数值转化为二进制后作为一个区间,获取互动事件生成时时间的毫秒,并将毫秒数值转化为二进制后作为一个区间,获取互动事件所在数据表的编号,并将编号转化为二进制后作为一个区间;生成一个随机数,并将该随机数转化为二进制后作为一个区间;将秒数转化的区间、毫秒转化的区间、编号转化的区间和随机数转化的区间拼接并转化为十进制后得到的数值作为互动事件的全局ID。2.如权利要求1所述的一种分布式全局ID生成方法,其特征在于:所述存储系统上线时间至互动事件生成时间间的秒数,由互动事件生成时的unix时间减去存储系统上线时的unix时间得出。3.如权利要求2所述的一种分布式全局ID生成方法,其特征在于:对存储系统上线时间至互动事件生成时间间的秒数取整,并将该秒数取整后的数值转化为二进制后作为一个区间。4.如权利要求2所述的一种分布式全局ID生成方法,其特征在于:所述全局ID还包括保留位,所述全局ID的总比特数为64位,其中,1~2位为保留位,3~33位为秒数数值转化为二进制后的数值,34~43位为毫秒数值转化为二进制后的数值,44~56位为编号转化为二进制后的数值,57~64位为随机数转化为二进制后的数值。5.如权...

【专利技术属性】
技术研发人员:张利平陈少杰张文明
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北,42

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

1