CN116366609B - 全局唯一标识生成方法、系统、计算机和可读存储介质 - Google Patents
全局唯一标识生成方法、系统、计算机和可读存储介质 Download PDFInfo
- Publication number
- CN116366609B CN116366609B CN202310644736.1A CN202310644736A CN116366609B CN 116366609 B CN116366609 B CN 116366609B CN 202310644736 A CN202310644736 A CN 202310644736A CN 116366609 B CN116366609 B CN 116366609B
- Authority
- CN
- China
- Prior art keywords
- identifier
- identification information
- new
- information group
- identification
- 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 100
- 238000004590 computer program Methods 0.000 claims description 10
- 238000005516 engineering process Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 10
- 230000002159 abnormal effect Effects 0.000 description 5
- 238000012795 verification Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5061—Pools of addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及计算机技术领域,尤其涉及一种全局唯一标识生成方法、系统、计算机和可读存储介质,该方法包括:接收标识请求信息,并基于所述标识请求信息获取标识信息组,所述标识信息组包括最小标识和最大标识;对所述最小标识进行增一,得到所述标识请求信息对应的过程请求标识;基于所述最小标识、所述最大标识和所述过程请求标识,生成所述标识请求信息对应的全局唯一标识。本申请不用每次产生全局唯一标识时都向Redis服务器获取,有效减少产生标识时间,提高产生标识效率,同时也减小Redis服务器的压力。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种全局唯一标识生成方法、系统、计算机和可读存储介质。
背景技术
在现有的技术中,通常利用远程字典服务(Remote Dictionary Server,Redis)的单线程执行命令的特性来保证获取的标识全局唯一。由于每次生成标识都需要连接Redis服务器来获取,因此,对高并发的应用场景而言,不仅生成全局唯一标识的效率低,而且对Redis服务器也带来一定压力。
发明内容
鉴于上述问题,本申请提出一种全局唯一标识生成方法、系统、计算机和可读存储介质。
本申请实施例提出一种全局唯一标识生成方法,包括:
接收标识请求信息,并基于所述标识请求信息获取标识信息组,所述标识信息组包括最小标识和最大标识;
对所述最小标识进行增一,得到所述标识请求信息对应的过程请求标识;
基于所述最小标识、所述最大标识和所述过程请求标识,生成所述标识请求信息对应的全局唯一标识。
进一步地,在上述的全局唯一标识生成方法中,所述基于所述最小标识、所述最大标识和所述过程请求标识,生成所述标识请求信息对应的全局唯一标识,包括:
若所述过程请求标识小于所述最大标识,则将所述过程请求标识作为所述全局唯一标识;
若所述过程请求标识等于所述最大标识,则将所述过程请求标识作为所述全局唯一标识,并基于第一预设递增数向Redis服务器获取新的最大标识和新的最小标识;
基于所述新的最大标识和所述新的最小标识,对后续的标识请求信息生成对应的全局唯一标识。
进一步地,在上述的全局唯一标识生成方法中,若所述过程请求标识等于所述最大标识,则在获取新的最大标识和新的最小标识之前,还包括:
对所述标识信息组进行加锁。
进一步地,在上述的全局唯一标识生成方法中,还包括:
若所述过程请求标识大于所述最大标识,则基于所述新的最大标识和所述新的最小标识,生成对应的全局唯一标识。
进一步地,在上述的全局唯一标识生成方法中,所述接收标识请求信息,并基于标识请求信息获取标识信息组,包括:
接收标识请求信息,通过Map接口获取待验证标识信息组,判断所述待验证标识信息组是否为空;
若所述待验证标识信息组不为空,则将所述待验证标识信息组作为所述标识信息组;
若所述待验证标识信息组为空,则对所述Map接口进行加锁;
重新通过所述Map接口获取新的待验证标识信息组;
若所述新的待验证标识信息组为空,则基于第二预设递增数向Redis服务器获取新的最大标识;
基于所述第二预设递增数和所述新的最大标识,构建新的标识信息组,并将所述新的标识信息组作为所述标识信息组。
进一步地,在上述的全局唯一标识生成方法中,还包括:
若所述新的待验证标识信息组不为空,则将所述新的待验证标识信息组作为所述标识信息组。
进一步地,在上述的全局唯一标识生成方法中,基于所述第二预设递增数和所述新的最大标识,构建新的标识信息组,并将所述新的标识信息组作为所述标识信息组,包括:
基于所述第二预设递增数和所述新的最大标识,得到新的最小标识;
基于所述新的最小标识和所述新的最大标识,构建新的标识信息组,并将所述新的标识信息组作为所述标识信息组。
本申请的另一实施例还提出一种全局唯一标识生成系统,包括:
获取单元,用于接收标识请求信息,并基于所述标识请求信息获取标识信息组,所述标识信息组包括最小标识和最大标识;
增加单元,用于对所述最小标识进行增1,得到所述标识请求信息对应的过程请求标识;
生成单元,用于基于所述最小标识、所述最大标识和所述过程请求标识,生成所述标识请求信息对应的全局唯一标识。
本申请的另一实施例还提出一种计算机,包括存储单元和处理单元,所述存储单元中存储有计算机程序,所述处理单元通过调用所述存储单元中存储的所述计算机程序,执行上述的全局唯一标识生成方法的步骤。
本申请的另一实施例还提出一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于处理器进行加载,以执行如上述的全局唯一标识生成方法的步骤。
本申请的实施例具有以下的有益效果:
本申请实施例提出一种全局唯一标识生成方法,通过一次性存储多个标识,存储的多个标识的范围为最小标识至最大标识,当每次需要产生全局唯一标识时,则利用最小标识依次增加1来产生对应的请求的标识。本方案不用每次产生全局唯一标识时都向Redis服务器获取,有效减少产生标识时间,提高产生标识效率,同时也减小Redis服务器的压力。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对本申请保护范围的限定。在各个附图中,类似的构成部分采用类似的编号。
图1示出了本申请一些实施方式的全局唯一标识生成方法的第一流程示意图;
图2示出了本申请一些实施方式的全局唯一标识生成方法的第二流程示意图;
图3示出了本申请一些实施方式的全局唯一标识生成方法的第三流程示意图;
图4示出了本申请一些实施方式的全局唯一标识生成方法的第四流程示意图;
图5示出了本申请一些实施方式的全局唯一标识生成系统的结构示意图。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。
通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
在下文中,可在本申请的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。
此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本申请的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本申请的各种实施例中被清楚地限定。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互结合。
通常地,利用Redis单线程执行命令的特性能够保证得到的标识全局唯一,通过执行Redis的incr key命令得到全局唯一标识,将key中存储的数字增一,key可以为不同的业务类型,比如user、order等等。但是,通过每次递增1的方式获取新的标识,相当于每次获取标识都需要连接Redis,所以亟需一种新的方案来提升效率。
因此,本申请提出一种全局唯一标识生成方法来解决上述问题。
请参照图1,为本申请实施例提出的全局唯一标识生成方法的一种流程示意图。示范性地,该全局唯一标识生成方法应用于计算机中。
在一些实施方式中,如图1所示,一种全局唯一标识生成方法可以包括:
S110,接收标识请求信息,并基于标识请求信息获取标识信息组,标识信息组包括最小标识和最大标识。
具体地,ConcurrentHashMap是Java中的一个线程安全的哈希表,是Java集合框架中的一员,可以在多线程环境下使用,而不需要使用synchronized关键字进行同步。而ConcurrentHashMap的实现方式是将哈希表分成了多个段,每个段都是一个独立的哈希表,每个段都可以被不同的线程访问。这样,当多个线程同时访问ConcurrentHashMap时,它们可以同时访问不同的段,从而避免了线程之间的竞争,提高了并发性能。
本实施例首先需要定义全局变量atomic标识InfoMap(即Map),类型设置为ConcurrentHashMap,它是一种存储K-V数据结构的可靠容器。在Map中存储key和value,以及key和value之间的关系。将key的值作为业务类型,将value的值作为标识信息组,value中存储的值包括最大标识和最小标识。其中,最小标识是原子类型变量,能够保证获取标识的可靠性。其中,标识可以为一串数字、一串英文或一串数字和英文的组合。优选地,本实施例中的标识由若干数字组成。
在一些实施方式的全局唯一标识生成方法中,如图2所示,接收标识请求信息,并基于标识请求信息获取标识信息组,包括:
S111,接收标识请求信息,通过Map接口获取待验证标识信息组,判断待验证标识信息组是否为空。
具体地,当某个服务器需要获取标识时,则会先发送一个标识请求信息,该请求信息中包括业务种类,例如user、order等。当系统接收到标识请求信息时,根据标识请求信息中的业务种类通过Map接口向获取对应的标识信息组,因为还需要判断此时获取的标识信息组是否为空数据,因此将此时获取的标识信息组作为待验证标识信息组进行后续的验证。这种出现空数据的情况一般出现在首次建立Map后。示范性地,若请求信息中的业务种类为order,则会根据关系映射找到order对应的标识信息组,并获取该标识信息组。
S112,若待验证标识信息组不为空,则将待验证标识信息组作为标识信息组。
具体地,经过验证成功后的待验证标识信息组才会作为标识信息组,然后基于该标识信息组进行后续的流程,并产生对应的全局唯一标识,然后将产生的全局唯一标识返回至对应标识请求信息的服务器。
S113,若待验证标识信息组为空,则对所述Map接口进行加锁,以防止在构建新的标识信息组时,其他线程同时构建新的标识信息组。
S114,重新通过所述Map接口获取新的待验证标识信息组。
S115,若新的待验证标识信息组为空,则基于第二预设递增数向Redis服务器获取新的最大标识。
S116,基于第二预设递增数和新的最大标识,构建新的标识信息组,并将新的标识信息组作为标识信息组。
具体地,若标识信息组为空,则代表最大标识和最小标识都为null。因此需要对map接口进行加锁,防止构建新的标识信息组时,其它线程会因为标识信息组为空都去构建新的标识信息组。
另外,因为对Map接口加锁后,本线程会进行构建新的标识信息组,而其他线程会继续等待开锁,当本线程将新的标识信息组构建完毕后,则将新的标识信息放入Map中,并开锁,且将新的标识信息作为标识信息组。而开锁后,其他的线程需要重新通过Map接口获取新的待验证标识信息组,因此,本实施例增加重新获取标识信息组这一步骤。
若新的待验证标识信息组为空,则会向Redis服务器发送获取最大标识的请求,该请求中包括第二预设递增数,当Redis服务器返回新的最大标识时,再基于第二预设递增数和新的最大标识,构建新的标识信息组。
其中,第二预设递增数可以为1~10000中任一个,选择过小,会增加连接Redis服务器的次数,选择过大,会造成标识的浪费。优选地,第二预设递增数为1000,这里不做限定。需要说明的是,每次构建新的标识信息组都会连接Redis服务器,并将新的标识信息组存储在Map中(即覆盖旧的标识信息组)。
示范性地,若有2个线程(分别为线程A和线程B)依次通过Map接口获取标识信息组,当判断线程A获取到的标识信息组为空。
若对Map接口不进行加锁,则系统会访问Redis服务器开始构建新的标识信息组(假设为2000~3000),同时若线程B获取到的标识信息组也为空,此时线程B也将访问Redis服务器开始构建新的标识信息组(假设为3000~4000),此时会使得后一个构建新的标识信息组(3000~4000)会存储至Map中覆盖掉前一个新的标识信息组(2000~3000),这样会使得资源得到浪费,若后续有更多的线程同时构建,则会使得标识资源进一步浪费。
若对Map接口进行加锁,则系统会访问Redis服务器开始构建新的标识信息组(假设为2000~3000),同时若线程B因为Map接口的加锁而无法获取标识信息组,所以会继续等待开锁。直到构建新的标识信息组(假设为2000~3000)存入Map中,此时会打开Map的锁,从而线程B才会继续通过Map接口获得新的标识信息组(此时为2000~3000)。
在一些实施方式的全局唯一标识生成方法中,如图3所示,基于第二预设递增数和新的最大标识,构建新的标识信息组,并将新的标识信息组作为标识信息组,包括:
S1161,基于第二预设递增数和新的最大标识,得到新的最小标识。
S1162,基于新的最小标识和新的最大标识,构建新的标识信息组,并将新的标识信息组作为标识信息组。
具体地,基于第二预设递增数,访问Redis服务器获取新的最大标识,将最大标识减去第二预设递增数得到新的最小标识,将得到的新的最大标识和新的最小标识分别覆盖之前的最大标识和最小标识,以得到新的标识信息组。
示范性地,若当前的标识取值范围为1000~2000(即最小标识为1000,最大标识为2000),系统会带着第二预设递增数(设为1000)向Redis服务器发送获取新的最大标识的请求,当Redis服务器接到该请求后,会将当前存储已分配出去的最大标识(假设为2000)增加第二预设递增数1000,得到新的最大标识3000,将新的最大标识3000返回至系统,系统接收到新的最大标识3000后,将新的最大标识3000减去第二预设递增数1000得到新的最小标识2000,即新的标识取值范围为2000~3000。
在一些实施方式中,如图2所示,全局唯一标识生成方法还包括:
S117,若新的待验证标识信息组不为空,则将新的待验证标识信息组作为标识信息组。
S210,对最小标识进行增1,得到标识请求信息对应的过程请求标识。
具体地,当系统获取标识信息组后,提取标识信息组中的最小标识,将最小标识加1得到过程请求标识。示范性地,若获取的标识信息组中的最小标识为1000,则过程请求标识为1001。
S310,基于最小标识、最大标识和过程请求标识,生成标识请求信息对应的全局唯一标识。
具体地,全局唯一标识即最终返回至发送标识请求的服务器的标识。
在一些实施方式的全局唯一标识生成方法中,如图4所示,基于最小标识、最大标识和过程请求标识,生成标识请求信息对应的全局唯一标识,包括:
S311,若过程请求标识小于最大标识,则将过程请求标识作为全局唯一标识。
具体地,最小标识和最大标识之间的范围为可以分配的标识,并且在分配标识时,最小标识会不断加一,即每分配一个标识时,则对最小标识加一,直至将该范围内的所有标识分配完后,再向Redis服务器获取下一批的标识,即获取最大标识。
最小标识和最大标识之间的标识都属于符合规则的正常标识,若超出该范围则属于异常标识。因此需要判断过程请求标识是否为正常标识,若验证为正常标识则直接作为全局唯一标识返回至待请求标识的服务器。若过程请求标识小于最大标识则表示该过程请求标识属于最小标识至最大标识的范围,即正常标识。
示范性地,若最小标识为1000,最大标识为2000,则可以分配的标识的取值范围为1000~2000,若当前的最小标识为1050,则加一后为1051,而1051属于1000~2000的范围之中,所以1051属于正常标识,验证成功。
S312,若过程请求标识等于最大标识,则将过程请求标识作为全局唯一标识,并基于第一预设递增数向Redis服务器获取新的最大标识和新的最小标识。
S313,基于新的最大标识和新的最小标识,对后续的标识请求信息生成对应的全局唯一标识。
具体地,当最小标识加一后刚好等于最大标识,则代表当前Map中的标识已被分配完毕,需要再次连接Redis服务器获取下一批标识,则会先向Redis服务器发送获取最大标识的请求,该请求中包括当前的最大标识和第一预设递增数,当Redis服务器接收到该请求后,将最大标识递增第一预设递增数以得到新的最大标识,并将新的最大标识返回。然后基于接收到的最大标识和第一预设递增数,得到新的最小标识。
示范性地,若最小标识为3000,最大标识为4000,当最小标识加到了3999时,接收到某个服务器的标识请求信息,则会将最小标识3999加1,得到过程请求标识4000,发现过程请求标识4000等于最大标识4000,则向Redis服务器获取新的最大标识,若第一预设递增数为1000,则新的最大标识为5000。将新的最大标识减去第一预设递增数1000后得到新的最小标识4000。此时又有1000个可分配的标识,并继续将这1000个标识依次分配完。
在一些实施方式的全局唯一标识生成方法中,若过程请求标识等于最大标识,则在获取新的最大标识和新的最小标识之前,还包括:
对标识信息组进行加锁,用于在获取新的最大标识和新的最小标识之前防止其他线程基于标识信息组获取全局唯一标识。
具体地,在实际应用中,会存在多个服务器(多个线程)同时发送标识请求信息,当某个线程第一个出现过程过请求标识等于最大标识时,其它线程也向标识信息组进行取值,这样取到的值全是超出正常标识的范围,即都大于最大标识,为了减少这种情况发生,需要当某个线程第一个出现过程过请求标识等于最大标识时,对标识信息组进行加锁,以停止其它线程继续取值,此时其它线程继续等待。当获取新的标识信息组后,解开锁,其它线程再从新的标识信息组中取值。
在一些实施方中,全局唯一标识生成方法还包括:
若过程请求标识大于最大标识,则基于新的最大标识和新的最小标识,生成对应的全局唯一标识。
具体地,多个服务器(多个线程)同时发送标识请求信息时,若当前的可分配标识数量小于同时发送标识请求信息的数量,则会出现过程请求标识大于最大标识的情况。此时,超过最大标识的标识属于异常标识。因此,需要重新赋值。但是这种情况一般会和“过程请求标识等于最大标识”的情况同时发生。因此会触发:“基于第一预设递增数向Redis服务器获取新的最大标识和新的最小标识”。所以需要等到获取到新的标识信息组时,然后再根据新的标识信息组来将异常的过程请求标识重新进行赋值。
示范性地,当有3个线程同时发送标识请求信息,若当前的最小标识为2999,最大标识为3000,则首先会将最小标识依次加一,一共加三次,分别得到3000、3001、3002这三个标识,然后再对这三个标识进行验证,明显,后两个标识(3001和3002)大于最大标识3000,属于异常标识,因此,需要进行重新赋值。由于可能存在其他线程在本线程向Redis服务器获取新的标识之前取走了若干标识,所以假设本线程此次获取的新的最大标识为9000,第一预设递增数为1000,即新的最小标识为8000,即可分配的标识的范围为8000~9000,说明3000~8000的标识已被其他线程取走。
其中,Redis服务器每次分配标识数量时,都会根据接受到的预设递增数和存储的已分配出去的最大标识来分配。若接收到的预设递增数为1000,而当前已分配出去的最大标识为8000,则返回的新的最大标识为9000。
进一步地,本申请还涉及到标识对应的种类,因此在上述分配标识之前,需要先获取标识对应的种类,再根据对应的种类来获取对应的标识。
示范性地,若接收到一条标识请求信息,若标识请求信息包括需要获取的标识种类为user,则会获取user对应的最小标识加1,再经过后续同上述的标识获取的步骤即可。
本申请实施例提出一种全局唯一标识生成方法,通过一次性存储多个标识,存储的多个标识的范围为最小标识至最大标识,当每次需要产生全局唯一标识时,则利用最小标识依次增加1来产生对应的请求的标识。本方案不用每次产生全局唯一标识时都向Redis服务器获取,有效减少产生标识时间,提高产生标识效率,同时也减小Redis服务器的压力。
同时本申请还考虑到首次获取标识信息组为空、多个线程同时获取标识等情况,增加加锁功能和异常标识的重新赋值功能,减少网络开销,提升标识获取的速度,以及提高整个系统的获取标识的效率。
本申请的另一实施例还提出一种全局唯一标识生成系统400,如图5所示,系统400包括:
获取单元410,用于接收标识请求信息,并基于标识请求信息获取标识信息组,标识信息组包括最小标识和最大标识。
增加单元420,用于对最小标识进行增1,得到标识请求信息对应的过程请求标识。
生成单元430,用于基于最小标识、最大标识和过程请求标识,生成标识请求信息对应的全局唯一标识。
本申请的另一实施例还提出一种计算机,包括存储单元和处理单元,存储单元中存储有计算机程序,处理单元通过调用存储单元中存储的计算机程序,执行如上述的全局唯一标识生成方法的步骤。
本申请的另一实施例还提出一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序适于处理器进行加载,以执行如上述的全局唯一标识生成方法的步骤。
可以理解,本实施例的方法步骤对应于上述实施例中的全局唯一标识生成方法,其中,上述全局唯一标识生成方法的可选项同样适用于本实施例,这里不再重复描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。
Claims (6)
1.一种全局唯一标识生成方法,其特征在于,定义全局变量atomic标识Map,所述Map的类型设置为ConcurrentHashMap;其中,ConcurrentHashMap为Java中的一个线程安全的哈希表,将哈希表分成多个段,每段都是一个独立的哈希表,当多个线程同时访问ConcurrentHashMap时,则每个线程可同时访问不同段,所述方法包括:
接收标识请求信息,通过Map接口获取待验证标识信息组,判断所述待验证标识信息组是否为空;若所述待验证标识信息组不为空,则将所述待验证标识信息组作为所述标识信息组;
若所述待验证标识信息组为空,则对所述Map接口进行加锁,以防止其它线程因为所述待验证标识信息组为空都去构建新的标识信息组;
重新通过所述Map接口获取新的待验证标识信息组;
若所述新的待验证标识信息组为空,则基于第二预设递增数向Redis服务器获取新的最大标识;
基于所述第二预设递增数和所述新的最大标识,构建新的标识信息组,并将所述新的标识信息组作为所述标识信息组,所述标识信息组包括最小标识和最大标识;
对所述最小标识进行增一,得到所述标识请求信息对应的过程请求标识;
若所述过程请求标识小于所述最大标识,则将所述过程请求标识作为所述全局唯一标识;
若所述过程请求标识等于所述最大标识,则对所述标识信息组进行加锁,并将所述过程请求标识作为所述全局唯一标识,并基于第一预设递增数向Redis服务器获取新的最大标识和新的最小标识;
基于所述新的最大标识和所述新的最小标识,对后续的标识请求信息生成对应的全局唯一标识;
若所述过程请求标识大于所述最大标识,则基于所述新的最大标识和所述新的最小标识,生成对应的全局唯一标识。
2.根据权利要求1所述的全局唯一标识生成方法,其特征在于,还包括:
若所述新的待验证标识信息组不为空,则将所述新的待验证标识信息组作为所述标识信息组。
3.根据权利要求1所述的全局唯一标识生成方法,其特征在于,基于所述第二预设递增数和所述新的最大标识,构建新的标识信息组,并将所述新的标识信息组作为所述标识信息组,包括:
基于所述第二预设递增数和所述新的最大标识,得到新的最小标识;
基于所述新的最小标识和所述新的最大标识,构建新的标识信息组,并将所述新的标识信息组作为所述标识信息组。
4.一种全局唯一标识生成系统,其特征在于,定义全局变量atomic标识Map,所述Map的类型设置为ConcurrentHashMap;其中,ConcurrentHashMap为Java中的一个线程安全的哈希表,将哈希表分成多个段,每段都是一个独立的哈希表,当多个线程同时访问ConcurrentHashMap时,则每个线程可同时访问不同段,所述系统包括:
获取单元,用于接收标识请求信息,通过Map接口获取待验证标识信息组,判断所述待验证标识信息组是否为空;
若所述待验证标识信息组不为空,则将所述待验证标识信息组作为所述标识信息组;
若所述待验证标识信息组为空,则对所述Map接口进行加锁,以防止其它线程因为所述待验证标识信息组为空都去构建新的标识信息组;
重新通过所述Map接口获取新的待验证标识信息组;
若所述新的待验证标识信息组为空,则基于第二预设递增数向Redis服务器获取新的最大标识;
基于所述第二预设递增数和所述新的最大标识,构建新的标识信息组,并将所述新的标识信息组作为所述标识信息组,所述标识信息组包括最小标识和最大标识;
增加单元,用于对所述最小标识进行增1,得到所述标识请求信息对应的过程请求标识;
生成单元,用于若所述过程请求标识小于所述最大标识,则将所述过程请求标识作为所述全局唯一标识;
若所述过程请求标识等于所述最大标识,则对所述标识信息组进行加锁,并将所述过程请求标识作为所述全局唯一标识,并基于第一预设递增数向Redis服务器获取新的最大标识和新的最小标识;
基于所述新的最大标识和所述新的最小标识,对后续的标识请求信息生成对应的全局唯一标识;
若所述过程请求标识大于所述最大标识,则基于所述新的最大标识和所述新的最小标识,生成对应的全局唯一标识。
5.一种计算机,其特征在于,包括存储单元和处理单元,所述存储单元中存储有计算机程序,所述处理单元通过调用所述存储单元中存储的所述计算机程序,执行如权利要求1~3任一项所述的全局唯一标识生成方法的步骤。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于处理器进行加载,以执行如权利要求1~3任一项所述的全局唯一标识生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310644736.1A CN116366609B (zh) | 2023-06-02 | 2023-06-02 | 全局唯一标识生成方法、系统、计算机和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310644736.1A CN116366609B (zh) | 2023-06-02 | 2023-06-02 | 全局唯一标识生成方法、系统、计算机和可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116366609A CN116366609A (zh) | 2023-06-30 |
CN116366609B true CN116366609B (zh) | 2023-09-01 |
Family
ID=86913404
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310644736.1A Active CN116366609B (zh) | 2023-06-02 | 2023-06-02 | 全局唯一标识生成方法、系统、计算机和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116366609B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109101528A (zh) * | 2018-06-21 | 2018-12-28 | 深圳市买买提信息科技有限公司 | 数据处理方法、数据处理装置及电子设备 |
CN110109912A (zh) * | 2018-01-15 | 2019-08-09 | 北京京东尚科信息技术有限公司 | 一种标识符生成方法和装置 |
CN110555078A (zh) * | 2019-09-02 | 2019-12-10 | 上海摩库数据技术有限公司 | 分布式id生成 |
CN110995703A (zh) * | 2019-12-03 | 2020-04-10 | 望海康信(北京)科技股份公司 | 业务处理请求的处理方法、装置、电子设备 |
CN112115133A (zh) * | 2020-08-04 | 2020-12-22 | 北京健康之家科技有限公司 | 分布式全局唯一id生成方法和系统、存储介质、设备 |
CN114168607A (zh) * | 2021-12-13 | 2022-03-11 | 工银科技有限公司 | 全局序列号生成方法、装置、设备、介质和产品 |
WO2022227314A1 (zh) * | 2021-04-25 | 2022-11-03 | 深圳壹账通智能科技有限公司 | 动态同步测试方法、装置、设备及存储介质 |
-
2023
- 2023-06-02 CN CN202310644736.1A patent/CN116366609B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110109912A (zh) * | 2018-01-15 | 2019-08-09 | 北京京东尚科信息技术有限公司 | 一种标识符生成方法和装置 |
CN109101528A (zh) * | 2018-06-21 | 2018-12-28 | 深圳市买买提信息科技有限公司 | 数据处理方法、数据处理装置及电子设备 |
CN110555078A (zh) * | 2019-09-02 | 2019-12-10 | 上海摩库数据技术有限公司 | 分布式id生成 |
CN110995703A (zh) * | 2019-12-03 | 2020-04-10 | 望海康信(北京)科技股份公司 | 业务处理请求的处理方法、装置、电子设备 |
CN112115133A (zh) * | 2020-08-04 | 2020-12-22 | 北京健康之家科技有限公司 | 分布式全局唯一id生成方法和系统、存储介质、设备 |
WO2022227314A1 (zh) * | 2021-04-25 | 2022-11-03 | 深圳壹账通智能科技有限公司 | 动态同步测试方法、装置、设备及存储介质 |
CN114168607A (zh) * | 2021-12-13 | 2022-03-11 | 工银科技有限公司 | 全局序列号生成方法、装置、设备、介质和产品 |
Also Published As
Publication number | Publication date |
---|---|
CN116366609A (zh) | 2023-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110489417B (zh) | 一种数据处理方法及相关设备 | |
CN110119292B (zh) | 系统运行参数查询方法、匹配方法、装置及节点设备 | |
US7668831B2 (en) | Assigning unique identification numbers to new user accounts and groups in a computing environment with multiple registries | |
CN104065636B (zh) | 数据处理方法和系统 | |
CN106570097B (zh) | 序列生成方法及装置 | |
CN109032796B (zh) | 一种数据处理方法和装置 | |
CN111400355B (zh) | 一种数据查询方法及装置 | |
US20080320494A1 (en) | Data processing method, data processing apparatus, and data processing program | |
CN111399993B (zh) | 一种关联事务请求的跨链实现方法、装置、设备和介质 | |
CN111061681A (zh) | 一种基于大小写不敏感的目录分片方法、装置及存储介质 | |
CN108304251B (zh) | 线程同步方法及服务器 | |
CN116366609B (zh) | 全局唯一标识生成方法、系统、计算机和可读存储介质 | |
CN112118189B (zh) | 一种流量采样方法、计算机设备及计算机可读存储介质 | |
CA3134297A1 (en) | Message pushing method and device thereof, computer equipment and storage medium | |
US8281000B1 (en) | Variable-length nonce generation | |
CN116204546A (zh) | Sql预编译方法、装置、服务器和存储介质 | |
US20060136636A1 (en) | System and method for resolving conflicts of re-locking resources | |
US20080022372A1 (en) | User authority management system and method for managing users | |
CN115002078B (zh) | 一种id生成方法及装置 | |
CN117150569B (zh) | 一种银行业务库的安全交互方法和系统 | |
CN115168003A (zh) | 一种集群服务器的定时任务处理方法及装置 | |
CN117057912A (zh) | 针对区块链网络的数据处理方法及相关产品 | |
CN117938936A (zh) | 一种识别租户标识的方法、系统、计算设备及介质 | |
CN113961647A (zh) | 一种数据反序列化方法、装置及相关设备 | |
CN113672621A (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 |