CN118138562A - 标识生成方法、装置、电子设备及可读存储介质 - Google Patents
标识生成方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN118138562A CN118138562A CN202410250202.5A CN202410250202A CN118138562A CN 118138562 A CN118138562 A CN 118138562A CN 202410250202 A CN202410250202 A CN 202410250202A CN 118138562 A CN118138562 A CN 118138562A
- Authority
- CN
- China
- Prior art keywords
- zookeeper
- server
- identifier
- distributed
- node
- 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.)
- Pending
Links
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
- H04L61/302—Administrative registration, e.g. for domain names at internet corporation for assigned names and numbers [ICANN]
-
- 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/3005—Mechanisms for avoiding name conflicts
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明实施例提供了一种标识生成方法、装置、电子设备及可读存储介质。该方法包括:向分布式应用程序协调服务Zookeeper发送注册请求,所述注册请求用于请求所述Zookeeper,在预先创建的持久性节点下创建所述服务器对应的临时性节点;接收所述Zookeeper返回的创建结果,并将所述创建结果中所携带的临时性节点的节点路径作为所述服务器的机器标识进行缓存;执行第一生成操作。利用Zookeeper的临时性节点的特性,无需手动对机器IP与机器标识进行维护,服务器通过向Zookeeper进行注册即可得到对应的唯一性的机器标识。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种标识生成方法、装置、电子设备及可读存储介质。
背景技术
随着计算机技术的发展,网络上的不同类型数据的数据量大大增加,且不同类型的数据往往来源于不同的系统,对于多个系统的大量数据,经常需要为各条数据生成唯一标识(Identity document,ID)进行区分,也就是分布式ID。
分布式ID的生成往往依赖于服务器集群,集群中的各台服务器均提供ID生成服务,这种情况下需要为不同服务器配置机器标识(workerid),从而避免不同服务器生成的ID冲突。
目前,针对服务器集群,需要将机器IP与分配的机器标识进行映射,为不同服务器形成固定的唯一机器标识,但在服务器集群扩容或有服务器下线时,均需要通过手动对映射关系进行维护实现对机器标识的管理,管理难度较大。
发明内容
本发明实施例的目的在于提供一种标识生成方法、装置、电子设备及可读存储介质,以实现降低对不同服务器的机器标识的管理难度的技术目的。具体技术方案如下:
在本发明实施的第一方面,首先提供了一种标识生成方法,该方法应用于服务器集群中的任一服务器,包括:
向分布式应用程序协调服务Zookeeper发送注册请求,所述注册请求用于请求所述Zookeeper,在预先创建的持久性节点下创建所述服务器对应的临时性节点;
接收所述Zookeeper返回的创建结果,并将所述创建结果中所携带的临时性节点的节点路径作为所述服务器的机器标识进行缓存;
执行第一生成操作,所述第一生成操作用于基于缓存中的所述机器标识,生成分布式标识。
在本发明实施的第二方面,还提供了一种标识生成装置,应用于服务器集群中的任一服务器,包括:
注册模块,用于向分布式应用程序协调服务Zookeeper发送注册请求,所述注册请求用于请求所述Zookeeper,在预先创建的持久性节点下创建所述服务器对应的临时性节点;
缓存模块,用于接收所述Zookeeper返回的创建结果,并将所述创建结果中所携带的临时性节点的节点路径作为所述服务器的机器标识进行缓存;
第一执行模块,用于执行第一生成操作,所述第一生成操作用于基于缓存中的所述机器标识,生成分布式标识。
在本发明实施的第三方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述第一方面所述的方法。
在本发明实施的第四方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。
在本发明实施的第五方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得所述计算机执行上述第一方面所述的方法。
本发明实施例中,服务器集群中的任一服务器通过向Zookeeper发送注册请求,可以使Zookeeper为其创建对应的临时性节点,服务器将该临时性节点的节点路径作为机器标识进行缓存即可,并执行第一生成操作,以基于缓存的机器标识生成分布式标识。这样,可以利用Zookeeper的临时性节点的特性,无需手动对机器IP与机器标识进行维护以实现对机器标识的管理,服务器通过向Zookeeper进行注册即可得到对应的唯一性的机器标识。相应地,在服务器集群扩容时,新增的服务器也可以通过向Zookeeper发送注册请求获取对应的机器标识,从而可以通过Zookeeper实现对机器标识的自动化管理,降低了对机器标识的管理难度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例中的一种标识生成方法的流程图;
图2为本发明实施例中的一种标识生成过程的示意图;
图3为本发明实施例中的另一种标识生成过程的示意图;
图4为本发明实施例中的一种标识生成装置的结构示意图;
图5为本发明实施例中的一种电子设备的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
图1为本发明实施例中的一种标识生成方法的流程图,该方法可以应用于服务器集群中的任一服务器,如图1所示,该方法包括:
步骤101、向分布式应用程序协调服务Zookeeper发送注册请求,所述注册请求用于请求所述Zookeeper,在预先创建的持久性节点下创建所述服务器对应的临时性节点。
步骤102、接收所述Zookeeper返回的创建结果,并将所述创建结果中所携带的临时性节点的节点路径作为所述服务器的机器标识进行缓存。
步骤103、基于缓存中的所述机器标识执行第一生成操作。
需要说明的是,本发明实施例可以应用于任一类型的应用,例如视频应用、音乐应用、社交应用等,相应地,上述服务器集群可以是为上述应用提供标识生成服务的服务器集合,相应地,该服务器集群中的任一服务器均用于执行标识生成操作。其中,上述Zookeeper指的是开放的分布式应用程序协调服务,可以提供配置维护、名字服务、分布式同步、组服务等,还可以作为服务注册中心。
具体的,在Zookeeper中可以创建节点,节点路径与文件路径相似,均为树结构,相应地,节点路径是唯一的,也就是不同节点的节点路径均不同。在Zookeeper中,节点可以分为持久性节点和临时性节点两种,持久性节点一旦创建,只能由创建者主动移除,而临时性节点与创建者与Zookeeper的连接相关,创建者与Zookeeper保持连接时,则临时性节点一直有效,相应地,在创建者与Zookeeper断开连接时,则该临时性节点被删除。
基于Zookeeper的上述特性,本发明实施例可以将Zookeeper作为服务注册中心,服务器可以向Zookeeper发送注册请求,而Zookeeper接收到注册请求后,可以在Zookeeper上为该服务器创建对应的临时性节点。需要说明的是,在Zookeeper中无法直接创建临时性节点,且为了保持服务器集群中的各服务器对应的临时性节点的分布统一,本发明实施例可以预先在Zookeeper中创建一个持久性节点,则服务器集群中的各服务器对应的临时性节点均可以创建在该持久性节点之下,也就是本发明实施例中的任一服务器对应的临时性节点为预先创建的持久性节点的子节点。
具体的,本发明实施例可以在服务器集群中的各个服务器中均内嵌Zookeeper客户端,通过该客户端与Zookeeper服务端进行交互。需要说明的是,上述Zookeeper均指的是Zookeeper服务端。
进一步地,Zookeeper在接收到服务器的注册请求后,会响应该注册请求在持久性节点下创建与该服务器对应的临时性节点,并将创建结果发送至服务器。由于Zookeeper的节点的唯一性,本发明实施例可以直接将创建结果中携带的临时性节点的节点路径作为机器标识,也就是workerid,服务器可以将workerid缓存在本地,并基于缓存的workerid执行第一生成操作。
其中,上述第一生成操作指的是需要使用机器标识的标识生成操作,可以是雪花算法(snowflake)或随机自增算法。由于Zookeeper中不同节点的节点路径是唯一的,服务器集群中的不同服务器所得到的临时性节点的节点路径均不同,从而可以通过Zookeeper便捷地得到服务器的机器标识。而由于Zookeeper的临时性节点的特性,在服务器与Zookeeper断开连接时,Zookeeper会自行删除对应的临时性节点。相应地,在服务器集群扩容时,新增的服务器也可以通过向Zookeeper发送注册请求获取对应的机器标识,从而可以通过Zookeeper实现对机器标识的自动化管理。
综上所述,本发明实施例中,服务器集群中的任一服务器通过向Zookeeper发送注册请求,可以使Zookeeper为其创建对应的临时性节点,服务器将该临时性节点的节点路径作为机器标识进行缓存即可,并通过所缓存的机器标识执行第一生成操作。这样,可以利用Zookeeper的临时性节点的特性,无需手动对机器IP与机器标识进行维护,服务器通过向Zookeeper进行注册即可得到对应的唯一性的机器标识,在服务器与Zookeeper断开连接时,Zookeeper会自行删除对应的临时性节点。相应地,在服务器集群扩容时,新增的服务器也可以通过向Zookeeper发送注册请求获取对应的机器标识,从而可以通过Zookeeper实现对机器标识的自动化管理,降低了对机器标识的管理难度。
可选的,本发明实施例中,上述步骤101中向分布式应用程序协调服务Zookeeper发送注册请求的操作,本发明实施例具体可以包括下述步骤:
S21、与所述Zookeeper建立网络连接,并基于所述网络连接向所述Zookeeper发送注册请求。
相应的,上述步骤中基于所述网络连接向所述Zookeeper发送注册请求的操作之后,本发明实施例还可以包括:
S22、按照预设周期向所述Zookeeper发送连接维持请求;
所述Zookeeper在按照所述预设周期接收到所述连接维持请求的情况下,确定所述网络连接的连接状态为保持连接,并维持所述服务器对应的临时性节点,以及所述Zookeeper在未按照所述预设周期接收到所述连接维持请求的情况下,确定所述网络连接的连接状态为断开,并在所述持久性节点下删除所述服务器对应的临时性节点。
其中,上述注册请求可以是通过网络连接发送的。具体的,本发明实施例可以在服务器集群中的各服务器中内嵌Zookeeper的客户端,客户端中会配置Zookeeper服务端的连接地址,服务器通过启动该客户端,可以访问该连接地址,从而与Zookeeper服务端建立网络连接。
进一步地,服务器在与Zookeeper建立网络连接后,可以与Zookeeper定期进行通信,也就是按照预设周期向Zookeeper发送连接维持请求,可以使Zookeeper确定服务器处于在线状态,从而保留该服务器对应的临时性节点。其中,上述连接维持请求可以为心跳包形式,也可以为其他预设的会话形式,只需按照预设周期与Zookeeper进行通信即可,本发明实施例对此不作限制。
进一步地,Zookeeper在按照预设周期可以接收到服务器发送的连接维持请求时,确定与该服务器的网络连接的连接状态为保持连接,从而可以保留该服务器对应的临时性节点。相应地,在Zookeeper未按照预设周期接收到服务器发送的连接维持请求时,Zookeeper可以确定该服务器已断连,从而可以确定网络连接的连接状态为断开,此时Zookeeper会删除该服务器对应的临时性节点。
具体的,服务器在正常运行阶段均可以按照预设周期向Zookeeper发送连接维持请求,而当服务器下线或网络中断时,会无法向Zookeeper发送连接维持请求。其中,上述预设周期可以为Zookeeper的经验值,可以为20ms、30ms、60ms等,本发明实施例对此不作限制。
本发明实施例中,通过与所述Zookeeper建立网络连接,并基于所述网络连接向所述Zookeeper发送注册请求;按照预设周期向所述Zookeeper发送连接维持请求;所述Zookeeper在按照所述预设周期接收到所述连接维持请求的情况下,确定所述网络连接的连接状态为保持连接,并维持所述服务器对应的临时性节点,以及所述Zookeeper在未按照所述预设周期接收到所述连接维持请求的情况下,确定所述网络连接的连接状态为断开,并在所述持久性节点下删除所述服务器对应的临时性节点。这样,服务器通过向按照预设周期向所述Zookeeper发送连接维持请求,可以保证缓存中的机器标识维持有效状态,而Zookeeper通过是否定期接收到服务器的连接维持请求,可以对服务器集群中各服务器的连接状态进行有效管理,从而对其对应的临时性节点进行管理。
可选的,上述步骤103中执行第一生成操作的操作,本发明实施例具体可以包括下述步骤:
S1031、将所述机器标识确定为第一字段。
S1032、基于时间戳以及自增值生成第二字段。
S1033、按照预设规则将所述第一字段以及所述第二字段进行拼接,得到分布式标识。
其中,本发明实施例可以是在存在标识生成需求的情况下再执行的。标识生成需求指的是存在新增数据的情况,该数据可以是用户消息、用户账户、视频数据、图片数据等类型,具体根据服务器集群所应用的场景不同而不同,本发明实施例对此不作限制。
进一步地,第一生成操作可以将服务器的机器标识确定为第一字段,并基于时间戳以及自增值生成第二字段,其中,第二字段可以包含第一子字段以及第二子字段,第一子字段可以通过时间戳得到,具体可以是将当前时间戳直接确定为第一子字段,或者,也可以是将当前时间戳与初始时间戳的差值确定为第一子字段。第二子字段则可以为自增值,也就是按照预设规律自行变化的数值,自增值的初始值以及具体的自增规则可以按照实际需求自行设置,本发明实施例对此不作限制。
进一步地,上述预设规则指的是第一字段以及第二字段的拼接规则,可以为第一字段+第二字段,也可以是第二字段+第一字段,还可以是第一子字段+第一字段+第二子字段等,具体可以按照实际需求自行设置,本发明实施例对此不作限制。
可选地,一些情况下,还可以根据业务类型生成第三字段,其中,业务类型可以是数据来源,示例性地,数据来源为三方账号的情况下,可以生成第三字段01,数据来源为手机账号的情况下可以生成第三字段为10,数据来源为邮箱账号的情况下,可以生成第三字段为11。进一步地,上述预设规则可以是第一字段、第二字段以及第三字段的拼接规则,可以为第一字段+第二字段+第三字段,也可以是第二字段+第一字段+第三字段等,具体可以按照实际需求自行设置,本发明实施例对此不作限制。
本发明实施例中,通过将所述机器标识确定为第一字段;基于时间戳以及自增值生成第二字段;按照预设规则将所述第一字段以及所述第二字段进行拼接,得到分布式标识。通过机器标识以及预设规则生成标识,可以满足生成的标识的唯一性。
可选的,上述步骤102将所述创建结果中所携带的临时性节点的节点路径作为所述服务器的机器标识进行缓存之后,本发明实施例具体还可以包括下述步骤:
S31、创建监听器,所述监听器用于对所述网络连接的连接状态进行监听;
S32、在所述监听器监听到的连接状态为断开的情况下,删除缓存中的机器标识,并执行第二生成操作以生成分布式标识,所述第二生成操作为不采用机器标识的分布式标识生成操作。
其中,上述监听器可以为软件形式的,可以通过命令行在Zookeeper的客户端上注册监听器,可以为Listener监听器,也可以为oracle监听器,本发明实施例对此不作限制,通过监听器对Zookeeper服务端的网络连接的连接状态进行监听,可以通过所监听的连接状态对机器标识的状态进行判断。
具体的,在监听到连接状态为保持连接时,表明服务器对应的临时性节点在Zookeeper中依然保留,此时该服务器可以继续使用缓存中的机器标识执行第一生成操作。相应地,在监听到连接状态为断开时,表明服务器对应的临时性节点在Zookeeper中已经被移除,此时缓存中的机器标识可能会被Zookeeper分配给其他的服务器,为了避免与其他服务器的机器标识产生冲突,此时需要删除缓存中的机器标识,也就是不再使用原本的机器标识进行标识生成,而是执行第二生成操作。
其中,上述第二生成操作可以理解为备用操作,第二生成操作指的是无需使用workerid即可生成标识的操作,例如,可以是基于关系型数据库(MySQL)自增方式、基于数据库的号段方式等,具体可以按照实际需求自行设置,本发明实施例对此不作限制。
现有技术中在一些业务场景下,会对分布式标识的长度进行限制,导致分布式标识中的机器标识对应的字段被压缩,又由于各个服务器的机器标识必须满足唯一性,随着服务器数量的增大,必然导致机器标识的位数增大,机器标识对应的字段相应也会增大,这与业务场景的需求产生冲突,因此现有技术中需要定期对已经下线的服务器的机器标识进行手动回收,维护成本较大。
而本发明实施例中,通过创建监听器,监听器用于对所述网络连接的连接状态进行监听;在所述监听器监听到的连接状态为断开的情况下,删除缓存中的机器标识,并执行第二生成操作。这样,通过Zookeeper的特性,在服务器与Zookeeper断开连接时,Zookeeper会自行删除对应的临时性节点,实现对已经下线的服务器的机器标识的自动回收,降低维护成本。同时,由于服务器在监听到连接状态为断开时,Zookeeper往往已经删除了该服务器对应的临时性节点,为了避免标识生成冲突,通过删除缓存中的机器标识,并执行不采用机器标识的分布式标识生成操作,也就是第二生成操作,可以在不影响服务器提供标识生成服务的同时,在一定程度上避免标识冲突。
可选的,上述接收所述Zookeeper返回的创建结果之后,本发明实施例具体还可以包括下述步骤:
在所述创建结果中未携带临时性节点的节点路径的情况下,执行第二生成操作以生成分布式标识,所述第二生成操作为不采用机器标识的分布式标识生成操作。
其中,在Zookeeper创建临时性节点的过程中,可能由于Zookeeper故障或其他原因,导致创建异常,此时Zookeeper会向服务器发送创建异常的创建结果,可以理解的,该创建结果中并未携带临时性节点的节点路径。相应地,在创建结果中未携带临时性节点的节点路径时,表明在Zookeeper中未成功创建临时性节点,此时可以执行无需机器标识的第二生成操作。
本发明实施例中,通过在所述创建结果中未携带临时性节点的节点路径的情况下,执行第二生成操作,实现了降级机制,在Zookeeper故障时,服务器可以继续生成ID,避免影响服务器提供ID生成服务。
可选的,上述执行第二生成操作以生成分布式标识的操作,本发明实施例可以包括下述步骤:
基于预设步长以及预设基值生成自增值,并将所述自增值作为分布式标识。
其中,本发明实施例可以是在存在标识生成需求的情况下执行的。标识生成需求指的是存在新增数据的情况,该数据可以是用户消息、用户账户、视频数据、图片数据等类型,具体根据服务器集群所应用的场景不同而不同,本发明实施例对此不作限制。
其中,上述步长指的是数值的变化量,基值指的是初始值,均可以为预先设置的,则通过预设步长以及预设基值可以生成自增值作为分布式标识。可以理解的,通过这种方式所生成的相邻的分布式标识之间的差值均统一为该预设步长,也就是,基于第二生成操作所生成的各分布式标识是在上一个分布式标识的基础上增加预设步长得到的。
需要说明的是,在执行第二生成操作的情况下,为了避免ID冲突,可以为不同服务器设置不同的预设步长以及预设基值。
本发明实施例中,基于预设步长以及预设基值生成自增值,并将所述自增值作为分布式标识,仅需通过设置预设步长以及预设基值即可生成分布式标识,实现成本较低,且实现过程较为方便,可以提高生成分布式ID的效率。
可选地,本发明实施例具体还可以包括下述步骤:
在所述服务器重新启动后,再次执行所述向分布式应用程序协调服务Zookeeper发送注册请求。
具体的,上述重新启动指的是服务器下线一段时间后,重新上线的情况,由于服务器在下线后与Zookeeper的网络连接已经断开,相应地,Zookeeper也已经删除了该服务器对应的临时性节点,此时服务器需要与Zookeeper重新连接,并重新注册临时性节点,便于Zookeeper对重新启动后的服务器的机器标识重新进行管理。因此,在服务器重新启动后,可以再次执行向Zookeeper发送注册请求的操作,以重新获取机器标识。
图2为本发明实施例中的一种标识生成过程的示意图,如图2所示,可以包含Zookeeper客户端以及Zookeeper服务端,Zookeeper客户端运行于任一用于执行标识生成的服务器上。具体的,Zookeeper客户端可以向Zookeeper服务端发送注册请求,Zookeeper服务端为Zookeeper客户端所在的服务器创建临时性节点,并返回注册成功的信息,此时可以确定该用于执行标识生成的服务器初始化成功,可以通过预设周期向Zookeeper服务端发送连接维持请求,保持两者的长连接,该服务器可以执行第一生成操作。
进一步地,在服务器关机或暂停标识生成业务后,Zookeeper客户端与Zookeeper服务端的连接断开,当服务器重新启动或开始标识生成业务后,服务器需要重新发送注册请求,并在注册成功时,继续执行第一生成操作。进一步地,在注册失败的情况下,此时执行第二生成操作。
图3为本发明实施例中的另一种标识生成过程的示意图,如图3所示,业务后端指的是需要生成分布式ID的业务端,ID-SDK指的是用于生成标识的服务器。具体的,首先判断该服务器是否已通过Zookeeper获取到机器标识,若已获取,则执行第一生成操作,第一生成操作可以是雪花算法(Snowflake算法),从而通过执行第一生成操作生成分布式标识。相应地,在未获取到机器标识的情况下,可以向Zookeeper发送注册请求以获取机器标识,并进一步判断是否存在注册超时或注册失败的情况,若否,表示注册成功,此时可以获取注册后的机器标识并执行第一生成操作。
进一步地,在注册超时或注册失败的情况下,可以执行第二生成操作。图3中的第二生成操作以关系型数据库(MySQL)方式为例,可以从指定内存中获取一组步长和基值用于生成自增值作为分布式标识,该指定内存中可以包含预先设置的多组步长以及基值,同时可以为该指定内存设置内存锁(Java Virtual Machine内存锁,JVM内存锁),从而保证同一时间只有一个服务器可以访问并获取步长以及基值。同时,该内存锁还可以在任一组步长以及基值被读取后,对该组步长以及基值进行更新,避免其他服务器读取到相同的步长以及基值,进而在一定程度上保证服务器集群所生成的标识不重复。可选地,在服务器通过执行第二生成操作生成分布式标识时,可以在该服务器中设置两个数据中心(DataCenter,DC),用于记录当前已生成的标识的最大值,从而可以通过当前的最大值以及步长不断生成标识,同时通过设置两个数据中心可以避免任一数据中心故障时无法获取当前的最大值的问题,避免对第二生成操作的执行造成影响,保证第二生成操作的高可用。可选地,两个DC可以分别记录奇数最大值以及偶数最大值。
本发明实施例所提供的标识生成方法可以应用于云原生场景,由于云原生场景下生成ID的服务器都是通过容器部署的,容器在资源调度时有动态扩容缩容重启的需要,现有方式中,通过机器的固定IP分配机器ID,也就是为机器IP分配对应的机器ID,并将机器IP和机器ID的对应关系静态记录在数据库中,而云原生场景下,重启后服务器的机器IP会发生变化,相应地,此时需要重新为变化后的机器IP分配机器ID,并手动变更数据库中的记录以对服务器的机器ID进行维护,但这种方式维护难度较大。本发明实施例通过Zookeeper的临时性节点的特性,无需记录机器IP以及机器ID的对应关系以及手动变更记录,服务器通过向Zookeeper进行注册即可得到对应的唯一性的机器标识,在服务器与Zookeeper断开连接时,Zookeeper会自行删除对应的临时性节点。相应地,在服务器集群扩容时,新增的服务器也可以通过向Zookeeper发送注册请求获取对应的机器标识,从而可以自动、动态维护生成ID的服务器的机器标识,更好地适配云原生场景。
图4为本发明实施例中的一种标识生成装置的结构示意图,该装置应用于服务器集群中的任一服务器,如图4所示,该装置20可以包括:
注册模块201,用于向分布式应用程序协调服务Zookeeper发送注册请求,所述注册请求用于请求所述Zookeeper,在预先创建的持久性节点下创建所述服务器对应的临时性节点;
缓存模块202,用于接收所述Zookeeper返回的创建结果,并将所述创建结果中所携带的临时性节点的节点路径作为所述服务器的机器标识进行缓存;
第一执行模块203,用于第一生成操作,所述第一生成操作用于基于缓存中的所述机器标识,生成分布式标识。
可选的,所述注册模块201,具体用于:与所述Zookeeper建立网络连接,并基于所述网络连接向所述Zookeeper发送注册请求;
所述装置20还包括:
维持模块,用于按照预设周期向所述Zookeeper发送连接维持请求;
所述Zookeeper在按照所述预设周期接收到所述连接维持请求的情况下,确定所述网络连接的连接状态为保持连接,并维持所述服务器对应的临时性节点,以及所述Zookeeper在未按照所述预设周期接收到所述连接维持请求的情况下,确定所述网络连接的连接状态为断开,并在所述持久性节点下删除所述服务器对应的临时性节点。
可选的,所述装置20还包括:
监听模块,用于创建监听器,所述监听器用于对所述网络连接的连接状态进行监听;
删除模块,用于在所述监听器监听到的连接状态为断开的情况下,删除缓存中的机器标识,并执行第二生成操作以生成分布式标识,所述第二生成操作为不采用机器标识的分布式标识生成操作。
可选的,所述装置20还包括:
第二执行模块,用于在所述创建结果中未携带临时性节点的节点路径的情况下,执行第二生成操作以生成分布式标识,所述第二生成操作为不采用机器标识的分布式标识生成操作。
可选的,所述第一执行模块,具体用于:
将所述机器标识确定为第一字段;
基于时间戳以及自增值生成第二字段;
按照预设规则将所述第一字段以及所述第二字段进行拼接,得到分布式标识。
可选的,所述第二执行模块,具体用于:
基于预设步长以及预设基值生成自增值,并将所述自增值作为分布式标识。
可选的,所述装置20还包括:
第三执行模块,用于在所述服务器重新启动后,再次执行所述向分布式应用程序协调服务Zookeeper发送注册请求。
综上所述,本发明实施例中,服务器集群中的任一服务器通过向Zookeeper发送注册请求,可以使Zookeeper为其创建对应的临时性节点,服务器将该临时性节点的节点路径作为机器标识进行缓存即可,并执行第一生成操作。这样,可以利用Zookeeper的临时性节点的特性,无需手动对机器IP与机器标识进行维护,服务器通过向Zookeeper进行注册即可得到对应的唯一性的机器标识,在服务器与Zookeeper断开连接时,Zookeeper会自行删除对应的临时性节点。相应地,在服务器集群扩容时,新增的服务器也可以通过向Zookeeper发送注册请求获取对应的机器标识,从而可以通过Zookeeper实现对机器标识的自动化管理,降低了对机器标识的管理难度。
本发明实施例还提供了一种电子设备,如图5所示,包括处理器9001、通信接口9002、存储器9003和通信总线9004,其中,处理器9001,通信接口9002,存储器9003通过通信总线9004完成相互间的通信,
存储器9003,用于存放计算机程序;
处理器9001,用于执行存储器9003上所存放的程序时,实现如下步骤:
向分布式应用程序协调服务Zookeeper发送注册请求,所述注册请求用于请求所述Zookeeper,在预先创建的持久性节点下创建所述服务器对应的临时性节点;
接收所述Zookeeper返回的创建结果,并将所述创建结果中所携带的临时性节点的节点路径作为所述服务器的机器标识进行缓存;
执行第一生成操作,所述第一生成操作用于基于缓存中的所述机器标识,生成分布式标识。
可选地,所述向分布式应用程序协调服务Zookeeper发送注册请求,包括:与所述Zookeeper建立网络连接,并基于所述网络连接向所述Zookeeper发送注册请求;
所述基于所述网络连接向所述Zookeeper发送注册请求之后,所述方法还包括:
按照预设周期向所述Zookeeper发送连接维持请求;
所述Zookeeper在按照所述预设周期接收到所述连接维持请求的情况下,确定所述网络连接的连接状态为保持连接,并维持所述服务器对应的临时性节点,以及所述Zookeeper在未按照所述预设周期接收到所述连接维持请求的情况下,确定所述网络连接的连接状态为断开,并在所述持久性节点下删除所述服务器对应的临时性节点。
可选地,所述将所述创建结果中所携带的临时性节点的节点路径作为所述服务器的机器标识进行缓存之后,所述方法还包括:
创建监听器,所述监听器用于对所述网络连接的连接状态进行监听;
在所述监听器监听到的连接状态为断开的情况下,删除缓存中的机器标识,并执行第二生成操作以生成分布式标识,所述第二生成操作为不采用机器标识的分布式标识生成操作。
可选地,所述接收所述Zookeeper返回的创建结果之后,所述方法还包括:
在所述创建结果中未携带临时性节点的节点路径的情况下,执行第二生成操作以生成分布式标识,所述第二生成操作为不采用机器标识的分布式标识生成操作。
可选地,所述执行第一生成操作,包括:
将所述机器标识确定为第一字段;
基于时间戳以及自增值生成第二字段;
按照预设规则将所述第一字段以及所述第二字段进行拼接,得到分布式标识。
可选地,所述执行第二生成操作以生成分布式标识,包括:
基于预设步长以及预设基值生成自增值,并将所述自增值作为分布式标识。
可选地,在所述服务器重新启动后,再次执行所述向分布式应用程序协调服务Zookeeper发送注册请求。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的标识生成方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的标识生成方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
需要说明的是,本申请实施例中获取各种数据相关过程,都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种标识生成方法,其特征在于,应用于服务器集群中的任一服务器,所述方法包括:
向分布式应用程序协调服务Zookeeper发送注册请求,所述注册请求用于请求所述Zookeeper,在预先创建的持久性节点下创建所述服务器对应的临时性节点;
接收所述Zookeeper返回的创建结果,并将所述创建结果中所携带的临时性节点的节点路径作为所述服务器的机器标识进行缓存;
执行第一生成操作,所述第一生成操作用于基于缓存中的所述机器标识,生成分布式标识。
2.根据权利要求1所述的方法,其特征在于,所述向分布式应用程序协调服务Zookeeper发送注册请求,包括:与所述Zookeeper建立网络连接,并基于所述网络连接向所述Zookeeper发送注册请求;
所述基于所述网络连接向所述Zookeeper发送注册请求之后,所述方法还包括:
按照预设周期向所述Zookeeper发送连接维持请求;
所述Zookeeper在按照所述预设周期接收到所述连接维持请求的情况下,确定所述网络连接的连接状态为保持连接,并维持所述服务器对应的临时性节点,以及所述Zookeeper在未按照所述预设周期接收到所述连接维持请求的情况下,确定所述网络连接的连接状态为断开,并在所述持久性节点下删除所述服务器对应的临时性节点。
3.根据权利要求2所述的方法,其特征在于,所述将所述创建结果中所携带的临时性节点的节点路径作为所述服务器的机器标识进行缓存之后,所述方法还包括:
创建监听器,所述监听器用于对所述网络连接的连接状态进行监听;
在所述监听器监听到的连接状态为断开的情况下,删除缓存中的机器标识,并执行第二生成操作以生成分布式标识,所述第二生成操作为不采用机器标识的分布式标识生成操作。
4.根据权利要求1所述的方法,其特征在于,所述接收所述Zookeeper返回的创建结果之后,所述方法还包括:
在所述创建结果中未携带临时性节点的节点路径的情况下,执行第二生成操作以生成分布式标识,所述第二生成操作为不采用机器标识的分布式标识生成操作。
5.根据权利要求1所述的方法,其特征在于,所述执行第一生成操作,包括:
将所述机器标识确定为第一字段;
基于时间戳以及自增值生成第二字段;
按照预设规则将所述第一字段以及所述第二字段进行拼接,得到分布式标识。
6.根据权利要求3或4所述的方法,其特征在于,所述执行第二生成操作以生成分布式标识,包括:
基于预设步长以及预设基值生成自增值,并将所述自增值作为分布式标识。
7.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在所述服务器重新启动后,再次执行所述向分布式应用程序协调服务Zookeeper发送注册请求。
8.一种标识生成装置,其特征在于,应用于服务器集群中的任一服务器,所述装置包括:
注册模块,用于向分布式应用程序协调服务Zookeeper发送注册请求,所述注册请求用于请求所述Zookeeper,在预先创建的持久性节点下创建所述服务器对应的临时性节点;
缓存模块,用于接收所述Zookeeper返回的创建结果,并将所述创建结果中所携带的临时性节点的节点路径作为所述服务器的机器标识进行缓存;
第一执行模块,用于执行第一生成操作,所述第一生成操作用于基于缓存中的所述机器标识,生成分布式标识。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-7中任一所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202410250202.5A CN118138562A (zh) | 2024-03-05 | 2024-03-05 | 标识生成方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202410250202.5A CN118138562A (zh) | 2024-03-05 | 2024-03-05 | 标识生成方法、装置、电子设备及可读存储介质 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN118138562A true CN118138562A (zh) | 2024-06-04 |
Family
ID=91229710
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202410250202.5A Pending CN118138562A (zh) | 2024-03-05 | 2024-03-05 | 标识生成方法、装置、电子设备及可读存储介质 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN118138562A (zh) |
-
2024
- 2024-03-05 CN CN202410250202.5A patent/CN118138562A/zh active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN106850710B (zh) | 一种数据云存储系统、客户终端、存储服务器及应用方法 | |
| US9183148B2 (en) | Efficient distributed cache consistency | |
| KR101150146B1 (ko) | 클라이언트가 서버와 상호작용하는 컴퓨터 구현 방법, 서버가 클라이언트와 상호작용하는 컴퓨터 구현 방법, 오브젝트를 공유하는 분산 파일 시스템 및 컴퓨터 판독가능 기록 매체 | |
| US8069224B2 (en) | Method, equipment and system for resource acquisition | |
| CN108696581B (zh) | 分布式信息的缓存方法、装置、计算机设备以及存储介质 | |
| CN105338078A (zh) | 用于存储系统的数据存储方法和装置 | |
| CN114900449B (zh) | 一种资源信息管理方法、系统及装置 | |
| CN110855627B (zh) | 应用部署方法、装置、设备及介质 | |
| CN109167819B (zh) | 数据同步系统、方法、装置及存储介质 | |
| CN110781149A (zh) | 管理直播间信息的方法、装置、设备及存储介质 | |
| CN113220342A (zh) | 中心化配置方法、装置、电子设备及存储介质 | |
| CN111104250B (zh) | 用于数据处理的方法、设备和计算机可读介质 | |
| CN108509296B (zh) | 一种处理设备故障的方法和系统 | |
| CN112214377B (zh) | 一种设备管理方法及系统 | |
| CN110798358B (zh) | 分布式服务标识方法、装置、计算机可读介质及电子设备 | |
| CN113703866A (zh) | 配置中心信息同步方法及系统 | |
| CN115225645B (zh) | 一种服务更新方法、装置、系统和存储介质 | |
| CN118138562A (zh) | 标识生成方法、装置、电子设备及可读存储介质 | |
| CN115361440B (zh) | 多Kubernetes集群的端点资源的更新方法、更新装置及电子设备 | |
| CN114143730B (zh) | 信令处理方法、通信系统、电子设备和存储介质 | |
| CN111736944A (zh) | 基于Kubernetes的Docker容器定位方法及装置 | |
| CN111629054B (zh) | 消息处理方法、装置、系统、电子设备及可读存储介质 | |
| CN115242595A (zh) | 网络设备发现方法、装置、电子设备和存储介质 | |
| CN113986672A (zh) | 一种分布式文件系统的cli命令的执行方法及装置 | |
| CN116361332A (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 | ||
| CB02 | Change of applicant information | ||
| CB02 | Change of applicant information |
Country or region after: China Address after: 100190 Beijing City Haidian District Beisihuan West Road No. 52, 1st floor, Room 108 Applicant after: BEIJING QIYI CENTURY SCIENCE & TECHNOLOGY Co.,Ltd. Address before: A 100080 street Beijing city Haidian District North No. 2, building 10, 11 layers of Goldtron expand Applicant before: BEIJING QIYI CENTURY SCIENCE & TECHNOLOGY Co.,Ltd. Country or region before: China |