CN111985187B - 分布式id获取方法、装置、电子设备和存储介质 - Google Patents
分布式id获取方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN111985187B CN111985187B CN202010901303.6A CN202010901303A CN111985187B CN 111985187 B CN111985187 B CN 111985187B CN 202010901303 A CN202010901303 A CN 202010901303A CN 111985187 B CN111985187 B CN 111985187B
- Authority
- CN
- China
- Prior art keywords
- sequence
- ids
- service
- pool
- generated
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/126—Character encoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例公开了一种分布式ID获取方法、装置、电子设备和存储介质。所述方法包括:获取业务序列在当前时刻待生成ID的第一数量,以及构建的ID池中每秒可生成ID的第二数量;若所述第一数量大于所述第二数量,则确定所述第一数量和所述第二数量的差值数量;从所述ID池中获取当前时刻之前的预设时间段内生成的所述差值数量的未应用业务序列ID;基于所述ID池生成的第二数量的业务序列ID和所述差值数量的未应用业务序列ID,生成目标分布式ID。以实现提供用户所需的ID数量,满足用户的个性化需求的效果。
Description
技术领域
本发明实施例涉及医疗技术,尤其涉及一种分布式ID获取方法、装置、电子设备和存储介质。
背景技术
随着医疗业务数据量的不断增大,单表数据量过大导致医疗数据库性能下降严重,行业通用方案是使用分库分表技术来降低每张表的数据量,从而恢复单表的性能,而这种情况下就需要生成全局唯一的身份标识号(ID)。
目前比较成熟的分布式全局唯一ID生成器,是使用推特(Twitter)开源的雪花(SnowFlake)算法来实现的,此外还有利用数据库来自增ID、redis生成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生成模块,用于基于所述ID池生成的第二数量的业务序列ID和所述差值数量的未应用业务序列ID,生成目标分布式ID。
第三方面,本发明实施例还提供了一种电子设备,该电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例中任一所述的分布式ID获取方法。
第四方面,本发明实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行本发明实施例中任一所述的分布式ID获取方法。
本发明实施例的技术方案,通过获取业务序列在当前时刻待生成ID的第一数量,以及构建的ID池中每秒可生成ID的第二数量,若第一数量大于第二数量,则确定第一数量和第二数量的差值数量,从ID池中获取当前时刻之前的预设时间段内生成的差值数量的未应用业务序列ID,基于ID池生成的第二数量的业务序列ID和差值数量的未应用业务序列ID,生成目标分布式ID,这样用户即可得到其所需的第一数量的ID序列,实现了可提供给用户所需的ID数量,满足用户的个性化需求,提高了用户体验。
附图说明
图1是本发明实施例一中的分布式ID获取方法的流程图;
图2是本发明实施例二中的分布式ID获取方法的流程图;
图3是本发明实施例三中的分布式ID获取装置的结构示意图;
图4是本发明实施例四中的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的分布式ID获取方法的流程图,本实施例可适用于用户可获取自己需求数量的分布式ID的情况,该方法可以由分布式ID获取装置来执行,该分布式ID获取装置可以由软件和/或硬件来实现,该分布式ID获取装置可以配置在计算设备上,具体包括如下步骤:
S110、获取业务序列在当前时刻待生成ID的第一数量,以及构建的ID池中每秒可生成ID的第二数量。
示例性的,业务序列可以是JVM内部业务序列。
当前时刻待生成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获取的时间,提高了ID获取效率。
需要说明的是,这里的介绍一下本发明实施例中ID序列,对于默认ID池,以及基于当前时刻和当前业务类型构建的与当前业务类型对应的ID池中的任一ID序列,包括:所述ID序列为64位长整型数字,将ID序列分为第一预设数量的序列段,其中,各序列段中包含不同预设数量的长整型数字,各序列段中的不同预设数量的长整型数字分别代表不同的类型。
示例性的,第一预设数量可以是预先设置的每个ID序列的序列段的数量。
对于默认ID池,以及基于当前时刻和当前业务类型构建的与当前业务类型对应的ID池中的任一ID序列,这里的每个ID序列均为64位长整型数字,这样占用空间小,后续存储查询时效率高。
对于每个64位长整型数字的ID序列可分为预设数量的序列段,即将64位长整型数字的ID序列分为几个序列段,在每个序列段中均有不同数量的长整型数字,每个序列段中的不同数量的长整型数字分别代表不同的类型。
具体的,这里的第一预设数量可以是5,每个序列段中的不同数量的长整型数字分别代表不同的类型,具体可以是:第一序列段中的第二预设数量的长整型数字代表根节点序列类型;第二序列段中的第三预设数量的长整型数字代表业务序列类型;第三序列段中的第四预设数量的长整型数字代表各实例序列类型;第四序列段中的第五预设数量的长整型数字代表时间序列类型;第五序列段中的第六预设数量的长整型数字代表所述ID序列的符号位序列类型。
示例性的,第二预设数量可以是预先设置的代表根节点序列类型的序列段中长整型数字的数量。
第三预设数量可以是预先设置的代表根节点序列类型的序列段中长整型数字的数量。
第四预设数量可以是预先设置的代表业务序列类型的序列段中长整型数字的数量。
第五预设数量可以是预先设置的代表各实例序列类型的序列段中长整型数字的数量。
第六预设数量可以是预先设置的代表符号位序列类型的序列段中长整型数字的数量。
具体的可以是,第一序列段可以为第1位长整型数字,即第二预设数量可以是1。该位长整型数字可采用随机数0和1,该位长整型数字主要是考虑数据库索引的底层数据结构为B+数,这种数据结构如果某个节点有过多元素,则会把它分裂为两个节点,每个都有最小数目的元素。在树上递归向上继续这个处理直到到达根节点,如果根节点被分裂,则创建一个新根节点。通过随机最后一位,而让数据分布平均,从而提升效率。具体的可以是,第一个ID序列的第1位为1,第二个ID序列的第1位为0,然后第三个ID序列的第1位为1,这样循环设置,让数据分布平均,提升效率。
第二序列段可以为第2位到第11位,共10位,即第三预设数量可以是10。这10位长整型数字代表JVM内部业务序列的序列号,每个业务每秒可支持生成1024个业务序列ID。
第三序列段可以是第12位到第31位,共20位,即第四预设数量可以是20。这20位长整型数字代表全球唯一实例序列(通过配置管理服务器(Configuration ManagementDatabase,CMDB)获取),这里的第三序列段可支持1048576个部署实例,假设每家单位有10个实例,那么可以至少支持10万家单位。
可选的,这里的实例序列类型可以是各医院的各实例序列类型。
第四序列段可以是第32位到第63位,共32位,即第五预设数量可以是32。这20位长整型数字代表时间序列(可通过CMDB获取)。
第五序列段可以是第64位,共1位,即第六预设数量可以是1位。由于在二进制中最高位是符号位,1表示负数,0表示正数。生成的ID一般都是用正整数,所以本发明实施例中最高位固定为0,即第64位固定为0。
需要说明的是,由于在获取当前时刻和医院的实例后,64位长整型ID序列中的第一序列段、第三序列段、第四序列段和第五序列段均已确定,后续在获取ID时,获取的即为第二序列段。即在同一时刻,对于同一个医院的某一实例来讲,当前时刻生成的ID的不同仅在于第二序列段的不同。
需要说明的是,若这里的用户不考虑数据分布的问题,也可以不设置64位长整型数字的第1位,按次序将第1位往后移,将第1位到第11位作为业务序列类型。即这里的序列段的数量即为4。
需要说明的是,这里的不同序列段内的长整型数字的数量可根据用户需求自行设置,这里不做限定。
这样不同的ID序列具有不同的含义,根据ID序列可知是哪个单位的哪个微服务,以及是什么时间产生的数据。这样可部署不同的单位,实现了分布式部署,满足各单位的业务需求。
S120、若第一数量大于第二数量,则确定第一数量和第二数量的差值数量。
示例性的,比较第一数量和第二数量,当第一数量大于第二数量时,确定第一数量和第二数量的差值数量。这样以便后续从ID池中获取当前时刻之前的预设时间段内生成的差值数量的未应用业务序列ID。
S130、从ID池中获取当前时刻之前的预设时间段内生成的差值数量的未应用业务序列ID。
示例性的,预设时间段可以是预先设置的时间段,例如可以是90秒。
业务序列ID可以是由于第二序列段的业务序列的不同而形成的不同的第二序列段。这是由于在同一时刻,对于同一个医院的某一实例来讲,当前时刻生成的ID的不同仅在于第二序列段的不同,因此,这里的业务序列ID即指第二序列段所对应的10位长整型数字所组成的业务序列的ID。
未应用业务序列ID可以是在当前时刻之前的预设时间段内生成业务序列ID中未被使用的业务序列ID。例如,以当前时刻为8点,预设时间段是90秒,构建的ID池每秒可生成的ID的第二数量为1024个为例,在当前时刻8点之前的90秒内ID池生成ID的数量为9*1024个,若在当前时刻8点之前的90秒内,用户从ID池中获取走了8*1024个ID,则剩下的1024个ID则为未应用的业务序列ID。
当第一数量大于第二数量时,根据第一数量和第二数量,确定第一数量和第二数量的差值数量后,从ID池中获取当前时刻之前的预设时间段内生成的差值数量的未应用业务序列ID。例如,以当前时刻为8点,预设时间段是90秒,第一数量为2000,第二数量为1024个为例,当前时刻生成的1024个ID不足以满足用户所需的2000个ID,则此时从当前时刻8点之前的90秒内未应用的业务序列ID中获取2000-1024=976个业务序列ID。即是将当前时刻之前的预设时间段内的未应用的ID的第二序列段获取出来。
具体的,这里的从ID池中获取当前时刻之前的预设时间段内生成的差值数量的未应用业务序列ID,可以是,从ID池中当前时刻之前的预设时间段内生成的未应用业务序列ID中,按距离当前时刻由近到远的时间顺序获取差值数量的未应用业务序列ID。
例如,以当前时刻为8点,预设时间段是90秒,第一数量为2000,第二数量为1024个为例,当前时刻生成的1024个ID不足以满足用户所需的2000个ID,则此时从当前时刻8点之前的90秒内未应用的业务序列ID中,按距离当前时刻最近的时刻生成的未应用的业务序列ID中获取2000-1024=976个业务序列ID。比如,在7点59分59秒生成的ID中未应用的ID有300个,在7点59分58秒生成的ID中未应用的ID有500个,在7点59分57秒生成的ID中未应用的ID有300个,在7点59分0秒到7点59分56秒生成的ID中未应用的ID有1000个。则获取时获取的是从7点59分59秒生成的ID中未应用的300个ID、在7点59分58秒生成的ID中未应用的500个ID和和在7点59分57秒生成的ID中未应用的176个ID。且从7点59分57秒生成的ID中未应用的300个ID中获取176个ID,也是在7点59分57秒时刻生成的靠后的176个未应用的ID。
这样实现了可提供给用户所需的ID数量,满足用户的个性化需求的效果。
S140、基于ID池生成的第二数量的业务序列ID和差值数量的未应用业务序列ID,生成目标分布式ID。
示例性的,目标分布式ID可以是最后生成的提供给用户的第一数量的64位长整型数字的ID序列。
根据获取的差值数量的未应用业务序列ID和ID池生成的业务序列ID,以及当前时刻除业务序列类型外的其他类型的序列段,共同组成64位的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。
本发明实施例的技术方案,通过获取业务序列在当前时刻待生成ID的第一数量,以及构建的ID池中每秒可生成ID的第二数量,若第一数量大于第二数量,则确定第一数量和第二数量的差值数量,从ID池中获取当前时刻之前的预设时间段内生成的差值数量的未应用业务序列ID,基于ID池生成的第二数量的业务序列ID和差值数量的未应用业务序列ID,生成目标分布式ID,这样用户即可得到其所需的第一数量的ID序列,实现了可提供给用户所需的ID数量,满足用户的个性化需求,提高了用户体验。
实施例二
图2为本发明实施例二提供的分布式ID获取方法的流程图,本发明实施例与上述实施例中各个可选方案可以结合。在本发明实施例中,可选的,所述方法还包括:构建时间线程,以使所述时间线程基于各时间节点,将各时间节点所生成的ID对应区分。
如图2所示,本发明实施例的方法具体包括如下步骤:
S210、获取业务序列在当前时刻待生成ID的第一数量,以及构建的ID池中每秒可生成ID的第二数量。
S220、基于构建的时间线程,控制各时间节点所生成的ID按时间节点对应区分。
示例性的,这里可以是重新构建一个时间线程,该时间线程可基于各时间节点,将各时间节点生成的ID对应区分,即在获取当前时刻的ID时,不会获取到当前时刻之前的其他时刻的ID。
这样保证了各时间节点所生成的ID均是根据时间自增长的,避免时间回拨。
S230、若第一数量大于第二数量,则确定第一数量和第二数量的差值数量。
S240、从ID池中获取当前时刻之前的预设时间段内生成的差值数量的未应用业务序列ID。
S250、基于ID池生成的第二数量的业务序列ID和差值数量的未应用业务序列ID,生成目标分布式ID。
需要说明的是,这里的在生成目标分布式ID后,还可以判断获取的第一数量的目标分布式ID是否唯一;若唯一,则将获取的第一数量的目标分布式ID发送至客户端;若不唯一,则将获取的第一数量的目标分布式ID与redis数据库中当前时刻之前的预设时间段(例如90秒)内的ID做去重运算,将去重运算后的目标分布式ID发送至客户端。这样保证了获取的ID的唯一性。
本发明实施例的技术方案,通过基于构建的时间线程,控制各时间节点所生成的ID按时间节点对应区分,这样保证了各时间节点所生成的ID均是根据时间自增长的,避免时间回拨。
实施例三
图3为本发明实施例三提供的分布式ID获取装置的结构示意图,如图3所示,该装置包括:数量获取模块31、差值确定模块32、ID获取模块33和目标分布式ID生成模块34。
其中,数量获取模块31,用于获取业务序列在当前时刻待生成ID的第一数量,以及构建的ID池中每秒可生成ID的第二数量;
差值确定模块32,用于若所述第一数量大于所述第二数量,则确定所述第一数量和所述第二数量的差值数量;
ID获取模块33,用于从所述ID池中获取当前时刻之前的预设时间段内生成的所述差值数量的未应用业务序列ID;
目标分布式ID生成模块34,用于基于所述ID池生成的第二数量的业务序列ID和所述差值数量的未应用业务序列ID,生成目标分布式ID。
在上述发明实施例的技术方案的基础上,该装置还包括:
默认ID池构建模块,用于基于获取的当前时刻,构建默认ID池;
第一判断模块,用于获取外界输入的当前业务类型,基于所述当前业务类型,判断所述默认ID池中是否包含与所述当前业务类型对应的业务序列ID;若没有,则基于所述当前时刻和所述当前业务类型,构建与所述当前业务类型对应的ID池。
在上述发明实施例的技术方案的基础上,数量获取模块31包括:
第二数量获取单元,用于若所述默认ID池中包含与所述当前业务类型对应的业务序列ID,则获取构建的所述默认ID池中每秒可生成ID的第二数量。
可选的,对于所述默认ID池,以及基于所述当前时刻和所述当前业务类型构建的与所述当前业务类型对应的ID池中的任一ID序列,包括:所述ID序列为64位长整型数字,将所述ID序列分为第一预设数量的序列段,其中,各序列段中包含不同预设数量的长整型数字,各序列段中的不同预设数量的长整型数字分别代表不同的类型。
可选的,所述第一预设数量为5,所述各序列段中的不同预设数量的长整型数字分别代表不同的类型,包括:
第一序列段中的第二预设数量的长整型数字代表根节点序列类型;
第二序列段中的第三预设数量的长整型数字代表业务序列类型;
第三序列段中的第四预设数量的长整型数字代表各实例序列类型;
第四序列段中的第五预设数量的长整型数字代表时间序列类型;
第五序列段中的第六预设数量的长整型数字代表所述ID序列的符号位序列类型。
可选的,所述实例序列类型为各医院的各实例序列类型。
在上述发明实施例的技术方案的基础上,目标分布式ID生成模块34具体用于:
基于所述ID池生成的第二数量的业务序列ID和所述差值数量的未应用业务序列ID,生成业务序列段的ID;基于生成的所述业务序列段的ID,以及根节点序列段的ID、实例序列段的ID、时间序列段的ID和符号位序列段的ID,生成目标分布式ID。
在上述发明实施例的技术方案的基础上,该装置还包括:
ID区分模块,用于基于构建的时间线程,控制各时间节点所生成的ID按时间节点对应区分。
本发明实施例所提供的分布式ID获取装置可执行本发明任意实施例所提供的分布式ID获取方法,具备执行方法相应的功能模块和有益效果。
实施例四
图4为本发明实施例四提供的一种电子设备的结构示意图,如图4所示,该电子设备包括处理器70、存储器71、输入装置72和输出装置73;电子设备中处理器70的数量可以是一个或多个,图4中以一个处理器70为例;电子设备中的处理器70、存储器71、输入装置72和输出装置73可以通过总线或其他方式连接,图4中以通过总线连接为例。
存储器71作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的分布式ID获取方法对应的程序指令/模块(例如,数量获取模块31、差值确定模块32、ID获取模块33和目标分布式ID生成模块34)。处理器70通过运行存储在存储器71中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述的分布式ID获取方法。
存储器71可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器71可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器71可进一步包括相对于处理器70远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置72可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。输出装置73可包括显示屏等显示设备。
实施例五
本发明实施例五还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种分布式ID获取方法。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的分布式ID获取方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述分布式ID获取装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (11)
1.一种分布式ID获取方法,其特征在于,包括:
获取业务序列在当前时刻待生成ID的第一数量,以及构建的ID池中每秒可生成ID的第二数量;
若所述第一数量大于所述第二数量,则确定所述第一数量和所述第二数量的差值数量;
从所述ID池中获取当前时刻之前的预设时间段内生成的所述差值数量的未应用业务序列ID;其中,所述未应用业务序列ID具体为在所述当前时刻之前的所述预设时间段内生成业务序列ID中未被使用的业务序列ID;
基于所述ID池生成的第二数量的业务序列ID和所述差值数量的未应用业务序列ID,生成目标分布式ID。
2.根据权利要求1所述的方法,其特征在于,在所述获取业务序列在当前时刻待生成ID的第一数量之前,所述方法还包括:
基于获取的当前时刻,构建默认ID池;
获取外界输入的当前业务类型,基于所述当前业务类型,判断所述默认ID池中是否包含与所述当前业务类型对应的业务序列ID;
若没有,则基于所述当前时刻和所述当前业务类型,构建与所述当前业务类型对应的ID池。
3.根据权利要求2所述的方法,其特征在于,获取构建的ID池中每秒可生成ID的第二数量,包括:
若所述默认ID池中包含与所述当前业务类型对应的业务序列ID,则获取构建的所述默认ID池中每秒可生成ID的第二数量。
4.根据权利要求2所述的方法,其特征在于,对于所述默认ID池,以及基于所述当前时刻和所述当前业务类型构建的与所述当前业务类型对应的ID池中的任一ID序列,包括:
所述ID序列为64位长整型数字,将所述ID序列分为第一预设数量的序列段,其中,各序列段中包含不同预设数量的长整型数字,各序列段中的不同预设数量的长整型数字分别代表不同的类型。
5.根据权利要求4所述的方法,其特征在于,所述第一预设数量为5,所述各序列段中的不同预设数量的长整型数字分别代表不同的类型,包括:
第一序列段中的第二预设数量的长整型数字代表根节点序列类型;
第二序列段中的第三预设数量的长整型数字代表业务序列类型;
第三序列段中的第四预设数量的长整型数字代表各实例序列类型;
第四序列段中的第五预设数量的长整型数字代表时间序列类型;
第五序列段中的第六预设数量的长整型数字代表所述ID序列的符号位序列类型。
6.根据权利要求5所述的方法,其特征在于,所述实例序列类型为各医院的各实例序列类型。
7.根据权利要求5所述的方法,其特征在于,所述基于所述ID池生成的第二数量的业务序列ID和所述差值数量的未应用业务序列ID,生成目标分布式ID,包括:
基于所述ID池生成的第二数量的业务序列ID和所述差值数量的未应用业务序列ID,生成业务序列段的ID;
基于生成的所述业务序列段的ID,以及根节点序列段的ID、实例序列段的ID、时间序列段的ID和符号位序列段的ID,生成目标分布式ID。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
基于构建的时间线程,控制各时间节点所生成的ID按时间节点对应区分。
9.一种分布式ID获取装置,其特征在于,包括:
数量获取模块,用于获取业务序列在当前时刻待生成ID的第一数量,以及构建的ID池中每秒可生成ID的第二数量;
差值确定模块,用于若所述第一数量大于所述第二数量,则确定所述第一数量和所述第二数量的差值数量;
ID获取模块,用于从所述ID池中获取当前时刻之前的预设时间段内生成的所述差值数量的未应用业务序列ID;其中,所述未应用业务序列ID具体为在所述当前时刻之前的所述预设时间段内生成业务序列ID中未被使用的业务序列ID;
目标分布式ID生成模块,用于基于所述ID池生成的第二数量的业务序列ID和所述差值数量的未应用业务序列ID,生成目标分布式ID。
10.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-8中任一所述的分布式ID获取方法。
11.一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-8中任一所述的分布式ID获取方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010901303.6A CN111985187B (zh) | 2020-08-31 | 2020-08-31 | 分布式id获取方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010901303.6A CN111985187B (zh) | 2020-08-31 | 2020-08-31 | 分布式id获取方法、装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111985187A CN111985187A (zh) | 2020-11-24 |
CN111985187B true CN111985187B (zh) | 2021-06-08 |
Family
ID=73447834
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010901303.6A Active CN111985187B (zh) | 2020-08-31 | 2020-08-31 | 分布式id获取方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111985187B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105653639A (zh) * | 2015-12-25 | 2016-06-08 | 北京奇虎科技有限公司 | Id生成方法及装置 |
CN108234580A (zh) * | 2016-12-22 | 2018-06-29 | 珠海金山办公软件有限公司 | 一种唯一标识生成方法、装置及系统 |
CN108959968A (zh) * | 2018-07-23 | 2018-12-07 | 北京车和家信息技术有限公司 | 随机数序列生成方法及装置、车辆和存储介质 |
CN109376155A (zh) * | 2018-11-06 | 2019-02-22 | 泰康保险集团股份有限公司 | Id生成方法及装置、存储介质及电子设备 |
CN110933196A (zh) * | 2019-11-26 | 2020-03-27 | 上海莉莉丝科技股份有限公司 | 用于全球同服架构的id分配方法、系统及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107528816B (zh) * | 2016-06-22 | 2021-05-18 | 中兴通讯股份有限公司 | 分布式数据库中id的处理方法、管理系统及服务器 |
-
2020
- 2020-08-31 CN CN202010901303.6A patent/CN111985187B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105653639A (zh) * | 2015-12-25 | 2016-06-08 | 北京奇虎科技有限公司 | Id生成方法及装置 |
CN108234580A (zh) * | 2016-12-22 | 2018-06-29 | 珠海金山办公软件有限公司 | 一种唯一标识生成方法、装置及系统 |
CN108959968A (zh) * | 2018-07-23 | 2018-12-07 | 北京车和家信息技术有限公司 | 随机数序列生成方法及装置、车辆和存储介质 |
CN109376155A (zh) * | 2018-11-06 | 2019-02-22 | 泰康保险集团股份有限公司 | Id生成方法及装置、存储介质及电子设备 |
CN110933196A (zh) * | 2019-11-26 | 2020-03-27 | 上海莉莉丝科技股份有限公司 | 用于全球同服架构的id分配方法、系统及存储介质 |
Non-Patent Citations (3)
Title |
---|
zhongxunking.分布式id生成器-ids.《https://github.com/zhongxunking/ids》.2019,第1-6页. * |
分布式id生成器-ids;zhongxunking;《https://github.com/zhongxunking/ids》;20190227;第1-6页 * |
发号器-分布式ID生成系统;iFangcy_;《https://juejin.cn/post/6844903997082468360》;20191114;第1-14页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111985187A (zh) | 2020-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2021500649A (ja) | シャード・データベースのシャード・テーブルにレコードを記憶するためのコンピュータ実装方法、コンピュータ・プログラム製品、およびシステム、シャード・データベースのシャード・テーブルからレコードを検索するためのコンピュータ実装方法、コンピュータ・プログラム製品、およびシステム、ならびにシャード・データベースを記憶するためのシステム | |
US8189912B2 (en) | Efficient histogram storage | |
CN105740405B (zh) | 存储数据的方法和装置 | |
CN111553670B (zh) | 一种交易处理方法、装置及计算机可读存储介质 | |
CN109408711B (zh) | 数据过滤方法、装置、电子设备及存储介质 | |
CN104063377B (zh) | 信息处理方法和使用其的电子设备 | |
CN104778252A (zh) | 索引的存储方法和装置 | |
CN110807035A (zh) | 流水号生成方法、装置、设备及存储介质 | |
CN111985187B (zh) | 分布式id获取方法、装置、电子设备和存储介质 | |
CN109862097A (zh) | Id生成方法及装置 | |
CN113746487A (zh) | 一种数据压缩方法、装置及电子设备和存储介质 | |
CN117349291A (zh) | 一种数据库主键短id生成方法、电子设备和介质 | |
CN110266834B (zh) | 基于互联网协议地址的地区查找方法及装置 | |
CN113742332A (zh) | 数据存储方法、装置、设备及存储介质 | |
CN117251471A (zh) | 数据查询方法、装置、电子设备及存储介质 | |
CN104484218A (zh) | 一种虚拟机名称展示的方法、装置及系统 | |
CN111901453A (zh) | 一种标识生成方法、装置、计算机设备和存储介质 | |
CN110309328B (zh) | 数据存储方法、装置、电子设备及存储介质 | |
CN116303343A (zh) | 数据分片方法、装置、电子设备及存储介质 | |
CN110990640B (zh) | 一种数据判定方法、装置、设备及计算机可读存储介质 | |
CN112035413B (zh) | 元数据信息查询方法、装置及存储介质 | |
CN111314061B (zh) | 一种随机数的生成方法及系统 | |
CN110134751B (zh) | 桩位导线id生成方法、装置和移动终端 | |
CN107515867A (zh) | 一种NoSQL数据库的数据存储、查询方法和装置以及一种rowKey全组合的生成方法和装置 | |
CN113254271B (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 |