CN113157249B - 标识号生成方法、装置、电子设备及存储介质 - Google Patents
标识号生成方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113157249B CN113157249B CN202110437248.4A CN202110437248A CN113157249B CN 113157249 B CN113157249 B CN 113157249B CN 202110437248 A CN202110437248 A CN 202110437248A CN 113157249 B CN113157249 B CN 113157249B
- Authority
- CN
- China
- Prior art keywords
- machine
- identification
- identification number
- numerical value
- value
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请公开了一种标识号生成方法、装置、电子设备及存储介质,该方法包括:在接收到标识号生成请求的情况下,获取目标机器的机器标识,目标机器是根据预设的负载均衡算法从多个机器中确定得到;根据目标机器的机器标识,获取第一数值和第二数值;根据预设定义规则,以及第一数值、第二数值和目标机器的机器标识,生成标识号,其中,预设定义规则用于根据长整型数据类型的比特位,对标识号的多个区域进行定义;标识号包括第一变化区、第二变化区和机器标识区;第一变化区用于承载第一数值,第二变化区用于承载第二数值,机器标识区用于承载目标机器的机器标识。这样,使得生成的标识号的随机性较高,从而提高了分布式系统的安全性。
Description
技术领域
本申请属于分布式系统技术领域,具体涉及一种标识号生成方法、装置、电子设备及存储介质。
背景技术
在分布式系统中,往往需要对大量的数据和消息进行标识,针对每个数据和消息需要生成全局唯一的标识号(identity,简称ID)与之关联,这样,在分布式系统调用数据和消息时,可以根据标识号对这些数据和消息进行区分。
目前,现有的标识号生成方式,如使用数据库自增ID的方式、使用Redis生成自增ID的方式、采用雪花算法(即SnowFlake)的方式等,得到的标识号均呈递增趋势,不够随机,因而根据生成的标识号很容易被他人爬取到业务相关信息,导致分布式系统的安全性较低。
发明内容
本申请实施例的目的是提供一种标识号生成方法、装置、电子设备及存储介质,能够解决现有的标识号生成方式生成的标识号不够随机,根据生成的标识号很容易被他人爬取到业务相关信息,导致分布式系统的安全性较低的问题。
为了解决上述技术问题,本申请是这样实现的:
第一方面,本申请实施例提供了一种标识号生成方法,该方法包括:
在接收到标识号生成请求的情况下,获取目标机器的机器标识,所述目标机器是根据预设的负载均衡算法从多个机器中确定得到,所述多个机器对应的机器标识不同;
根据所述目标机器的机器标识,获取第一数值和第二数值,所述第一数值用于指示所述目标机器在本次轮询过程中产生标识号的次数,所述第一数值在第一预设比特位对应的取值范围内循环更新,所述第二数值用于指示所述第一数值的循环次数;
根据预设定义规则,以及所述第一数值、所述第二数值和所述目标机器的机器标识,生成标识号,其中,所述预设定义规则用于根据长整型数据类型的比特位,对所述标识号的多个区域进行定义;所述标识号包括第一变化区、第二变化区和机器标识区;所述第一变化区用于承载所述第一数值,所述第二变化区用于承载所述第二数值,所述机器标识区用于承载所述目标机器的机器标识。
进一步地,所述第一变化区对应的比特位高于所述第二变化区和所述机器标识区对应的比特位,所述第一变化区对应的比特位的数量与所述第一预设比特位相匹配。
进一步地,所述标识号还包括兼容区,所述兼容区对应的比特位位于所述第一变化区和所述第二变化区对应的比特位之间。
进一步地,所述标识号还包括符号区和保留区,所述符号区对应的比特位为所述标识号中的最高比特位,所述保留区对应的比特位位于所述符号区和所述第一变化区对应的比特位之间。
进一步地,所述多个机器对应的机器标识均属于所述机器标识区对应的比特位的取值范围内。
进一步地,所述第二数值存储于预设数据库,在所述目标机器重启后第一次被轮询到的情况下,从所述预设数据库获取所述第二数值,并对所述预设数据库中的所述第二数值进行更新。
进一步地,在所述根据预设定义规则,以及所述第一数值、所述第二数值和所述目标机器的机器标识,生成标识号之后,所述方法还包括:
向发送所述标识号生成请求的客户端反馈响应消息,所述响应消息携带有所述标识号。
第二方面,本申请实施例提供了一种标识号生成装置,所述装置包括:
第一获取模块,用于在接收到标识号生成请求的情况下,获取目标机器的机器标识,所述目标机器是根据预设的负载均衡算法从多个机器中确定得到,所述多个机器对应的机器标识不同;
第二获取模块,用于根据所述目标机器的机器标识,获取第一数值和第二数值,所述第一数值用于指示所述目标机器在本次轮询过程中产生标识号的次数,所述第一数值在第一预设比特位对应的取值范围内循环更新,所述第二数值用于指示所述第一数值的循环次数;
生成模块,用于根据预设定义规则,以及所述第一数值、所述第二数值和所述目标机器的机器标识,生成标识号,其中,所述预设定义规则用于根据长整型数据类型的比特位,对所述标识号的多个区域进行定义;所述标识号包括第一变化区、第二变化区和机器标识区;所述第一变化区用于承载所述第一数值,所述第二变化区用于承载所述第二数值,所述机器标识区用于承载所述目标机器的机器标识。
进一步地,所述第一变化区对应的比特位高于所述第二变化区和所述机器标识区对应的比特位,所述第一变化区对应的比特位的数量与所述第一预设比特位相匹配。
进一步地,所述标识号还包括兼容区,所述兼容区对应的比特位位于所述第一变化区和所述第二变化区对应的比特位之间。
进一步地,所述标识号还包括符号区和保留区,所述符号区对应的比特位为所述标识号中的最高比特位,所述保留区对应的比特位位于所述符号区和所述第一变化区对应的比特位之间。
进一步地,所述多个机器对应的机器标识均属于所述机器标识区对应的比特位的取值范围内。
进一步地,所述第二数值存储于预设数据库,在所述目标机器重启后第一次被轮询到的情况下,从所述预设数据库获取所述第二数值,并对所述预设数据库中的所述第二数值进行更新。
进一步地,所述标识号生成装置还包括:
反馈模块,用于向发送所述标识号生成请求的客户端反馈响应消息,所述响应消息携带有所述标识号。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。
第四方面,本申请实施例提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的方法的步骤。
在本申请实施例中,在接收到标识号生成请求的情况下,获取目标机器的机器标识,所述目标机器是根据预设的负载均衡算法从多个机器中确定得到,所述多个机器对应的机器标识不同;根据所述目标机器的机器标识,获取第一数值和第二数值,所述第一数值用于指示所述目标机器在本次轮询过程中产生标识号的次数,所述第一数值在第一预设比特位对应的取值范围内循环更新,所述第二数值用于指示所述第一数值的循环次数;根据预设定义规则,以及所述第一数值、所述第二数值和所述目标机器的机器标识,生成标识号,其中,所述预设定义规则用于根据长整型数据类型的比特位,对所述标识号的多个区域进行定义;所述标识号包括第一变化区、第二变化区和机器标识区;所述第一变化区用于承载所述第一数值,所述第二变化区用于承载所述第二数值,所述机器标识区用于承载所述目标机器的机器标识。通过这种方式,服务器在接收到标识号生成请求时,会随机从多个机器中确定出一个目标机器,使得获取到的目标机器的机器标识具有较强的随机性,进而根据目标机器的机器标识确定得到的第一数值和第二数值也具有较强的随机性,因而,最终根据目标机器的机器标识、第一数值和第二数值生成的标识号的随机性较高,使得他人很难根据标识号爬取到业务相关信息,从而提高了分布式系统的安全性。
附图说明
图1为本申请实施例提供的标识号生成方法的流程图之一;
图2为本申请实施例提供的预设定义规则的示意图之一;
图3为本申请实施例提供的预设定义规则的示意图之二;
图4为本申请实施例提供的预设定义规则的示意图之三;
图5为本申请实施例提供的标识号生成方法的流程图之二;
图6为本申请实施例提供的标识号生成装置的结构示意图;
图7为本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的标识号生成方法进行详细地说明。
本申请实施例提供的标识号生成方法应用于分布式系统。该分布式系统中包括:服务器和至少一个客户端,服务器和客户端之间通信连接。服务器和客户端可以为分布式系统中的任一节点。客户端用于与用户交互,向服务器发送标识号生成请求;服务器用于响应客户端发送的标识号生成请求,获取目标机器的机器标识,并获取目标机器的机器标识对应的第一变化区和第二变化区的值,最后根据预设定义规则,生成全局唯一的标识号,同时向客户端返回该标识号。
需要说明的是,此处的目标机器为与分布式系统中的服务器连接的多个机器中的任意一台机器。多个机器分别拥有自身的机器标识,且各机器标识具有唯一性,多个机器用于配合服务器共同完成标识号的生成过程。当服务器接收到分布式系统中任意一个客户端发送的标识号生成请求时,服务器可以根据预设的负载均衡算法,从多个机器中确定出参与本次标识号生成的目标机器,并根据目标机器完成标识号的生成。
参见图1,图1为本申请实施例提供的标识号生成方法的流程图之一。如图1所示,该标识号生成方法可应用于服务器,具体包括以下步骤:
步骤101、在接收到标识号生成请求的情况下,获取目标机器的机器标识,目标机器是根据预设的负载均衡算法从多个机器中确定得到,多个机器对应的机器标识不同。
具体地,服务器在接收到分布式系统中任意一个客户端发送的标识号生成请求时,响应于该标识号生成请求,服务器可以根据预设的负载均衡算法从多个机器中确定得到目标机器,并获取该目标机器对应的机器标识。此处的负载均衡算法可以包括但不限于:轮询法、随机法、源地址hash法、加权轮询法和加权随机法等等。
需要说明的是,此处的目标机器可以为与服务器连接的多个机器中的任意一台机器。多个机器以对称的方式组成一个机器集合,每台机器都具有等价的地位,都可以配合服务器完成标识号的生成过程,而无须其他机器的辅助。每台机器均有自身的机器标识,且该机器标识具有唯一性。
步骤102、根据目标机器的机器标识,获取第一数值和第二数值,第一数值用于指示目标机器在本次轮询过程中产生标识号的次数,第一数值在第一预设比特位对应的取值范围内循环更新,第二数值用于指示第一数值的循环次数。
服务器在获取到目标机器的机器标识后,可以根据目标机器的机器标识,获取该目标机器的机器标识对应的第一数值和第二数值。具体而言,服务器可以向目标机器发送第一数值和第二数值的获取请求,目标机器响应于该获取请求,将第一数值和第二数值发送给服务器。
需要说明的是,上述第一数值可以根据目标机器被轮询的次数进行更新,例如,目标机器每轮询一次,第一数值增加预设步长,其中,该预设步长可以为1、2、3、4等任意正整数,本申请不做具体限定。且上述第一数值的取值范围与上述第一预设比特位对应的取值范围相同,其中,上述第一预设比特位可以是任意多个比特位,如5、10、15个比特位等。以第一预设比特位为10个比特位为例进行说明,由于10个比特位的二进制数值对应的十进制数值的取值范围为大于等于0,且小于等于1023,此时,第一数值的取值范围也是大于等于0,且小于等于1023。当第一数值随着目标机器被轮询的次数的增加,逐渐增大至取值范围内的最大值时,第一数值需要从取值范围内的最小值开始重新计数。与此同时,第二数值会根据第一数值在取值范围内的循环次数进行更新。例如,第一数值在取值范围内每循环一次,第二数值增加预设步长,其中,该预设步长可以为1、2、3、4等任意正整数,本申请不做具体限定。
步骤103、根据预设定义规则,以及第一数值、第二数值和目标机器的机器标识,生成标识号,其中,预设定义规则用于根据长整型数据类型的比特位,对标识号的多个区域进行定义;标识号包括第一变化区、第二变化区和机器标识区;第一变化区用于承载第一数值,第二变化区用于承载第二数值,机器标识区用于承载目标机器的机器标识。
其中,上述预设定义规则用于根据长整型数据类型的比特位,对标识号的多个区域进行定义。具体而言,长整型数据类型是程序设计中数据类型的一种表现方式,一般情况下可用Long型表示,Long型数据共有64比特位。
在一实施例中,可以将这64比特位划分成不同区域,并对多个区域分别进行定义。例如,可以将其中一个区域作为第一变化区,用于承载第一数值;将其中另一个区域作为第二变化区,用于承载第二数值;将其中再一个区域作为机器标识区,用于承载目标机器的机器标识。其中,第一变化区、第二变化区和机器标识区的位置关系不做限定。当然,还可以预留部分区域的比特位作为其他用途,本申请不做具体限定。
服务器在获取到第一数值、第二数值和目标机器的机器标识之后,可以根据预设定义规则,将第一数值、第二数值和目标机器的机器标识转化为二进制数值,并替换至对应区域的对应比特位上,再根据该64比特位中各比特位的位置关系,生成标识号。在这个过程中,由于参与生成标识号的目标机器的机器标识存在随机性,进而根据目标机器的机器标识确定得到的第一数值和第二数值也存在随机性,因而,最终生成的标识号随机性较高。
在本实施例中,服务器在接收到标识号生成请求时,会随机从多个机器中确定出一个目标机器,使得获取到的目标机器的机器标识具有较强的随机性,进而根据目标机器的机器标识确定得到的第一数值和第二数值也具有较强的随机性,因而,最终根据目标机器的机器标识、第一数值和第二数值生成的标识号的随机性较高,使得他人很难根据标识号爬取到业务相关信息,从而提高了分布式系统的安全性。
进一步地,第一变化区对应的比特位高于第二变化区和机器标识区对应的比特位,第一变化区对应的比特位的数量与第一预设比特位相匹配。
在一实施例中,第一变化区对应的比特位高于第二变化区和机器标识区对应的比特位。这样,第一数值对应的二进制数值被替换至该64比特位的较高位置上,第二数值和目标机器的机器标识对应的二进制数值被替换至该64比特位的较低位置上。由于第一数值的更新频率远远高于第二数值的更新频率,且处于较高比特位的数值的变化,更容易导致整个数据有较大的变化幅度。例如,假设第一变化区包括10个比特位,第二变化区包括26个比特位,机器标识区包括10个比特位,且机器标识区、第二变化区和第一变化区依次从该64比特位的最低位开始设置,如图2所示。根据该64比特位中各比特位之间的位置关系,当第一数值增加1时,该64比特位对应的数值会增加1*2(26+10);而当第二数值增加1时,该64比特位对应的数值会增加1*210,由此可见,处于较高比特位的数值的变化,更容易导致整个数据有较大的变化幅度。因而,在本实施例中,通过将第一变化区设置在较高比特位,更有利于使得生成的标识号没有明显的线性关系,从而提高了生成的标识号的随机性。并且,第一变化区对应的比特位的数量与上述第一预设比特位相匹配。具体而言,第一变化区对应的比特位的取值范围可以大于或等于第一数值的取值范围,这样,可以避免第一数值超过第一变化区对应的比特位的取值范围,导致溢出的情况。
进一步地,标识号还包括兼容区,兼容区对应的比特位位于第一变化区和第二变化区对应的比特位之间。
在一实施例中,可以在第一变化区对应的比特位和第二变化区对应的比特位之间设置兼容区。该兼容区可以包括一个或多个比特位。当兼容区包括多个比特位时,兼容区内的最高比特位设置为1。例如,假设第一变化区包括10个比特位,兼容区包括1个比特位,第二变化区包括25个比特位,机器标识区包括10个比特位,且机器标识区、第二变化区、兼容区和第一变化区依次从该64比特位的最低位开始设置,如图3所示。由于兼容区的二进制数值为1,使得服务器生成的新的标识号必然是大于或等于1*2(25+10)的值,这样,当由于历史业务导致分布式系统中存在较多的历史标识号时,可以保证历史标识号均小于1*2(25+10),从而可以通过该兼容区实现对历史标识号的兼容。
进一步地,标识号还包括符号区和保留区,符号区对应的比特位为标识号中的最高比特位,保留区对应的比特位位于符号区和第一变化区对应的比特位之间。
在一实施例中,标识号还包括符号区和保留区,其中,符号区对应的比特位为标识号中的最高比特位,用于对该64比特位的数值的正负情况进行标识。例如,当符号区对应的二进制值为1时,表示该64比特位的数值为负数;当符号区对应的二进制值为0时,表示该64比特位的数值为正数。保留区对应的比特位位于符号区和第一变化区对应的比特位之间。保留区所包含的比特位的数量根据上述第一变化区、兼容区、第二变化区和机器标识区的数量之和进行确定,且保留区的所有比特位的二进制值均为0。在该实施例中,通过在符号区和第一变化区之间设置保留区,确保在该64比特位中保留一定高位的比特位,从而使得生成标识号的有效数据位能够兼容JavaScript的解析需求,避免最终生成的long型标识号,在JavaScript的解析过程中存在精度问题。
进一步地,多个机器对应的机器标识均属于机器标识区对应的比特位的取值范围内。
在一实施例中,多个机器对应的机器标识均属于机器标识区对应的比特位的取值范围内。例如,假设机器标识区包括10个比特位,则机器标识区的取值范围为大于等于0,且小于等于1023,此时若机器的数量超过1024个,则必然存在部分机器的机器标识不能属于该机器标识区的取值范围内。这样,服务器在生成标识号的过程中,无法确保每次能够获取到准确的目标机器的机器标识,导致最终生成的标识号可能存在重复的情况。
进一步地,基于上述图1所示的实施例,第二数值存储于预设数据库,在目标机器重启后第一次被轮询到的情况下,从预设数据库获取第二数值,并对预设数据库中的第二数值进行更新。具体地,上述预设数据库可以为服务器本地的数据库,也可以为与服务器连接的第三方数据库。该预设数据库中的类型可以包括但不限于:MySQL、MariaDB、PerconaServer、PostgreSQL、Microsoft Access、Microsoft SQL Server、Google Fusion Tables、FileMaker、Oracle、Sybase、dBASE、Clipper、FoxPro、foshub等等。在一实施例中,预设数据库中预先存储有目标机器的机器标识和第二数值的映射关系。当目标机器重启后第一次被轮询到时,服务器可以根据目标机器的机器标识在预设数据库中匹配,找到与该机器标识对应的第二数值,并将第一数值初始化为0,进而根据预设定义规则,以及第一数值、第二数值和目标机器的机器标识,生成标识号。
需要说明的是,当服务器从预设数据库获取第二数值后,还需要对第二数值进行更新,并将更新后的第二数值持久化至该预设数据库中,以保证目标机器在下次启动时,服务器能从预设数据库中获取到该目标机器对应的第二数值,避免该目标机器生成的标识号出现重复的情况。
在该实施例中,可以通过预设数据库对所有机器的第二数值进行记录,这样,在某一机器重启后,可以读取预设数据库中的第二数值,并在每次读取第二数值后,对预设数据库中的第二数值进行更新,从而保证该机器每次在重启后生成的标识号不会重复,有效提高了分布式系统的安全性。
进一步地,基于上述图1所示的实施例,在上述步骤103、根据预设定义规则,以及第一数值、第二数值和目标机器的机器标识,生成标识号之后,该方法还包括:
向发送标识号生成请求的客户端反馈响应消息,响应消息携带有标识号。
在该实施例中,服务器在生成标识号后,可以向发送标识号生成请求的客户端反馈响应消息,其中,该响应消息携带有标识号。这样,客户端可以获取到服务器生成的标识号,便于客户端利用该标识号参与业务服务。
在一应用例中,在对标识号的多个区域进行定义的预设定义规则中,可以将64比特位的空间划分为符号区、保留区、第一变化区、兼容区、第二变化区、机器标识区,如图4所示。在图4中,机器标识区包含10个比特位,位于64比特位中最低的10个比特位。该机器标识区用于标识目标机器的机器标识。由于机器标识区共10个比特位,因而,该服务器最多可以支持与1024个机器连接,每个机器对应的机器标识具有唯一性,机器标识的取值范围为大于等于0,且小于等于1023。第二变化区包括25个比特位,位于64比特位中与机器标识区相邻的高位。该第二变化区用于承载目标机器的第二数值,因而,第二变化区对应的二进制值为第二数值对应的二进制值。由于第二变化区所包含的比特位较长,因而可以保证该服务器可以生成的标识号的数量较多。兼容区包括1个比特位,位于64比特位中与第二变化区相邻的高位。该兼容区的二进制值为1,用于对历史标识号进行兼容。第一变化区包括10个比特位,位于64比特位中与兼容区相邻的高位。该第一变化区用于承载目标机器的第一数值,因而,第一变化区对应的二进制值为第一数值对应的二进制值。由于第一变化区包括10个比特位,其取值范围为大于等于0,且小于等于1023,因而,在目标机器生成标识号的过程中,第一变化区的值会从0到1023递增变化,当到达1023后重新从0开始递增变化,此时,第二变化区的值加1。保留区包括17个比特位,位于64比特位中与第一变化区相邻的高位。由于保留了一定比特位的高位,可以满足兼容JavaScript解析的需求。符号位包括1个比特位,位于64比特位的最高位,其对应的二进制值为0,表示标识号为正数。
当然,作为其他实施方式,第二变化区和机器标识区在64比特位中位置,可以根据实际情况进行互换。
基于上述图4所示的预设定义规则,在第一变化区和第二变化区之间不存在兼容区的情况下,以第一变化区为q个比特位、第二变化区为s个比特位、机器标识区为w个比特位为例,对服务器生成标识号的过程进行说明。具体请参见图5,图5为本申请实施例提供的标识号生成方法的流程图之二。该标识号生成方法,具体可以包括以下步骤:
步骤501、启动各机器。
在服务器初次启动时,需要初始化服务器中的预设数据库(如MySQL),将预设数据库中各机器标识对应的第二数值slow_zone_next_value设置为0。
步骤502、获取目标机器的机器标识。
服务器通过预设的负载均衡算法从多个机器中确定得到目标机器,进而得到该目标机器的机器标识。该目标机器的机器标识i为取值范围[0,1023]内的任意整数。
步骤503、获取目标机器的机器标识对应的第一数值和第二数值。
当目标机器为重启后首次被轮询时,服务器可以查询预设数据库中与目标机器的机器标识相匹配的第二数值slow_zone_next_value,并将第二数值slow_zone_next_value赋值给第二变化区的值slow_zone_value,同时,将第一数值初始化后,赋值给第一变化区的值quick_zone_value。此外,还可以将第二数值slow_zone_next_value更新为slow_zone_next_value+1,并将更新后的第二数值slow_zone_next_value持久化至预设数据库中,从而保证下次启动该目标机器时产生的ID没有重复。
当目标机器不是重启后首次被轮询时,服务器可以从目标机器直接获取第一数值和第二数值。
步骤504、根据第一数值、第二数值和目标机器的机器标识,生成标识号。
根据标识号生成公式id=quick_zone_value<<(s+w)+slow_zone_value<<w+i,生成标识号,并反馈至相应的客户端。其中,上述标识号生成公式可以替换为id=quick_zone_value*2(s+w)+slow_zone_value*2w+i。例如,假设第一变化区的当前值quick_zone_value为75,共包括10比特位,第二变化区的当前值slow_zone_value为65756,共包括23比特位,目标机器的机器标识i的当前值为287,共包括10比特位,那么,最终生成的标识号为75*2(23+10)+65756*210+287,即644312428831。
步骤505、判断第一数值是否小于或等于第一变化区域对应比特位的取值范围内的最大值。
判断第一变化区的当前值quick_zone_value是否小于或等于1<<q-1,若第一变化区的当前值quick_zone_value小于或等于1<<q-1,则将第一变化区的值quick_zone_value更新为quick_zone_value+1,第二变化区的值slow_zone_value不变,并重复执行步骤504;否则,将quick_zone_value初始化为0,将第二变化区的值slow_zone_value+1,重复执行步骤504。
当然,作为另一种实施方式,可以在第一变化区和第二变化区之间存在1比特位的兼容区,其生成标识号的流程与上述图5所示的流程相同,区别在于,标识号生成公式为id=quick_zone_value<<(1+s+w)+slow_zone_value<<w+i。
通过这种方式,服务器可以在接收到标识号生成请求时,会随机从多个机器中确定出一个目标机器,使得获取到的目标机器的机器标识具有较强的随机性,进而根据目标机器的机器标识确定得到的第一数值和第二数值也具有较强的随机性,因而,最终根据目标机器的机器标识、第一数值和第二数值生成的标识号的随机性较高,使得他人很难根据标识号爬取到业务相关信息,从而提高了分布式系统的安全性。
需要说明的是,本申请实施例提供的标识号生成方法,执行主体可以为标识号生成装置,或者该标识号生成装置中的用于执行标识号生成方法的控制模块。本申请实施例中以标识号生成装置执行标识号生成方法为例,说明本申请实施例提供的标识号生成装置。
参见图6,图6为本申请实施例提供的标识号生成装置的结构示意图。如图6所示,该标识号生成装置600包括:
第一获取模块601,用于在接收到标识号生成请求的情况下,获取目标机器的机器标识,目标机器是根据预设的负载均衡算法从多个机器中确定得到,多个机器对应的机器标识不同;
第二获取模块602,用于根据目标机器的机器标识,获取第一数值和第二数值,第一数值用于指示目标机器在本次轮询过程中产生标识号的次数,第一数值在第一预设比特位对应的取值范围内循环更新,第二数值用于指示第一数值的循环次数;
生成模块603,用于根据预设定义规则,以及第一数值、第二数值和目标机器的机器标识,生成标识号,其中,预设定义规则用于根据长整型数据类型的比特位,对标识号的多个区域进行定义;标识号包括第一变化区、第二变化区和机器标识区;第一变化区用于承载第一数值,第二变化区用于承载第二数值,机器标识区用于承载目标机器的机器标识。
进一步地,第一变化区对应的比特位高于第二变化区和机器标识区对应的比特位,第一变化区对应的比特位的数量与第一预设比特位相匹配。
进一步地,标识号还包括兼容区,兼容区对应的比特位位于第一变化区和第二变化区对应的比特位之间。
进一步地,标识号还包括符号区和保留区,符号区对应的比特位为标识号中的最高比特位,保留区对应的比特位位于符号区和第一变化区对应的比特位之间。
进一步地,多个机器对应的机器标识均属于机器标识区对应的比特位的取值范围内。
进一步地,第二数值存储于预设数据库,在目标机器重启后第一次被轮询到的情况下,从预设数据库获取第二数值,并对预设数据库中的第二数值进行更新。
进一步地,标识号生成装置600还包括:
反馈模块,用于向发送标识号生成请求的客户端反馈响应消息,响应消息携带有标识号。
本申请实施例中的标识号生成装置600可以是装置,也可以是终端中的部件、集成电路、或芯片。该装置可以是移动电子设备,也可以为非移动电子设备。示例性的,移动电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、可穿戴设备、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本或者个人数字助理(personal digital assistant,PDA)等,非移动电子设备可以为服务器、网络附属存储器(Network Attached Storage,NAS)、个人计算机(personal computer,PC)、电视机(television,TV)、柜员机或者自助机等,本申请实施例不作具体限定。
本申请实施例中的标识号生成装置600可以为具有操作系统的装置。该操作系统可以为安卓(Android)操作系统,可以为ios操作系统,还可以为其他可能的操作系统,本申请实施例不作具体限定。
本申请实施例提供的标识号生成装置600能够实现图1至图5的方法实施例实现的各个过程,为避免重复,这里不再赘述。
可选的,如图7所示,本申请实施例还提供一种电子设备700,包括处理器701,存储器702,存储在存储器702上并可在处理器701上运行的程序或指令,该程序或指令被处理器701执行时实现上述标识号生成方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,本申请实施例中的电子设备包括上述的移动电子设备和非移动电子设备。
本申请实施例还提供一种可读存储介质,可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述标识号生成方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,处理器为上述实施例中的电子设备中的处理器。可读存储介质,包括计算机可读存储介质,如计算机只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、磁碟或者光盘等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
Claims (10)
1.一种标识号生成方法,其特征在于,所述方法包括:
在接收到标识号生成请求的情况下,获取目标机器的机器标识,所述目标机器是根据预设的负载均衡算法从多个机器中确定得到,所述多个机器对应的机器标识不同;
根据所述目标机器的机器标识,获取第一数值和第二数值,所述第一数值用于指示所述目标机器在本次轮询过程中产生标识号的次数,所述第一数值在第一预设比特位对应的取值范围内循环更新,所述第二数值用于指示所述第一数值的循环次数;
根据预设定义规则,以及所述第一数值、所述第二数值和所述目标机器的机器标识,生成标识号,其中,所述预设定义规则用于根据长整型数据类型的比特位,对所述标识号的多个区域进行定义;所述标识号包括第一变化区、第二变化区和机器标识区;所述第一变化区用于承载所述第一数值,所述第二变化区用于承载所述第二数值,所述机器标识区用于承载所述目标机器的机器标识。
2.根据权利要求1所述的方法,其特征在于,所述第一变化区对应的比特位高于所述第二变化区和所述机器标识区对应的比特位,所述第一变化区对应的比特位的数量与所述第一预设比特位相匹配。
3.根据权利要求2所述的方法,其特征在于,所述标识号还包括兼容区,所述兼容区对应的比特位位于所述第一变化区和所述第二变化区对应的比特位之间。
4.根据权利要求3所述的方法,其特征在于,所述标识号还包括符号区和保留区,所述符号区对应的比特位为所述标识号中的最高比特位,所述保留区对应的比特位位于所述符号区和所述第一变化区对应的比特位之间。
5.根据权利要求1所述的方法,其特征在于,所述多个机器对应的机器标识均属于所述机器标识区对应的比特位的取值范围内。
6.根据权利要求1所述的方法,其特征在于,所述第二数值存储于预设数据库,在所述目标机器重启后第一次被轮询到的情况下,从所述预设数据库获取所述第二数值,并对所述预设数据库中的所述第二数值进行更新。
7.根据权利要求1所述的方法,其特征在于,在所述根据预设定义规则,以及所述第一数值、所述第二数值和所述目标机器的机器标识,生成标识号之后,所述方法还包括:
向发送所述标识号生成请求的客户端反馈响应消息,所述响应消息携带有所述标识号。
8.一种标识号生成装置,其特征在于,所述装置包括:
第一获取模块,用于在接收到标识号生成请求的情况下,获取目标机器的机器标识,所述目标机器是根据预设的负载均衡算法从多个机器中确定得到,所述多个机器对应的机器标识不同;
第二获取模块,用于根据所述目标机器的机器标识,获取第一数值和第二数值,所述第一数值用于指示所述目标机器在本次轮询过程中产生标识号的次数,所述第一数值在第一预设比特位对应的取值范围内循环更新,所述第二数值用于指示所述第一数值的循环次数;
生成模块,用于根据预设定义规则,以及所述第一数值、所述第二数值和所述目标机器的机器标识,生成标识号,其中,所述预设定义规则用于根据长整型数据类型的比特位,对所述标识号的多个区域进行定义;所述标识号包括第一变化区、第二变化区和机器标识区;所述第一变化区用于承载所述第一数值,所述第二变化区用于承载所述第二数值,所述机器标识区用于承载所述目标机器的机器标识。
9.一种电子设备,其特征在于,包括处理器,存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1-7任一项所述的数据处理方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如权利要求1-7任一项所述的数据处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110437248.4A CN113157249B (zh) | 2021-04-22 | 2021-04-22 | 标识号生成方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110437248.4A CN113157249B (zh) | 2021-04-22 | 2021-04-22 | 标识号生成方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113157249A CN113157249A (zh) | 2021-07-23 |
CN113157249B true CN113157249B (zh) | 2023-09-08 |
Family
ID=76869544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110437248.4A Active CN113157249B (zh) | 2021-04-22 | 2021-04-22 | 标识号生成方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113157249B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114124541B (zh) * | 2021-11-25 | 2024-02-09 | 北京锐安科技有限公司 | 一种规则id的数据处理方法、装置、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ES2548792A1 (es) * | 2014-03-20 | 2015-10-20 | Universidad De Sevilla | Método y dispositivo para generar identificadores y números verdaderamente aleatorios |
US9237074B1 (en) * | 2013-05-08 | 2016-01-12 | Amazon Technologies, Inc. | Distributed identifier generation system |
CN105721621A (zh) * | 2014-12-17 | 2016-06-29 | 施耐德电气It公司 | 用于生成唯一设备id的系统和方法 |
CN108846085A (zh) * | 2018-06-12 | 2018-11-20 | 北京奇艺世纪科技有限公司 | 一种id生成方法、装置、电子设备及系统 |
CN111580992A (zh) * | 2020-05-09 | 2020-08-25 | 上海维信荟智金融科技有限公司 | 分布式id生成方法及系统 |
CN111917897A (zh) * | 2020-07-15 | 2020-11-10 | 深圳市腾讯网域计算机网络有限公司 | 标识生成方法、装置、设备及存储介质 |
WO2020224091A1 (zh) * | 2019-05-06 | 2020-11-12 | 平安科技(深圳)有限公司 | 序列生成方法、装置、计算机设备及存储介质 |
CN111949324A (zh) * | 2020-07-21 | 2020-11-17 | 北京思特奇信息技术股份有限公司 | 一种分布式序列号生成方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107203365B (zh) * | 2016-03-17 | 2020-09-08 | 阿里巴巴集团控股有限公司 | 随机数的生成及获取方法和装置 |
CN107040568B (zh) * | 2016-09-28 | 2018-07-13 | 平安科技(深圳)有限公司 | 标识信息生成方法和装置 |
-
2021
- 2021-04-22 CN CN202110437248.4A patent/CN113157249B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9237074B1 (en) * | 2013-05-08 | 2016-01-12 | Amazon Technologies, Inc. | Distributed identifier generation system |
ES2548792A1 (es) * | 2014-03-20 | 2015-10-20 | Universidad De Sevilla | Método y dispositivo para generar identificadores y números verdaderamente aleatorios |
CN105721621A (zh) * | 2014-12-17 | 2016-06-29 | 施耐德电气It公司 | 用于生成唯一设备id的系统和方法 |
CN108846085A (zh) * | 2018-06-12 | 2018-11-20 | 北京奇艺世纪科技有限公司 | 一种id生成方法、装置、电子设备及系统 |
WO2020224091A1 (zh) * | 2019-05-06 | 2020-11-12 | 平安科技(深圳)有限公司 | 序列生成方法、装置、计算机设备及存储介质 |
CN111580992A (zh) * | 2020-05-09 | 2020-08-25 | 上海维信荟智金融科技有限公司 | 分布式id生成方法及系统 |
CN111917897A (zh) * | 2020-07-15 | 2020-11-10 | 深圳市腾讯网域计算机网络有限公司 | 标识生成方法、装置、设备及存储介质 |
CN111949324A (zh) * | 2020-07-21 | 2020-11-17 | 北京思特奇信息技术股份有限公司 | 一种分布式序列号生成方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113157249A (zh) | 2021-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109492019B (zh) | 业务请求响应方法、装置、计算机设备和存储介质 | |
CN107679718B (zh) | 名单分配方法、设备以及计算机可读存储介质 | |
CN109064031B (zh) | 基于区块链的项目干系人信用评价方法、区块链及存储介质 | |
CN105550175A (zh) | 恶意账户识别方法及装置 | |
US10013672B2 (en) | Address extraction from a communication | |
CN111651741B (zh) | 用户身份识别方法、装置、计算机设备和存储介质 | |
CN104516918A (zh) | 用户身份信息的维护方法、装置、服务器及系统 | |
US11244153B2 (en) | Method and apparatus for processing information | |
CN104519108A (zh) | 推送账户信息、导入关系链的方法、装置及系统 | |
CN104156246A (zh) | 灰度升级的方法及装置 | |
CN113259139A (zh) | 一种创建群组方法及装置 | |
CN113157249B (zh) | 标识号生成方法、装置、电子设备及存储介质 | |
CN111581502A (zh) | 一种信息通知方法及装置 | |
CN104639550A (zh) | 用户识别方法和设备 | |
CN110377611B (zh) | 积分排名的方法及装置 | |
CN114595481A (zh) | 一种应答数据的处理方法、装置、设备和存储介质 | |
CN114553717B (zh) | 一种网络节点划分方法、装置、设备及存储介质 | |
CN110619204A (zh) | 一种邀请码生成方法、装置、终端设备及存储介质 | |
CN111586118A (zh) | 数据处理方法、装置和计算机设备 | |
CN104601448A (zh) | 一种对虚拟卡片进行处理的方法和装置 | |
CN110796500B (zh) | 一种信息监控方法、装置、电子设备及存储介质 | |
CN110858201A (zh) | 数据处理方法及系统、处理器、存储介质 | |
CN113420236B (zh) | 榜单数据展示方法、装置、电子设备及存储介质 | |
EP4092610A1 (en) | Information processing method, device, system, and computer-readable storage medium | |
CN110827079B (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 |