CN111917897A - 标识生成方法、装置、设备及存储介质 - Google Patents
标识生成方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111917897A CN111917897A CN202010681542.5A CN202010681542A CN111917897A CN 111917897 A CN111917897 A CN 111917897A CN 202010681542 A CN202010681542 A CN 202010681542A CN 111917897 A CN111917897 A CN 111917897A
- Authority
- CN
- China
- Prior art keywords
- identifier
- generator
- generating
- target
- serial number
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 133
- 230000008569 process Effects 0.000 claims abstract description 80
- 230000004044 response Effects 0.000 claims abstract description 18
- 238000012423 maintenance Methods 0.000 claims description 22
- 238000004422 calculation algorithm Methods 0.000 claims description 14
- 238000012545 processing Methods 0.000 claims description 9
- 230000002159 abnormal effect Effects 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 11
- 241000533950 Leucojum Species 0.000 description 4
- 230000001186 cumulative effect Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
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/30—Managing network names, e.g. use of aliases or nicknames
- H04L61/3015—Name registration, generation or assignment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
- G06F16/2322—Optimistic concurrency control using timestamps
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请公开了一种标识生成方法、装置、设备及存储介质,属于计算机技术领域。所述方法包括:响应于标识生成请求,获取当前时间戳。根据生成上一个标识的历史时间戳与当前时间戳的时间先后关系,从至少两个标识生成器中确定出目标标识生成器。基于目标标识生成器,根据当前时间戳、生成器序号、设备标识以及自增序列号生成标识。当出现时钟回拨的情况时,标识生成进程会切换用于生成ID的目标标识生成器,直至时钟恢复正常。生成器序号为目标标识生成器在至少两个标识生成器中的序号,每个标识生成器的序号不同。保证了切换目标标识生成器时,生成的ID的唯一性。提升了生成ID的可靠性。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种标识生成方法、装置、设备及存储介质。
背景技术
现如今大部分的网络服务,都需要使用ID(Identity document)来标识各类数据对象。例如用户的帐号、网络购物的订单号以及网络游戏中的角色号等。ID指表示唯一性的数字或字符串。计算机设备在生成ID时,需要保证ID的唯一性。
目前,计算机设备通常使用雪花(snowflake)算法来生成ID。通过雪花算法生成的ID的长度为64比特(binary digit,bit)。其中,最高位bit始终为0,表示正整数;接下来41bit表示生成ID的时刻距离目标时刻的累计毫秒数;之后10bit表示生成ID的设备的序号;最后12bit为自增序列,表示生成的ID的序号。计算机设备会每毫秒清零一次该自增序列。对于同一计算机设备来说,生成的ID中的累计毫秒数以及自增序列用于保证该ID的唯一性。
当出现时钟回拨的情况时,使用雪花算法生成的ID中的累计毫秒数和自增序列可能会出现重复的情况,导致生成的ID重复。无法保证生成的ID的唯一性,生成ID的可靠性较低。
发明内容
本申请提供了一种标识生成方法、装置、设备及存储介质,可以提升生成ID的可靠性。所述技术方案如下:
根据本申请的一方面,提供了一种标识生成方法,所述方法包括:
响应于标识生成请求,获取当前时间戳;
根据生成上一个标识的历史时间戳与所述当前时间戳的时间先后关系,从至少两个标识生成器中确定出目标标识生成器;
基于所述目标标识生成器,根据所述当前时间戳、生成器序号、设备标识以及自增序列号生成所述标识;
其中,所述生成器序号为所述目标标识生成器在所述至少两个标识生成器中的序号,每个所述标识生成器的所述序号不同,所述设备标识为生成所述标识的计算机设备的标识。
根据本申请的另一方面,提供了一种标识生成装置,所述装置包括:
第一获取模块,用于响应于标识生成请求,获取当前时间戳;
确定模块,用于根据生成上一个标识的历史时间戳与所述当前时间戳的时间先后关系,从至少两个标识生成器中确定出目标标识生成器;
生成模块,用于基于所述目标标识生成器,根据所述当前时间戳、生成器序号、设备标识以及自增序列号生成所述标识;
其中,所述生成器序号为所述目标标识生成器在所述至少两个标识生成器中的序号,每个所述标识生成器的所述序号不同,所述设备标识为生成所述标识的计算机设备的标识。
可选地,所述确定模块,用于:
响应于所述当前时间戳大于或等于所述历史时间戳,将所述生成上一个标识的第一标识生成器确定为所述目标标识生成器;
响应于所述当前时间戳小于所述历史时间戳,将与所述第一标识生成器不同的第二标识生成器确定为所述目标标识生成器。
可选地,所述生成模块,用于:
基于所述目标标识生成器,根据所述当前时间戳、所述生成器序号、所述设备标识、所述进程标识以及所述自增序列号生成所述标识;
其中,所述进程标识对应的标识生成进程中包括所述至少两个标识生成器。
可选地,所述生成模块,用于:
通过MD5加密算法处理所述设备标识,得到二进制序列;
从所述二进制序列中获取目标二进制序列;
基于所述目标标识生成器,根据所述当前时间戳、所述生成器序号、所述目标二进制序列以及所述自增序列号生成所述标识。
可选地,所述装置还包括:
第二获取模块,用于获取计算机设备的通用唯一识别码文件;
第三获取模块,用于根据所述通用唯一识别码文件,获取所述设备标识。
可选地,所述装置还包括:
第一发送模块,用于当所述至少两个标识生成器无法生成所述标识时,发送运维警告,所述运维警告用于反映所述计算机设备处于异常状态。
可选地,所述装置还包括:
第二发送模块,用于向客户端发送所述标识。
根据本申请的又一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由所述处理器加载并执行以实现上述方面所述的标识生成方法。
根据本申请的再一方面,提供了一种计算机存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,当所述至少一条指令、所述至少一段程序、所述代码集或指令集由计算机设备的处理器加载并执行时,实现上述方面所述的标识生成方法。
根据本申请的还一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方面的各种可选实现方式中提供的标识生成方法。
本申请提供的技术方案带来的有益效果至少包括:
通过根据历史时间戳与当前时间戳的时间先后关系,确定出用于生成ID的目标标识生成器,并基于目标标识生成器生成ID。当出现时钟回拨的情况时,标识生成进程会切换用于生成ID的目标标识生成器,直至时钟恢复正常。生成的ID中的生成器序号为目标标识生成器在至少两个标识生成器中的序号,每个标识生成器的序号不同。保证了切换目标标识生成器时,生成的ID的唯一性。提升了生成ID的可靠性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个示意性实施例提供的一种标识生成系统的结构示意图;
图2是本申请实施例提供的生成标识的原理的示意图;
图3是本申请实施例提供的一种标识生成方法的流程示意图;
图4是本申请实施例提供的另一种标识生成方法的流程示意图;
图5是本申请实施例提供的一种根据当前时间戳、生成器序号、设备标识以及自增序列号生成标识的方法的流程示意图;
图6是本申请实施例提供的又一种标识生成方法的流程示意图;
图7是本申请实施例提供的一种标识生成装置的结构示意图;
图8是本申请实施例提供的另一种标识生成装置的结构示意图;
图9是本申请实施例提供的又一种标识生成装置的结构示意图;
图10是本申请实施例提供的再一种标识生成装置的结构示意图;
图11是本申请实施例提供的一种服务器的结构示意图。
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
图1是本申请一个示意性实施例提供的一种标识生成系统的结构示意图。如图1所示,标识生成系统100中包括终端101以及服务器102a-102d(统称为服务器102)。服务器102a-102d组成分布式系统,用于生成ID(也称为标识)。图1中服务器的数量仅用作示意,不作为对本申请实施例提供的标识生成系统的限制。
可选地,服务器102为一台服务器,或者由若干台服务器组成的服务器集群,或者是一个云计算服务中心中的虚拟服务器等等,在此不做限定。终端101为智能手机、平板电脑、台式电脑和笔记本电脑等。服务器102a和终端101之间通过有线网络或无线网络连接,用于接收终端101发送的标识生成请求,并将生成的ID返回给终端101。服务器102a和服务器102b-102d之间通过有线网络或无线网络连接。服务器102a还用于确定生成ID的服务器,并将接收到的标识生成请求转发给负责生成ID的服务器。可选地,服务器102a-102d中至少有一台服务器负责生成ID。服务器102a为时钟服务器,与分布式系统外部的公共时钟服务器建立无线连接,用于校准分布式系统中其它服务器的本地时间。
需要说明的是,终端101上安装有客户端,终端101通过客户端与服务器102a连接,该服务器102a为客户端对应的服务器。示例地,该客户端指网络游戏客户端、即时通讯客户端和金融客户端等。服务器102a-102d中部署有标识生成进程,该标识生成进程中包括至少两个标识生成器。服务器通过该标识生成器生成ID。在一种示例中,客户端是网络游戏客户端,服务器是网络游戏服务器,服务器生成的ID用于标识用户创建的游戏角色。在另一种示例中,客户端是网络购物客户端,服务器是网络购物服务器,服务器生成的ID用于标识用户的网购订单。在再一种示例中,客户端是即时通讯客户端,服务器是即时通讯服务器,服务器生成的ID用于标识用户创建的帐号。
图2是本申请实施例提供的生成标识的原理的示意图。如图2所示,服务器202a-202c组成分布式系统,用于生成ID。终端201与该分布式系统通过终端201上的客户端建立连接。示例地,分布式系统生成的ID203的前32bit的二进制序列203a表示生成ID的时刻距离目标时刻的累计秒数,之后3bit的二进制序列203b表示生成ID的标识生成器在全部标识生成器中的序号,之后24bit的二进制序列203c表示生成ID的计算机设备的标识,之后32bit的二进制序列203d表示生成ID的标识生成进程的标识,最后32bit的二进制序列203e为自增序列。该目标时刻一般为格林威治时间1970年01月01日00时00分00秒。该标识生成进程中包括至少两个标识生成器,每个标识生成器对应的序号不同,标识生成进程根据生成ID的时间戳的变化,每秒清零一次自增序列,即服务器通过标识生成进程每秒能够生成209万个具备唯一性的ID。生成ID的时间戳的单位为秒。
当终端201上的客户端检测到生成标识的请求时,向服务器202发送该标识生成请求。示例地,服务器202a根据该标识生成请求,选择由服务器202b生成ID,并向服务器202b发送该标识生成请求。服务器202b中的标识生成进程根据该标识生成请求,获取当前时间戳T1并与生成上一个ID的历史时间戳T2进行时间先后比较。当T1大于或等于T2时,由标识生成进程中生成上一个ID的标识生成器继续生成ID。时钟回拨指服务器的本地时间出现回退。例如前一秒为2019-04-15 15:00:01,后一秒变为2019-04-15 15:00:00。由于地球自转的不均匀性和长期变慢性,负责校准时间的公共时钟服务器可能会调整时间。例如将时间向前调整1秒或者向后调整1秒。公共时钟服务器校准时间时,通过该公共时钟服务器校准时间的服务器可能出现时钟回拨。或者,服务器由于计时模块发生故障,出现时钟回拨。当服务器202b出现时钟回拨,即当T1小于T2时,标识生成进程将与生成上一个ID不同的标识生成器确定为目标标识生成器,并再次执行标识生成的步骤。由于时钟回拨通常在毫秒级别,服务器202b中的标识生成进程通过切换目标标识生成器,实现当ID中的时间戳与自增序列号相同时,保证ID中的生成器序号不同,从而保证生成的ID的唯一性。提升了生成ID的可靠性。
可选地,当服务器202b中的标识生成进程中的标识生成器全部都不能生成ID时,服务器202b向服务器202a发送运维警告。可选地,服务器202b还向与服务器202b建立连接的标识生成系统的运维人员的终端发送该运维警告。该运维警告用于反映服务器202b处于异常状态。服务器202a根据该运维警告,选择其它服务器继续生成ID,例如选择服务器202c继续生成ID。实现当分布式系统中的某一服务器出现异常时,该分布式系统能够继续生成ID。提升了标识生成系统的稳定性,进一步提升了生成ID的可靠性。
图3是本申请实施例提供的一种标识生成方法的流程示意图。该方法可以用于如图2所示的系统中的任一服务器。如图3所示,该方法包括:
步骤301、响应于标识生成请求,获取当前时间戳。
可选地,该标识生成请求由如图1所示的系统中的终端发送,或者由服务器从本地获取。可选地,该时间戳为Unix时间戳(Unix timestamp)。服务器通过标识生成进程,确定响应该标识生成请求,开始生成ID时的本地时刻,从而获取当前时间戳。
步骤302、根据生成上一个标识的历史时间戳与所述当前时间戳的时间先后关系,从至少两个标识生成器中确定出目标标识生成器。
标识生成进程中包括至少两个标识生成器,目标标识生成器用于生成ID。生成上一个标识的历史时间戳是指:服务器通过标识生成进程生成上一个ID的时刻对应的时间戳。
可选地,当当前时间戳大于或等于历史时间戳时,服务器通过标识生成进程将生成上一个标识的第一标识生成器确定为目标标识生成器;当当前时间戳小于历史时间戳时,服务器通过标识生成进程将与第一标识生成器不同的第二标识生成器确定为目标标识生成器,并再次执行确定目标标识生成器的步骤。
步骤303、基于目标标识生成器,根据当前时间戳、生成器序号、设备标识以及自增序列号生成标识。
该生成器序号为目标标识生成器在至少两个标识生成器中的序号,每个标识生成器的序号不同。该设备标识为生成标识的计算机设备的标识,即生成标识的服务器的标识。
当前时间戳用于保证在不同时刻服务器通过标识生成进程生成的ID之间不存在重复;生成器序号用于保证服务器通过标识生成进程使用不同生成器生成的ID之间不存在重复;设备标识用于保证在不同的服务器中生成的ID之间不存在重复;自增序列号用于保证服务器通过标识生成进程在相同时刻生成的ID之间不存在重复。
综上所述,本申请实施例提供的标识生成方法,根据历史时间戳与当前时间戳的时间先后关系,确定出用于生成ID的目标标识生成器,并基于目标标识生成器生成ID。当出现时钟回拨的情况时,标识生成进程会切换用于生成ID的目标标识生成器,直至时钟恢复正常。生成的ID中的生成器序号为目标标识生成器在至少两个标识生成器中的序号,每个标识生成器的序号不同。保证了切换目标标识生成器时,生成的ID的唯一性。提升了生成ID的可靠性。
图4是本申请实施例提供的另一种标识生成方法的流程示意图。该方法可以用于如图2所示的系统。如图4所示,该方法包括:
步骤401、客户端向服务器发送标识生成请求。
可选地,当客户端接收到用户建立游戏角色的请求时、当客户端接收到用户建立游戏帐号的请求时以及当客户端接收到用户购买游戏装备的请求时,客户端向服务器发送该标识生成请求。
步骤402、响应于标识生成请求,服务器获取当前时间戳。
可选地,该标识生成请求由如图1所示的系统中的终端上的客户端发送,由其它服务器发送或者由服务器从本地获取。可选地,当服务器检测到为与该服务器建立连接的客户端生成标识的请求时以及当服务器检测到为与该服务器建立连接的其它服务器生成标识的请求时,服务器接收到该标识生成请求。
步骤403、服务器根据生成上一个标识的历史时间戳与当前时间戳的时间先后关系,从至少两个标识生成器中确定出目标标识生成器。
可选地,响应于当前时间戳大于或等于历史时间戳,服务器将生成上一个标识的第一标识生成器确定为目标标识生成器。或者,响应于当前时间戳小于历史时间戳,服务器将与第一标识生成器不同的第二标识生成器确定为目标标识生成器,并再次执行确定目标标识生成器的步骤。
可选地,服务器中部署有标识生成进程,该标识生成进程包括至少两个标识生成器。该标识生成进程为无状态进程,即该标识生成进程无需在服务器的运行内存中维护生成的ID的相关数据。当服务器重启时,不会由于运行内存清空,导致丢失生成的ID的相关数据。可选地,标识生成进程包括8个标识生成器。该标识生成器用于生成ID。
示例地,当前时间戳为2019-12-04 15:00:00,历史时间戳为2019-12-0415:00:00,则服务器通过标识生成进程,将第一标识生成器确定为目标标识生成器继续生成ID。当前时间戳为2019-12-04 15:00:00,历史时间戳为2019-12-0415:00:01,则服务器通过标识生成进程,将与第一标识生成器不同的第二标识生成器确定为目标标识生成器,并再次继续生成ID。
步骤404、服务器基于目标标识生成器,根据当前时间戳、生成器序号、设备标识以及自增序列号生成标识。
生成器序号为目标标识生成器在至少两个标识生成器中的序号,每个标识生成器的序号不同。设备标识为生成标识的计算机设备的标识。
可选地,如图5所示,步骤404的实现过程包括以下步骤404a至404e:
在步骤404a中,获取计算机设备的通用唯一识别码文件。
服务器获取计算机设备的通用唯一识别码文件,指服务器从本地获取服务器的通用唯一识别码文件。例如Linux操作系统的服务器,获取操作系统中/sys/class/dmi/id/product_uuid路径下的product_uuid文件,该product_uuid文件为该服务器的通用唯一识别码文件。
在步骤404b中,根据通用唯一识别码文件,获取设备标识。
可选地,该设备标识指设备的通用唯一识别码(Universally UniqueIdentifier,UUID)。
在步骤404c中,通过MD5加密算法处理设备标识,得到二进制序列。
MD5(message-digest algorithm 5)加密算法能够将输入的字符串转换为128bit的二进制序列。服务器通过MD5加密算法处理设备标识,得到的二进制序列的长度为128bit。
在步骤404d中,从二进制序列中获取目标二进制序列。
可选地,服务器将二进制序列的高24位确定为目标二进制序列,并获取该目标二进制序列。
在步骤404e中,基于目标标识生成器,根据当前时间戳、生成器序号、目标二进制序列以及自增序列号生成标识。
可选地,服务器根据当前时间戳、生成器序号、目标二进制序列以及自增序列号生成标识。指服务器根据当前时间戳对应的Unix时间戳转换出的第一二进制序列,生成器序号转换出的第二二进制序列,目标二进制序列以及自增序列号生成标识。其中,第一二进制序列的长度为32bit,第二二进制序列的长度为3bit,目标二进制序列的长度为24bit,自增序列号的长度为21bit。服务器生成的ID的高32位为第一二进制序列,之后3位为第二二进制序列,之后24位为目标二进制序列,最后21位为自增序列号。
示例地,当前时间戳为2019-12-04 15:00:00,则当前时间戳对应的Unix时间戳为1575442800,Unix时间戳转换出的二进制序列为1011101111001110101100101110000。标识生成进程中包括8个标识生成器,第3个标识生成器的生成器序号为3,则该标识生成器的生成器序号转化出的二进制序列为11。
可选地,当服务器中部署多个标识生成进程时。服务器还能够基于目标标识生成器,根据当前时间戳、生成器序号、设备标识、进程标识以及自增序列号生成标识。该进程标识为服务器中部署的标识生成进程对应的标识。该进程标识为服务器运行标识生成进程时,为标识生成进程生成的进程识别码(ProcessGroup ID,PID)。
可选地,服务器将该进程识别码进行移位,并与原始的进程识别码进行逻辑或运算,从而得到进程标识对应二进制序列。服务器根据进程标识对应二进制序列来生成ID。
示例地,在Linux操作系统中,进程识别码通常为8bit的二进制序列,例如10010101。服务器将该进程识别码左移8bit,得到1001010100000000。之后将移位得到的二进制序列与原始进程识别码进行逻辑或运算,得到1001010110010101。并根据得到的二进制序列来生成ID。在生成的ID中,进程标识对应的16bit二进制序列在自增序列号之前,目标二进制序列之后。
步骤405、服务器向客户端发送标识。
当服务器接收到的标识生成请求是由客户端发送的时,服务器在生成ID后,会向客户端发送该ID。客户端根据该ID,能够通过服务器查询该ID标识的数据对象的信息。例如客户端根据服务器生成的游戏角色的ID,通过服务器查询该游戏角色的等级和装备等信息。客户端根据服务器生成的游戏帐号的ID,通过服务器查询该游戏帐号的密码。或者,客户端根据服务器生成的游戏装备购买订单的ID,查询该游戏装备购买订单的生成时间以及费用等信息。
步骤406、当至少两个标识生成器无法生成标识时,服务器发送运维警告。
至少两个标识生成器无法生成标识,即服务器中的全部标识生成器都无法生成标识。该运维警告用于反映服务器处于异常状态,无法生成标识。可选地,服务器向服务器所在的分布式系统中的调度服务器发送该运维警告。以及,向与该服务器建立连接的运维人员的终端发送该运维警告。调度服务器能够根据该运维警告,选择分布式系统中的其它服务器继续生成ID。
综上所述,本申请实施例提供的标识生成方法,根据历史时间戳与当前时间戳的时间先后关系,确定出用于生成ID的目标标识生成器,并基于目标标识生成器生成ID。当出现时钟回拨的情况时,标识生成进程会切换用于生成ID的目标标识生成器,直至时钟恢复正常。生成的ID中的生成器序号为目标标识生成器在至少两个标识生成器中的序号,每个标识生成器的序号不同。保证了切换目标标识生成器时,生成的ID的唯一性。提升了生成ID的可靠性。
另外,当服务器无法生成标识时,发送运维警告。实现通知运维人员及时维护服务器以及让分布式系统的调度服务器选择其它服务器生成ID,提升了生成ID稳定性。通过MD5加密算法处理设备标识,能够保证生成的ID中不会泄露设备的信息,提升了信息的安全。用于生成ID的标识生成进程为无状态进程,保证了设备重启后再生成ID的可靠性。在生成ID的过程中,无需引入外部组件,并且无需额外的配置文件。避免了外部组件出现问题时对ID生成的影响,以及简化了生成ID的实现过程。
图6是本申请实施例提供的又一种标识生成方法的流程示意图。该方法可以用于如图2所示的系统。如图6所示,该方法包括:
步骤601、客户端向服务器发送标识生成请求。
步骤602、响应于标识生成请求,服务器获取当前时间戳。
步骤603、服务器根据生成上一个标识的历史时间戳与当前时间戳的时间先后关系,从八个标识生成器中确定出目标标识生成器。
服务器中部署有标识生成进程,该标识生成进程中包括八个标识生成器。八个标识生成器的序号分别为0、1、2、3、4、5、6、7。
响应于当前时间戳大于或等于历史时间戳,服务器将生成上一个标识的第一标识生成器确定为目标标识生成器。或者,响应于当前时间戳小于历史时间戳,服务器将第一标识生成器按照序号顺序将下一个标识生成器确定为目标标识生成器,并再次执行确定目标标识生成器的步骤。
步骤604、服务器基于目标标识生成器,根据当前时间戳、生成器序号、设备标识、进程标识以及自增序列号生成标识。
服务器根据当前时间戳对应的Unix时间戳转换出的32bit二进制序列,根据生成器序号转换出的3bit二进制序列,根据设备标识确定的设备标识对应的24bit二进制序列,根据进程标识确定出的16bit二进制序列以及21bit自增序列号,生成ID。
服务器通过MD5加密算法处理得到的设备的通用唯一识别码,并获取得到的二进制序列的高24位,从而得到24bit二进制序列。服务器将运行的标识生成进程的进程标识左移8位,并与原始的进程标识进行逻辑或运算,从而根据进程标识得到16bit二进制序列。
步骤605、服务器向客户端发送标识。
步骤606、当至少两个标识生成器无法生成标识时,服务器发送运维警告。
综上所述,本申请实施例提供的标识生成方法,根据历史时间戳与当前时间戳的时间先后关系,确定出用于生成ID的目标标识生成器,并基于目标标识生成器生成ID。当出现时钟回拨的情况时,标识生成进程会切换用于生成ID的目标标识生成器,直至时钟恢复正常。生成的ID中的生成器序号为目标标识生成器在八个标识生成器中的序号,每个标识生成器的序号不同。保证了切换目标标识生成器时,生成的ID的唯一性。提升了生成ID的可靠性。
另外,当服务器无法生成标识时,发送运维警告。实现通知运维人员及时维护服务器以及让分布式系统的调度服务器选择其它服务器生成ID,提升了生成ID稳定性。通过MD5加密算法处理设备标识,能够保证生成的ID中不会泄露设备的信息,提升了信息的安全。用于生成ID的标识生成进程为无状态进程,保证了设备重启后再生成ID的可靠性。在生成ID的过程中,无需引入外部组件,并且无需额外的配置文件。避免了外部组件出现问题时对ID生成的影响,以及简化了生成ID的实现过程。
需要说明的是,本申请实施例提供的标识生成方法步骤的先后顺序可以进行适当调整,步骤也可以根据情况进行相应增减,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本申请的保护范围之内,因此不再赘述。
图7是本申请实施例提供的一种标识生成装置的结构示意图。该装置可以用于如图2所示的系统中的任一服务器。如图7所示,该装置70包括:
第一获取模块701,用于响应于标识生成请求,获取当前时间戳。
确定模块702,用于根据生成上一个标识的历史时间戳与当前时间戳的时间先后关系,从至少两个标识生成器中确定出目标标识生成器。
生成模块703,用于基于目标标识生成器,根据当前时间戳、生成器序号、设备标识以及自增序列号生成标识。
其中,生成器序号为目标标识生成器在至少两个标识生成器中的序号,每个标识生成器的序号不同,设备标识为生成标识的计算机设备的标识。
综上所述,本申请实施例提供的标识生成装置,根据历史时间戳与当前时间戳的时间先后关系,通过确定模块确定出用于生成ID的目标标识生成器,并基于目标标识生成器通过生成模块生成ID。当出现时钟回拨的情况时,标识生成进程会切换用于生成ID的目标标识生成器,直至时钟恢复正常。生成的ID中的生成器序号为目标标识生成器在至少两个标识生成器中的序号,每个标识生成器的序号不同。保证了切换目标标识生成器时,生成的ID的唯一性。提升了生成ID的可靠性。
可选地,确定模块702,用于:
响应于当前时间戳大于或等于历史时间戳,将生成上一个标识的第一标识生成器确定为目标标识生成器。
响应于当前时间戳小于历史时间戳,将与第一标识生成器不同的第二标识生成器确定为目标标识生成器。
可选地,生成模块703,用于:
基于目标标识生成器,根据当前时间戳、生成器序号、设备标识、进程标识以及自增序列号生成标识。其中,进程标识对应的标识生成进程中包括至少两个标识生成器。
可选地,生成模块703,用于:
通过MD5加密算法处理设备标识,得到二进制序列。
从二进制序列中获取目标二进制序列。
基于目标标识生成器,根据当前时间戳、生成器序号、目标二进制序列以及自增序列号生成标识。
可选地,如图8所示,装置70还包括:
第二获取模块704,用于获取计算机设备的通用唯一识别码文件。
第三获取模块705,用于根据通用唯一识别码文件,获取设备标识。
可选地,如图9所示,装置70还包括:
第一发送模块706,用于当至少两个标识生成器无法生成标识时,发送运维警告,运维警告用于反映计算机设备处于异常状态。
可选地,如图10所示,装置70还包括:
第二发送模块707,用于向客户端发送标识。
综上所述,本申请实施例提供的标识生成装置,根据历史时间戳与当前时间戳的时间先后关系,通过确定模块确定出用于生成ID的目标标识生成器,并基于目标标识生成器通过生成模块生成ID。当出现时钟回拨的情况时,标识生成进程会切换用于生成ID的目标标识生成器,直至时钟恢复正常。生成的ID中的生成器序号为目标标识生成器在至少两个标识生成器中的序号,每个标识生成器的序号不同。保证了切换目标标识生成器时,生成的ID的唯一性。提升了生成ID的可靠性。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和各模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请的实施例还提供了一种计算机设备,该计算机设备包括:处理器和存储器,该装置存储器中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现上述各方法实施例提供的直播时长计算方法。
可选地,该计算机设备为服务器。示例地,图11是本申请实施例提供的一种服务器的结构示意图。
所述服务器1100包括中央处理单元(Central Processing Unit,CPU)1101、包括随机存取存储器(Random Access Memory,RAM)1102和只读存储器(Read-Only Memory,ROM)1103的系统存储器1104,以及连接系统存储器1104和中央处理单元1101的系统总线1105。所述计算机设备1100还包括帮助计算机设备内的各个器件之间传输信息的基本输入/输出系统(Input/Output系统,I/O系统)1106,和用于存储操作系统1113、应用程序1114和其他程序模块1115的大容量存储设备1107。
所述基本输入/输出系统1106包括有用于显示信息的显示器1108和用于用户输入信息的诸如鼠标、键盘之类的输入设备1109。其中所述显示器1108和输入设备1109都通过连接到系统总线1105的输入输出控制器1110连接到中央处理单元1101。所述基本输入/输出系统1106还可以包括输入输出控制器1110以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1110还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备1107通过连接到系统总线1105的大容量存储控制器(未示出)连接到中央处理单元1101。所述大容量存储设备1107及其相关联的计算机可读存储介质为服务器1100提供非易失性存储。也就是说,所述大容量存储设备1107可以包括诸如硬盘或者只读光盘(Compact Disc Read-Only Memory,CD-ROM)驱动器之类的计算机可读存储介质(未示出)。
不失一般性,所述计算机可读存储介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读存储指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、可擦除可编程只读寄存器(Erasable Programmable Read OnlyMemory,EPROM)、电子抹除式可复写只读存储器(Electrically-Erasable ProgrammableRead-Only Memory,EEPROM)、闪存或其他固态存储设备,CD-ROM、数字多功能光盘(DigitalVersatile Disc,DVD)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器1104和大容量存储设备1107可以统称为存储器。
存储器存储有一个或多个程序,一个或多个程序被配置成由一个或多个中央处理单元1101执行,一个或多个程序包含用于实现上述方法实施例的指令,中央处理单元1101执行该一个或多个程序实现上述各个方法实施例提供的方法。
根据本申请的各种实施例,所述服务器1100还可以通过诸如因特网等网络连接到网络上的远程服务器运行。也即服务器1100可以通过连接在所述系统总线1105上的网络接口单1111连接到网络1112,或者说,也可以使用网络接口单元1111来连接到其他类型的网络或远程服务器系统(未示出)。
所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,所述一个或者一个以上程序包含用于进行本申请实施例提供的方法中由服务器所执行的步骤。
本申请实施例中还提供了一种计算机存储介质,该存储介质中可以存储有至少一条指令、至少一段程序、代码集或指令集,当该至少一条指令、至少一段程序、代码集或指令集由计算机设备的处理器加载并执行时,实现上述各方法实施例提供的标识生成方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同切换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种标识生成方法,其特征在于,所述方法包括:
响应于标识生成请求,获取当前时间戳;
根据生成上一个标识的历史时间戳与所述当前时间戳的时间先后关系,从至少两个标识生成器中确定出目标标识生成器;
基于所述目标标识生成器,根据所述当前时间戳、生成器序号、设备标识以及自增序列号生成所述标识;
其中,所述生成器序号为所述目标标识生成器在所述至少两个标识生成器中的序号,每个所述标识生成器的所述序号不同,所述设备标识为生成所述标识的计算机设备的标识。
2.根据权利要求1所述的方法,其特征在于,所述根据生成上一个标识的历史时间戳与所述当前时间戳的时间先后关系,从至少两个标识生成器中确定出目标标识生成器,包括:
响应于所述当前时间戳大于或等于所述历史时间戳,将所述生成上一个标识的第一标识生成器确定为所述目标标识生成器;
响应于所述当前时间戳小于所述历史时间戳,将与所述第一标识生成器不同的第二标识生成器确定为所述目标标识生成器。
3.根据权利要求1或2所述的方法,其特征在于,所述基于所述目标标识生成器,根据所述当前时间戳、生成器序号、设备标识以及自增序列号生成所述标识,包括:
基于所述目标标识生成器,根据所述当前时间戳、所述生成器序号、所述设备标识、进程标识以及所述自增序列号生成所述标识;
其中,所述进程标识对应的标识生成进程中包括所述至少两个标识生成器。
4.根据权利要求1或2所述的方法,其特征在于,所述基于所述目标标识生成器,根据所述当前时间戳、生成器序号、设备标识以及自增序列号生成所述标识,包括:
通过MD5加密算法处理所述设备标识,得到二进制序列;
从所述二进制序列中获取目标二进制序列;
基于所述目标标识生成器,根据所述当前时间戳、所述生成器序号、所述目标二进制序列以及所述自增序列号生成所述标识。
5.根据权利要求4所述的方法,其特征在于,在所述通过MD5加密算法处理所述设备标识之前,所述方法还包括:
获取计算机设备的通用唯一识别码文件;
根据所述通用唯一识别码文件,获取所述设备标识。
6.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
当所述至少两个标识生成器无法生成所述标识时,发送运维警告,所述运维警告用于反映所述计算机设备处于异常状态。
7.根据权利要求1所述的方法,其特征在于,在所述基于所述目标标识生成器,根据所述当前时间戳、生成器序号、设备标识以及自增序列号生成所述标识之后,所述方法还包括:
向客户端发送所述标识。
8.一种标识生成装置,其特征在于,所述装置包括:
第一获取模块,用于响应于标识生成请求,获取当前时间戳;
确定模块,用于根据生成上一个标识的历史时间戳与所述当前时间戳的时间先后关系,从至少两个标识生成器中确定出目标标识生成器;
生成模块,用于基于所述目标标识生成器,根据所述当前时间戳、生成器序号、设备标识以及自增序列号生成所述标识;
其中,所述生成器序号为所述目标标识生成器在所述至少两个标识生成器中的序号,每个所述标识生成器的所述序号不同,所述设备标识为生成所述标识的计算机设备的标识。
9.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由所述处理器加载并执行以实现权利要求1至7任一所述的标识生成方法。
10.一种计算机存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,当所述至少一条指令、所述至少一段程序、所述代码集或指令集由计算机设备的处理器加载并执行时,实现权利要求1至7任一所述的标识生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010681542.5A CN111917897B (zh) | 2020-07-15 | 2020-07-15 | 标识生成方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010681542.5A CN111917897B (zh) | 2020-07-15 | 2020-07-15 | 标识生成方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111917897A true CN111917897A (zh) | 2020-11-10 |
CN111917897B CN111917897B (zh) | 2024-03-05 |
Family
ID=73281243
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010681542.5A Active CN111917897B (zh) | 2020-07-15 | 2020-07-15 | 标识生成方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111917897B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112398968A (zh) * | 2020-11-24 | 2021-02-23 | 天津五八到家货运服务有限公司 | Id生成系统及方法、生成端、服务端及存储介质 |
CN112423149A (zh) * | 2020-11-19 | 2021-02-26 | 百果园技术(新加坡)有限公司 | 内容标识的生成方法、装置、设备及存储介质 |
CN112860661A (zh) * | 2021-01-20 | 2021-05-28 | 上海悦易网络信息技术有限公司 | 一种数据序列标识的生成方法及设备 |
CN112905126A (zh) * | 2021-03-15 | 2021-06-04 | 中国电子系统技术有限公司 | 一种存储数据标识的生成方法以及装置 |
CN113157249A (zh) * | 2021-04-22 | 2021-07-23 | 北京奇艺世纪科技有限公司 | 标识号生成方法、装置、电子设备及存储介质 |
CN115361399A (zh) * | 2022-10-24 | 2022-11-18 | 中国水利水电第七工程局有限公司 | 一种多终端数据同步方法、装置及系统 |
CN115987941A (zh) * | 2023-03-20 | 2023-04-18 | 公安部信息通信中心 | 一种支持多租户的去中心化号码生成系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080209249A1 (en) * | 2007-02-27 | 2008-08-28 | Tso Theodore Y | Use of a UUID as a Time Epoch to Determine if the System Clock Has Been Reset Backwards in Time |
CN109491772A (zh) * | 2018-09-28 | 2019-03-19 | 深圳财富农场互联网金融服务有限公司 | 业务序号生成方法、装置、计算机设备和存储介质 |
CN109697133A (zh) * | 2018-12-28 | 2019-04-30 | 广州华多网络科技有限公司 | Id生成方法、装置及系统 |
CN109740120A (zh) * | 2018-12-14 | 2019-05-10 | 深圳壹账通智能科技有限公司 | 分布式环境下唯一标识的生成方法、装置、计算机设备 |
CN111078693A (zh) * | 2019-11-29 | 2020-04-28 | 叮当快药科技集团有限公司 | 用于生成数据库记录主键的方法和装置 |
CN111163186A (zh) * | 2019-12-31 | 2020-05-15 | 南京领行科技股份有限公司 | 一种id生成方法、装置、设备和存储介质 |
-
2020
- 2020-07-15 CN CN202010681542.5A patent/CN111917897B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080209249A1 (en) * | 2007-02-27 | 2008-08-28 | Tso Theodore Y | Use of a UUID as a Time Epoch to Determine if the System Clock Has Been Reset Backwards in Time |
CN109491772A (zh) * | 2018-09-28 | 2019-03-19 | 深圳财富农场互联网金融服务有限公司 | 业务序号生成方法、装置、计算机设备和存储介质 |
CN109740120A (zh) * | 2018-12-14 | 2019-05-10 | 深圳壹账通智能科技有限公司 | 分布式环境下唯一标识的生成方法、装置、计算机设备 |
CN109697133A (zh) * | 2018-12-28 | 2019-04-30 | 广州华多网络科技有限公司 | Id生成方法、装置及系统 |
CN111078693A (zh) * | 2019-11-29 | 2020-04-28 | 叮当快药科技集团有限公司 | 用于生成数据库记录主键的方法和装置 |
CN111163186A (zh) * | 2019-12-31 | 2020-05-15 | 南京领行科技股份有限公司 | 一种id生成方法、装置、设备和存储介质 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112423149A (zh) * | 2020-11-19 | 2021-02-26 | 百果园技术(新加坡)有限公司 | 内容标识的生成方法、装置、设备及存储介质 |
CN112423149B (zh) * | 2020-11-19 | 2022-11-15 | 百果园技术(新加坡)有限公司 | 内容标识的生成方法、装置、设备及存储介质 |
CN112398968A (zh) * | 2020-11-24 | 2021-02-23 | 天津五八到家货运服务有限公司 | Id生成系统及方法、生成端、服务端及存储介质 |
CN112860661A (zh) * | 2021-01-20 | 2021-05-28 | 上海悦易网络信息技术有限公司 | 一种数据序列标识的生成方法及设备 |
CN112905126A (zh) * | 2021-03-15 | 2021-06-04 | 中国电子系统技术有限公司 | 一种存储数据标识的生成方法以及装置 |
CN113157249A (zh) * | 2021-04-22 | 2021-07-23 | 北京奇艺世纪科技有限公司 | 标识号生成方法、装置、电子设备及存储介质 |
CN113157249B (zh) * | 2021-04-22 | 2023-09-08 | 北京奇艺世纪科技有限公司 | 标识号生成方法、装置、电子设备及存储介质 |
CN115361399A (zh) * | 2022-10-24 | 2022-11-18 | 中国水利水电第七工程局有限公司 | 一种多终端数据同步方法、装置及系统 |
CN115361399B (zh) * | 2022-10-24 | 2023-01-24 | 中国水利水电第七工程局有限公司 | 一种多终端数据同步方法、装置及系统 |
CN115987941A (zh) * | 2023-03-20 | 2023-04-18 | 公安部信息通信中心 | 一种支持多租户的去中心化号码生成系统 |
CN115987941B (zh) * | 2023-03-20 | 2023-06-06 | 公安部信息通信中心 | 一种支持多租户的去中心化号码生成系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111917897B (zh) | 2024-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111917897B (zh) | 标识生成方法、装置、设备及存储介质 | |
EP3832578A1 (en) | Electronic invoice identifier allocation method, and electronic ticket generating method, device and system | |
US20220138062A1 (en) | Byzantine agreement using communications having linear complexity | |
CN106331098B (zh) | 一种服务器集群系统 | |
CN111163182B (zh) | 基于区块链的设备注册方法、装置、电子设备和存储介质 | |
CN109862101B (zh) | 跨平台应用启动方法、装置、计算机设备和存储介质 | |
CN110830608B (zh) | 一种全局唯一标识符生成方法、装置、设备及存储介质 | |
CN110690974B (zh) | 基于区块链的数据验证方法、装置、设备及可读存储介质 | |
CN110908833A (zh) | 一种数据备份方法、装置、设备及计算机可读存储介质 | |
CN112506702B (zh) | 数据中心容灾方法、装置、设备及存储介质 | |
CN112367345B (zh) | 数据处理方法、服务端设备及计算机可读存储介质 | |
CN112584350B (zh) | 处理信息的方法、装置、设备及可读存储介质 | |
CN111737236B (zh) | 智能快递柜业务的数据管理方法及系统 | |
CN111597567A (zh) | 数据处理方法、装置、节点设备及存储介质 | |
CN111338834B (zh) | 数据存储方法和装置 | |
CN111541762B (zh) | 数据处理的方法、管理服务器、设备及存储介质 | |
US11429313B2 (en) | Data processing method, device and distributed storage system | |
CN112738249B (zh) | 基于量化交易的文件上传方法、装置、设备及存储介质 | |
CN110585724B (zh) | 游戏客户端中的表格数据更新方法、装置 | |
CN116991948A (zh) | 区块数据同步系统和方法、电子设备和存储介质 | |
CN111327680A (zh) | 认证数据同步方法、装置、系统、计算机设备和存储介质 | |
CN111162938A (zh) | 数据处理系统及方法 | |
CN110545296A (zh) | 一种日志数据获取方法、装置及其设备 | |
CN110134547B (zh) | 一种基于中间件的重复数据删除方法和相关装置 | |
CN107332679B (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 |