CN115002078B - 一种id生成方法及装置 - Google Patents
一种id生成方法及装置 Download PDFInfo
- Publication number
- CN115002078B CN115002078B CN202210509690.8A CN202210509690A CN115002078B CN 115002078 B CN115002078 B CN 115002078B CN 202210509690 A CN202210509690 A CN 202210509690A CN 115002078 B CN115002078 B CN 115002078B
- Authority
- CN
- China
- Prior art keywords
- integer
- intervals
- interval
- target
- ids
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 87
- 230000008569 process Effects 0.000 description 10
- 238000001514 detection method Methods 0.000 description 8
- 230000007547 defect Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 238000001816 cooling Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000009193 crawling Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种ID生成方法及装置,确定M个待申请ID,M>1;在预先配置的N个整数区间中,为M个待申请ID随机选取M个整数区间,其中,待申请ID与选取的整数区间一一对应,N>M;整数区间被配置有配置信息,配置信息中包括目标整数,目标整数用于表征目标整数对应的整数区间分配到的整数,N个整数区间互不重合;将随机选取的M个整数区间对应的待申请ID的ID值赋值为所对应的配置信息中的目标整数,并将M个整数区间分别对应的目标整数的值加i,其中i≥1,目标整数的值处于所对应的整数区间内。本申请所提供的方法能够在批量申请或短时间多次申请的场景下具备随机性和唯一性,提高了ID生成的性能。
Description
技术领域
本申请主要涉及云计算领域,特别涉及一种ID生成方法及装置。
背景技术
在分布式系统中,通过唯一ID来标识一条数据,可以迅速定位数据对象实体、为数据对象之间建立关联、跟踪数据对象在不同服务之间的流转等。比如视频平台需要存储视频、专辑、图片、动漫等多种类型的实体数据,随着数据日益增长,对数据分库分表后需要有一个唯一ID来标识一条数据,一种能够生成全局唯一ID的方法是非常必要的。
目前广泛使用的生成ID的方法,难以保证生成的ID同时具备随机性和唯一性。
其中,随机性指的是生成ID的不规律性,在批量申请或者短时间内多次申请ID的场景下,如果生成的ID具有某种规律,则获取一个ID后,可以通过暴力穷举的方式得到其他ID。比如用户获取到视频平台某个电视剧第一集视频的ID后,很容易得到第二集等其他剧集的ID。因此在生成的ID不具备随机性的情况下,难以避免恶意用户的爬取,存在信息安全方面的缺陷;
而唯一性指的是生成的ID是否重复,当生成的ID不具有唯一性时,则需要对ID进行冲突检测,保证生成的ID不重复,冲突检测增加了获取ID的响应时间,降低了ID的生成速度。
上述缺陷对生成ID造成了安全性或生成速度方面的不良影响,因此需要一种能够解决上述缺陷的ID生成方法。
发明内容
有鉴于此,本申请的目的在于提供一种ID生成方法及装置,能够保证生成的ID同时具备唯一性和随机性,提高ID生成的性能。
一方面,本申请实施例提供了一种ID生成方法,所述方法包括:
确定M个待申请ID,M>1;
在预先配置的N个整数区间中,为所述M个待申请ID随机选取M个整数区间,其中,待申请ID与选取的整数区间一一对应,N>M;所述整数区间被配置有配置信息,所述配置信息中包括目标整数,所述目标整数用于表征所述目标整数对应的整数区间分配到的整数,所述N个整数区间互不重合;
将所述随机选取的M个整数区间对应的待申请ID的ID值赋值为所对应的配置信息中的目标整数,并将所述M个整数区间分别对应的目标整数的值加i,其中i≥1,所述目标整数的值处于所对应的整数区间内。
可选的,所述方法还包括:当所述随机选取的M个整数区间所对应的目标整数增加到大于所述整数区间的区间最大值时,将所述整数区间的配置信息从所述预先配置的N个整数区间的配置信息中删除。
可选的,所述预先配置的N个整数区间是连续分配的。
可选的,所述方法还包括:当所述M个整数区间中有未分配过ID值的整数区间时,将所述未分配过ID值的整数区间所对应的目标整数赋值为所述未分配过ID值的整数区间的区间最小值。
可选的,所述预先配置的N个整数区间的范围为8个字节表示的正整数范围。
另一方面,本申请实施例还提供了一种ID生成装置,包括:
待申请ID个数确定单元,用于确定M个待申请ID,M>1;
整数区间随机选取单元,用于在预先配置的N个整数区间中,为所述M个待申请ID随机选取M个整数区间,其中,待申请ID与选取的整数区间一一对应,N>M;所述整数区间被配置有配置信息,所述配置信息中包括目标整数,所述目标整数用于表征所述目标整数对应的整数区间分配到的整数,所述N个整数区间互不重合;
待申请ID分配单元,用于将所述随机选取的M个整数区间对应的待申请ID的ID值赋值为所对应的配置信息中的目标整数,并将所述M个整数区间分别对应的目标整数的值加i,其中i≥1,所述目标整数的值处于所对应的整数区间内。
可选的,所述装置还包括:
整数区间删除单元,用于当所述随机选取的M个整数区间所对应的目标整数增加到大于所述整数区间的区间最大值时,将所述整数区间的配置信息从所述预先配置的N个整数区间的配置信息中删除。
可选的,所述装置还包括:
目标整数赋值单元,当所述M个整数区间中有未分配过ID值的整数区间时,将所述未分配过ID值的整数区间所对应的目标整数赋值为所述未分配过ID值的整数区间的区间最小值。
另一方面,本申请实施例还提供了一种设备,所述设备包括:处理器和存储器;
所述存储器,用于存储指令;
所述处理器,用于执行所述存储器中的所述指令,执行以上方面所述的方法。
另一方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有程序代码或指令,当其在计算机上运行时,使得所述计算机执行以上方面所述的方法。
由此可见,本申请实施例有如下有益效果:
本申请实施例提供的方法中,首先确定大于1的待申请ID个数M,通过在预先配置的N个整数区间中,为M个待申请ID随机选取M个整数区间,其中待申请ID与选取的整数区间一一对应,从而使得每次生成的待申请ID的ID值都分布在N个整数区间中的随机M个整数区间中,在批量申请ID或短时间内多次申请ID的场景下,增强了生成的待申请ID的随机性,从而难以在获得一个待申请ID之后通过暴力穷举得到其他待申请ID;
再通过将随机选取的M个整数区间对应的待申请ID的ID值赋值为所对应的配置信息中的目标整数,并将M个整数区间分别对应的目标整数的值加i,其中i≥1,目标整数的值处于所对应的整数区间内,从而保证在每个整数区间内分配的待申请ID的ID值都不重复,从而在生成ID的过程中无需进行冲突检测,降低了获取待申请ID的响应时间。
由此,本申请所提供的方法能够在保证生成的ID具备唯一性的同时,在批量申请或短时间多次申请的场景下具备随机性,提高了ID生成的性能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本申请实施例提供的一种ID生成方法的方法流程图;
图2为本申请实施例提供的一种配置整数区间的流程图;
图3为本申请实施例提供的一种在M个整数区间内分配待申请ID的具体流程图;
图4为本申请实施例提供的一种预排查N个整数区间的流程图;
图5为本申请实施例提供的一种ID生成装置的装置示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请的具体实施方式做详细的说明。
在下面的描述中阐述了很多具体细节以便于充分理解本申请,但是本申请还可以采用其它不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施例的限制。
在分布式系统中,一种能够生成全局唯一ID的方法是非常必要的。目前较多使用的多种ID生成方法都存在一些缺陷,下面对几种常见的ID生成方法进行介绍:
(1)自增整数的方法。这种方法生成容易,可用的ID数多,可读性好,而且具有唯一性,无需进行冲突检测;但这种方法生成的ID是连续的,不具备随机性,在批量申请或者短时间内多次申请ID的场景下,获取一个ID后,可以通过暴力穷举方式得到其他ID,存在信息安全方面的缺陷。
(2)随机数/随机字符串的方法。这种方法的随机性高,生成的ID没有规律可循,在批量申请或短时间多次申请的情况下不存在信息安全方面的问题,但该方法生成的ID可能不具有唯一性,需要进行冲突检测,增加了获取ID的响应时间。
(3)通用唯一识别码(Universally Unique Identifier,UUID)的方法。这种方法具有唯一性,无需冲突检测;但UUID太长,需要占用16字节(128位),占用的存储空间较大。
(4)Snowflake算法。该算法稳定性高,采用该算法生成的ID性能较高;但是该算法强依赖机器时钟,如果机器上时钟回拨会导致服务处于不可用状态,或者导致生成的ID产生重复。
上述几种ID生成方法至少具有如下几种缺陷中的一种:①不具备唯一性;②不具备随机性;③占用存储空间较大。
为克服上述缺陷,本申请提供了一种ID生成方法,能够在保证生成的ID具备唯一性的同时,在批量申请或短时间多次申请的场景下具备随机性,提高了ID生成的性能。
为了便于理解,下面结合附图对本申请实施例提供的一种ID生成方法及装置进行详细的说明。
参考图1所示,为本申请实施例提供的一种ID生成方法的方法流程图,该方法可以包括以下步骤。
S101,确定M个待申请ID。
在本申请实施例中,M>1。本申请实施例所提供的方法可以应用于在批量申请ID或短时间内多次申请ID的情况下,使得生成的ID具备随机性,因此首先确定一个大于1的个数M作为待申请ID的个数。
S102,在预先配置的N个整数区间中,为所述M个待申请ID随机选取M个整数区间。
其中,待申请ID与选取的整数区间一一对应,N>M;所述整数区间被配置有配置信息,所述配置信息中包括目标整数,所述目标整数用于表征所述目标整数对应的整数区间分配到的整数,所述N个整数区间互不重合。
整数区间为连续整数组成的区间,在本申请实施例中,为了提高待申请ID的随机性,从预先配置的N个整数区间中,为M个待申请ID随机选取M个整数区间,其中,待申请ID与选取的整数区间一一对应,N>M,从而使得每次生成的M个待申请ID的ID值都分布在N个整数区间中的随机M个区间中,在批量申请ID或短时间内多次申请ID的场景下,增强了生成的待申请ID的随机性,从而难以在获得一个待申请ID之后通过暴力穷举得到其他待申请ID。
本申请实施例中,每次确定M个待申请ID,可以应用在批量生成ID的场景下。例如,一次为一部40集的电视剧分配每一集视频的ID,即一次分配40个视频ID,可以确定M为40。应用本申请实施例所提供的ID生成方法,可以使一次申请的40个视频ID分布在40个不同的整数区间中,且上述40个整数区间是在预先配置的N个整数区间中随机选取的,那么为上述电视剧所分配的40个视频ID也具有随机性,难以通过暴力穷举的方式获取所有的视频ID,增强了平台数据的安全性。
具体地,在实际应用中,待申请ID个数往往远小于预先配置的整数区间个数,即,每次随机选取的整数区间个数远小于预先配置的整数区间个数,M<<N,从而使得待申请ID的随机性大大提高。
本申请实施例中,所述N个整数区间互不重合是指,N个整数区间之间两两交集为空;配置信息为本申请实施例中,和每个整数区间对应的信息;目标整数用来表征每个整数区间目前分配到的整数,是一个变量。
在本申请实施例中,预先配置的N个整数区间的具体配置过程参考图2,为本申请实施例提供的一种配置整数区间的流程图。
如图2所示,配置整数区间的流程可以包括以下步骤:
S1:确定整数范围和整数区间个数。
对于整数范围,在本申请实施例中,一种可能的实现方式是,预先配置的N个整数区间的范围为8个字节表示的正整数范围。当采用8个字节的正整数作为预先配置的N个整数区间的范围时,由于待申请ID所分配到的ID值处于上述整数区间内,因此待申请ID的ID值也占用8个字节的存储空间,相对于16字节的通用唯一识别码(Universally UniqueIdentifier,UUID)等采用较长字节来保证随机性的ID生成方法来说,占用内存较小。
具体地,在Java语言中,LONG类型整数的可用范围为0~263-1(0~9223372036854775807),采用8个字节进行存储;由于在不同的计算机处理器和不同的编程语言中LONG类型以及其他的变量类型(如INT类型,LONG LONG类型等)能表示的范围并不是确定的,而本申请实施例提供的方法并不限定在某种特定的计算机处理器或编程语言中使用,因此该处不对待申请ID的ID值所采用的具体变量类型作出限定。
对于整数区间个数,在本申请实施例中,整数区间的个数N可以任意指定(如10000)。
S2:分配每个整数区间的范围[min,max]。
本申请实施例中,确定整数范围和整数区间个数之后,对每个整数区间的区间范围[min,max](min为每个区间的区间最小值,max为每个区间的区间最大值)进行配置,每个整数区间的区间范围可以自定。一种可能的实现方式中,所述预先配置的N个整数区间是连续分配的;即,上一个分配的整数区间的最大值与下一个分配的整数区间的最小值为相邻的整数,以此类推;例如,将整数区间分配为[0,1000]、[1001,2000]、[2001,3000]等,这样分配能够保证N个整数区间互不重合的同时,尽可能将N个整数区间的整数范围中的所有整数都使用到。
S3:生成配置信息。
本申请实施例中,根据上述步骤配置的每个整数区间的范围生成对应于每个整数区间的配置信息,配置信息中还包括目标整数,表示为current,current可以为该整数区间未被用于生成待申请ID的最小值,在多次生成待申请ID的过程中,current的值会发生改变。
一种可能的实现方式中,当所述M个整数区间中有未分配过ID值的整数区间时,将所述为分配过ID值的整数区间所对应的目标整数赋值为所述为分配过ID值的整数区间的区间最小值。即,将整数区间对应的current赋值为所述整数区间的min值。本实施例中,通过将整数区间的目标整数赋值为对应的区间最小值,使得整数区间从区间最小值开始分配ID值,能够尽可能将该整数区间的所有整数都分配为待申请ID,最大限度提高该整数区间能分配的待申请ID的个数。
一种可能的情况下,整数区间配置信息的一种示例如表1所示。
表1整数区间配置信息的一种示例
S4:存储至Redis。
本申请实施例中,在生成配置信息之后,将配置信息存储到Redis(RemoteDictionary Server,远程字典服务)中,由于本申请实施例提供的ID生成方法需要频繁对配置信息进行读写,而Redis是内存数据库,读写速度较快,因此可以将配置信息存储在Redis中。此外,配置信息还可以存放在本地文件(单机环境)、数据库或者分布式配置中心,此处仅为一种可能的实现方式,并不对配置信息存放的具体位置和存放方式作任何限定。
S103,将所述随机选取的M个整数区间对应的待申请ID的ID值赋值为所对应的配置信息中的目标整数,并将所述M个整数区间分别对应的目标整数的值加i。
其中i≥1,所述目标整数的值处于所对应的整数区间内。
在本申请实施例中,在每个整数区间中,采用递增分配的方式,将M个整数区间的配置信息中的目标整数分配为所对应的待申请ID的ID值,并将M个整数区间分别对应的目标整数的值加i。具体地,将每个整数区间所对应的目标整数current分配为待申请ID的ID值,并返回ID值;再将current赋值为current+i,使得每次用于分配的目标整数在每个整数区间内是递增的,从而保证在同一个整数区间内多次分配的待申请ID的ID值都不重复;又由于在步骤S102中,限定了N个整数区间互不重合,因此在不同整数区间内分配的待申请ID的ID值都不可能相同,在生成ID的过程中无需进行冲突检测,降低了获取待申请ID的响应时间。
具体地,i≥1,在本申请实施例中,可以令i的值为1,从而使得整数范围内的整数都尽可能被使用到,在有限的范围内尽可能多的分配ID,理论上,该方法可分配的ID数能够尽量接近整数范围内所有整数的个数,从而能够在保证可用的ID数尽可能多的同时占用较小的存储空间。
一种可能的实现方式中,所述方法还包括:
S104:当所述随机选取的M个整数区间所对应的目标整数增加到大于所述整数区间的区间最大值时,将所述整数区间的配置信息从所述预先配置的N个整数区间的配置信息中删除。
本申请实施例中,当current增加到大于max的值时,为了避免生成的待申请ID超出该整数区间的范围,需要删除该整数区间的配置信息。例如,对于两个相邻的整数区间[0,10000]和[10001,20000],若前一个整数区间对应的current已经增加到区间最大值10000,此时若current再加i,i=1,则下一次选取到该整数区间时,该整数区间用于分配给待申请ID的ID值则为10001,该值落在区间[10001,20000]中;而区间[10001,20000]可能曾被选取到,或在之后会被选取到,则可能会出现10001作为ID值被重复分配的情况,从而造成生成的待申请ID产生冲突。因此,在current增加到大于max的值时,应当删除该整数区间的配置信息。具体地,从预先配置的N个整数区间的配置信息所存储的位置(如Redis)中删除该整数区间的配置信息。
参考图3所示,该图为本申请实施例提供的一种在M个整数区间内分配待申请ID的具体流程图。根据图3,在M个整数区间内分配待申请ID的流程可以有以下步骤:
确定M个待申请ID;
在N个整数区间中随机选取M个整数区间;
在M个整数区间中,分别进行以下步骤:
将目标整数current分配为ID值,返回待申请ID;
current=current+i;
判断current是否>max;若是,则删除配置信息。
例如,当有用户调用ID生成接口时,比如用户申请10个ID,确定待申请ID个数为10;从预先配置的N个整数区间中随机选取10个整数区间,在10个整数区间中,分别将目标整数current分配为待申请ID的ID值,并将这10个整数区间所对应的配置信息中的current值加1,如果current加1后大于所对应的区间最大值,则代表该整数区间的所有可用于分配为待申请ID的整数已经分配完,则删除该整数区间的配置信息。
本申请实施例中,为了避免出现在初次使用所述ID生成方法时,出现整数区间所对应的目标整数大于区间最大值的情况,在第一次用于生成待申请ID之前,对预先配置的N个整数区间进行排查,具体流程如图4所示。
参考图4,为本申请实施例提供的一种预排查N个整数区间的流程图。首先,对预先配置的N个整数区间从1至N进行编号,编号为1,2,3,……,N。然后从j=1开始,加载整数区间j的配置信息,并判断整数区间j所对应的current值是否大于max值。若是,则删除整数区间j的配置信息;若否,则对下一个整数区间继续判断,直到j>N为止,结束对所有整数区间的预排查。通过上述预排查流程,能够避免在初次使用所述ID生成方法时,出现整数区间所对应的目标整数大于区间最大值的情况。
本申请实施例提供了一种ID生成方法,首先确定大于1的待申请ID个数M,通过在预先配置的N个整数区间中,为M个待申请ID随机选取M个整数区间,其中待申请ID与选取的整数区间一一对应,从而使得每次生成的待申请ID的ID值都分布在N个整数区间中的随机M个整数区间中,在批量申请ID或短时间内多次申请ID的场景下,增强了生成的待申请ID的随机性,从而难以在获得一个待申请ID之后通过暴力穷举得到其他待申请ID;再通过将随机选取的M个整数区间对应的待申请ID的ID值赋值为所对应的配置信息中的目标整数,并将M个整数区间分别对应的目标整数的值加i,其中i≥1,目标整数的值处于所对应的整数区间内,从而保证在每个整数区间内分配的待申请ID的ID值都不重复,从而在生成ID的过程中无需进行冲突检测,降低了获取待申请ID的响应时间。本申请提供的方法能够在保证生成的ID具备唯一性的同时,在批量申请或短时间多次申请的场景下具备随机性,提高了ID生成的性能。
相对于一些生成的ID占用较长字节的传统ID生成方法,如前文提到的UUID,本申请实施例提供的方法还具有可用ID数高,占用内存小的优点。在预先配置的N个整数区间的整数范围内的整数都尽可能被使用到,能够在有限的范围内尽可能多的分配ID,理论上,该方法可分配的ID数能够尽量接近整数范围内所有整数的个数,从而能够在保证可用的ID数尽可能多的同时占用较小的存储空间。
此外,相对于一些依赖机器时钟的传统ID生成方法,如前文提到的Snowflake算法,本申请实施例提供的方法不依赖机器时钟生成,生成的ID只与预先配置的N个整数区间以及N个整数区间中的整数有关,不存在冷却/服务重启可能造成的服务处于不可用状态的问题,也不会因为冷却/服务重启产生ID重复的问题。
基于以上ID生成方法,本申请实施例还提供了一种ID生成装置,参考图5所示,该图为本申请实施例提供的一种ID生成装置的装置示意图,该ID生成装置可以包括:
待申请ID个数确定单元201,用于确定M个待申请ID,M>1。
整数区间随机选取单元202,用于在预先配置的N个整数区间中,为所述M个待申请ID随机选取M个整数区间,其中,待申请ID与选取的整数区间一一对应,N>M;所述整数区间被配置有配置信息,所述配置信息中包括目标整数,所述目标整数用于表征所述目标整数对应的整数区间分配到的整数,所述N个整数区间互不重合;
待申请ID分配单元203,用于将所述随机选取的M个整数区间对应的待申请ID的ID值赋值为所对应的配置信息中的目标整数,并将所述M个整数区间分别对应的目标整数的值加i,其中i≥1,所述目标整数的值处于所对应的整数区间内。
在一种可能的实现方式中,所述装置还包括:
整数区间删除单元,用于当所述随机选取的M个整数区间所对应的目标整数增加到大于所述整数区间的区间最大值时,将所述整数区间的配置信息从所述预先配置的N个整数区间的配置信息中删除。
在一种可能的实现方式中,所述装置还包括:
目标整数赋值单元,当所述M个整数区间中有未分配过ID值的整数区间时,将所述未分配过ID值的整数区间所对应的目标整数赋值为所述未分配过ID值的整数区间的区间最小值。
基于以上ID生成方法,本申请实施例还提供了一种设备,该设备可以包括:处理器和存储器;
存储器,用于存储指令;
处理器,用于执行所述存储器中的所述指令,执行上文所述的ID生成方法。
基于以上ID生成方法,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有程序代码或指令,当其在计算机上运行时,使得所述计算机执行上文所述的ID生成方法。
需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种ID生成方法,其特征在于,所述方法包括:
确定M个待申请ID,M>1;
在预先配置的N个整数区间中,为所述M个待申请ID随机选取M个整数区间,其中,待申请ID与选取的整数区间一一对应,N>M;所述整数区间被配置有配置信息,所述配置信息中包括目标整数,所述目标整数用于表征所述目标整数对应的整数区间分配到的整数,所述N个整数区间互不重合;
将所述随机选取的M个整数区间对应的待申请ID的ID值赋值为所对应的配置信息中的目标整数,并将所述M个整数区间分别对应的目标整数的值加i,其中i≥1,所述目标整数的值处于所对应的整数区间内。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:当所述随机选取的M个整数区间所对应的目标整数增加到大于所述整数区间的区间最大值时,将所述整数区间的配置信息从所述预先配置的N个整数区间的配置信息中删除。
3.根据权利要求1所述的方法,其特征在于,所述预先配置的N个整数区间是连续分配的。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:当所述M个整数区间中有未分配过ID值的整数区间时,将所述未分配过ID值的整数区间所对应的目标整数赋值为所述未分配过ID值的整数区间的区间最小值。
5.根据权利要求1所述的方法,其特征在于,所述预先配置的N个整数区间的范围为8个字节表示的正整数范围。
6.一种ID生成装置,其特征在于,所述装置包括:
待申请ID个数确定单元,用于确定M个待申请ID,M>1;
整数区间随机选取单元,用于在预先配置的N个整数区间中,为所述M个待申请ID随机选取M个整数区间,其中,待申请ID与选取的整数区间一一对应,N>M;所述整数区间被配置有配置信息,所述配置信息中包括目标整数,所述目标整数用于表征所述目标整数对应的整数区间分配到的整数,所述N个整数区间互不重合;
待申请ID分配单元,用于将所述随机选取的M个整数区间对应的待申请ID的ID值赋值为所对应的配置信息中的目标整数,并将所述M个整数区间分别对应的目标整数的值加i,其中i≥1,所述目标整数的值处于所对应的整数区间内。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
整数区间删除单元,用于当所述随机选取的M个整数区间所对应的目标整数增加到大于所述整数区间的区间最大值时,将所述整数区间的配置信息从所述预先配置的N个整数区间的配置信息中删除。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
目标整数赋值单元,当所述M个整数区间中有未分配过ID值的整数区间时,将所述未分配过ID值的整数区间所对应的目标整数赋值为所述未分配过ID值的整数区间的区间最小值。
9.一种设备,其特征在于,所述设备包括:处理器和存储器;
所述存储器,用于存储指令;
所述处理器,用于执行所述存储器中的所述指令,执行权利要求1-5任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有程序代码或指令,当其在计算机上运行时,使得所述计算机执行以上权利要求1-5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210509690.8A CN115002078B (zh) | 2022-05-11 | 2022-05-11 | 一种id生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210509690.8A CN115002078B (zh) | 2022-05-11 | 2022-05-11 | 一种id生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115002078A CN115002078A (zh) | 2022-09-02 |
CN115002078B true CN115002078B (zh) | 2024-04-09 |
Family
ID=83027669
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210509690.8A Active CN115002078B (zh) | 2022-05-11 | 2022-05-11 | 一种id生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115002078B (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1874357A (zh) * | 2005-09-30 | 2006-12-06 | 华为技术有限公司 | 一种产生标识符的方法 |
US8856540B1 (en) * | 2010-12-29 | 2014-10-07 | Amazon Technologies, Inc. | Customized ID generation |
WO2015098207A1 (ja) * | 2013-12-27 | 2015-07-02 | 株式会社東芝 | Id生成装置、id生成方法、およびid生成システム |
CN106503145A (zh) * | 2016-10-20 | 2017-03-15 | 腾讯音乐娱乐(深圳)有限公司 | 一种离散标识生成方法及装置 |
CN109241056A (zh) * | 2018-08-23 | 2019-01-18 | 重庆富民银行股份有限公司 | 一种用于分布式系统的数字id生成系统 |
CN110765732A (zh) * | 2019-10-09 | 2020-02-07 | 中国联合网络通信集团有限公司 | 序列号生成方法、装置及服务器 |
CN111163186A (zh) * | 2019-12-31 | 2020-05-15 | 南京领行科技股份有限公司 | 一种id生成方法、装置、设备和存储介质 |
CN112102005A (zh) * | 2020-09-21 | 2020-12-18 | 中国工商银行股份有限公司 | 电子劵生成方法及系统 |
CN112115133A (zh) * | 2020-08-04 | 2020-12-22 | 北京健康之家科技有限公司 | 分布式全局唯一id生成方法和系统、存储介质、设备 |
CN112948498A (zh) * | 2021-03-30 | 2021-06-11 | 中国建设银行股份有限公司 | 一种分布式系统全局标识的生成方法和装置 |
CN113076303A (zh) * | 2021-04-16 | 2021-07-06 | 北京京东拓先科技有限公司 | 分布式系统中业务标识的生成方法和装置 |
CN113467974A (zh) * | 2021-07-21 | 2021-10-01 | 上海云海万邦数据科技有限公司 | 一种标识信息生成方法 |
CN113821521A (zh) * | 2021-01-29 | 2021-12-21 | 北京京东拓先科技有限公司 | 分布式标识生成方法、装置、电子设备及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6920469B2 (en) * | 2001-11-13 | 2005-07-19 | Tadpole Technology Plc | Unique ID management in disconnected database replication |
US10997119B2 (en) * | 2015-10-23 | 2021-05-04 | Nutanix, Inc. | Reduced size extent identification |
-
2022
- 2022-05-11 CN CN202210509690.8A patent/CN115002078B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1874357A (zh) * | 2005-09-30 | 2006-12-06 | 华为技术有限公司 | 一种产生标识符的方法 |
US8856540B1 (en) * | 2010-12-29 | 2014-10-07 | Amazon Technologies, Inc. | Customized ID generation |
WO2015098207A1 (ja) * | 2013-12-27 | 2015-07-02 | 株式会社東芝 | Id生成装置、id生成方法、およびid生成システム |
CN106503145A (zh) * | 2016-10-20 | 2017-03-15 | 腾讯音乐娱乐(深圳)有限公司 | 一种离散标识生成方法及装置 |
CN109241056A (zh) * | 2018-08-23 | 2019-01-18 | 重庆富民银行股份有限公司 | 一种用于分布式系统的数字id生成系统 |
CN110765732A (zh) * | 2019-10-09 | 2020-02-07 | 中国联合网络通信集团有限公司 | 序列号生成方法、装置及服务器 |
CN111163186A (zh) * | 2019-12-31 | 2020-05-15 | 南京领行科技股份有限公司 | 一种id生成方法、装置、设备和存储介质 |
CN112115133A (zh) * | 2020-08-04 | 2020-12-22 | 北京健康之家科技有限公司 | 分布式全局唯一id生成方法和系统、存储介质、设备 |
CN112102005A (zh) * | 2020-09-21 | 2020-12-18 | 中国工商银行股份有限公司 | 电子劵生成方法及系统 |
CN113821521A (zh) * | 2021-01-29 | 2021-12-21 | 北京京东拓先科技有限公司 | 分布式标识生成方法、装置、电子设备及存储介质 |
CN112948498A (zh) * | 2021-03-30 | 2021-06-11 | 中国建设银行股份有限公司 | 一种分布式系统全局标识的生成方法和装置 |
CN113076303A (zh) * | 2021-04-16 | 2021-07-06 | 北京京东拓先科技有限公司 | 分布式系统中业务标识的生成方法和装置 |
CN113467974A (zh) * | 2021-07-21 | 2021-10-01 | 上海云海万邦数据科技有限公司 | 一种标识信息生成方法 |
Non-Patent Citations (1)
Title |
---|
监视数据的唯一性标识技术探究;张现伟;陈雪珍;;信息通信(第08期) * |
Also Published As
Publication number | Publication date |
---|---|
CN115002078A (zh) | 2022-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6542909B2 (ja) | ファイル操作方法及び装置 | |
EP2863310A1 (en) | Data processing method and apparatus, and shared storage device | |
US10726015B1 (en) | Cache-aware system and method for identifying matching portions of two sets of data in a multiprocessor system | |
CN112579595A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN111163186B (zh) | 一种id生成方法、装置、设备和存储介质 | |
JP2019504415A (ja) | データ格納サービス処理方法及び装置 | |
CN112688799A (zh) | 基于Redis集群的客户号分配方法以及分配装置 | |
CN109582439B (zh) | Dcn部署方法、装置、设备及计算机可读存储介质 | |
CN107122136B (zh) | 一种容量获取方法及装置 | |
CN115002078B (zh) | 一种id生成方法及装置 | |
CN111338958A (zh) | 一种测试用例的参数生成方法、装置及终端设备 | |
CN110765732A (zh) | 序列号生成方法、装置及服务器 | |
CN111858049B (zh) | 资源信息的分配方法、装置和计算机设备 | |
US20140156908A1 (en) | Stale pointer detection with overlapping versioned memory | |
CN114328650A (zh) | 数据库资源管理方法、装置、计算机设备和存储介质 | |
CN109634560B (zh) | 随机数生成方法、装置及存储介质 | |
CN108984780B (zh) | 基于支持重复键值树数据结构管理磁盘数据的方法和装置 | |
CN113285933A (zh) | 用户访问控制方法、装置、电子设备与存储介质 | |
CN111221847B (zh) | 监控数据存储方法、装置及计算机可读存储介质 | |
CN110275863A (zh) | 文件移动方法、装置及存储介质 | |
TW201630380A (zh) | 管理伺服器及其操作方法與伺服器系統 | |
CN111367868A (zh) | 一种文件获取请求的处理方法和装置 | |
CN113723342B (zh) | 一种字幕显示方法、装置、电子设备及可读存储介质 | |
CN116366609B (zh) | 全局唯一标识生成方法、系统、计算机和可读存储介质 | |
CN110417672B (zh) | 限流方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |