CN114363333B - 分布式系统中分配机器id的方法、装置、设备与介质 - Google Patents
分布式系统中分配机器id的方法、装置、设备与介质 Download PDFInfo
- Publication number
- CN114363333B CN114363333B CN202111639566.5A CN202111639566A CN114363333B CN 114363333 B CN114363333 B CN 114363333B CN 202111639566 A CN202111639566 A CN 202111639566A CN 114363333 B CN114363333 B CN 114363333B
- Authority
- CN
- China
- Prior art keywords
- machine
- service
- service instance
- response
- preset condition
- 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 52
- 230000004044 response Effects 0.000 claims abstract description 61
- 238000004590 computer program Methods 0.000 claims abstract description 18
- 230000015654 memory Effects 0.000 claims description 12
- 230000003862 health status Effects 0.000 claims description 2
- 238000004891 communication Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 7
- 230000008602 contraction Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000011084 recovery Methods 0.000 description 6
- 230000003936 working memory Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000010267 cellular communication Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Landscapes
- Hardware Redundancy (AREA)
Abstract
本公开提供了一种分布式系统中分配机器ID的方法及其装置、分布式系统、电子设备与非暂态计算机可读存储介质和计算机程序产品,涉及计算机技术领域,尤其涉及唯一ID生成技术领域。实现方案为:响应于接收到某一服务实例的ID获取请求,为该服务实例分配唯一机器ID;响应于确定具有机器ID的任一服务实例满足第一预设条件,回收该服务实例的机器ID;以及响应于确定满足第二预设条件,将已回收的多个机器ID设置为未分配的机器ID以供重新分配给服务实例。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及唯一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示出了根据本公开示例性实施例的分布式系统生成的服务ID的示意图;
图5示出了根据本公开示例性实施例的分布式系统中分配机器ID的装置的结构框图;
图6示出了根据本公开示例性实施例的分布式系统的示意图;
图7示出了根据本公开实施例的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本公开中,除非另有说明,否则使用术语“第一”、“第二”等来描述各种要素不意图限定这些要素的位置关系、时序关系或重要性关系,这种术语只是用于将一个元件与另一元件区分开。在一些示例中,第一要素和第二要素可以指向该要素的同一实例,而在某些情况下,基于上下文的描述,它们也可以指代不同实例。
在本公开中对各种所述示例的描述中所使用的术语只是为了描述特定示例的目的,而并非旨在进行限制。除非上下文另外明确地表明,如果不特意限定要素的数量,则该要素可以是一个也可以是多个。此外,本公开中所使用的术语“和/或”涵盖所列出的项目中的任何一个以及全部可能的组合方式。
相关技术中,ID生成服务的实现方式是通过预定算法生成唯一ID。这种实现方式的缺点是在分布式场景下当数据流量较大、服务实例数量多、存在频繁扩缩容和服务实例短时间内多次重启时,动态的服务实例变化将导致ID生成服务性能变差,例如,ID生成服务速度变慢、ID生成服务的可靠性变差、甚至出现重复的ID。
为了解决上述问题,本公开提供了一种分布式系统中分配机器ID的方法,通过自定义机器ID数量以及ID生成规则,并引入分配机器ID的装置与服务实例之间的通信过程,动态分配机器ID。所述方法通过监控服务实例的运行状况,实现对机器ID的回收和再分配,有效利用了ID生成资源,提高了分布式场景下的ID生成服务性能和可靠性。
本公开的分布式系统中分配机器ID的方法例如可以但不限于应用于订单处理系统,通过采用本公开实施例中的方法可以及时回收、再分配机器ID,在服务实例数量多、频繁扩缩容来增加或减少服务实例、服务实例短时间内多次上/下线或重启的情况下,提高了订单处理系统的性能和稳定性。
以下将结合附图,详细描述本公开的实施例。
图1示出了根据本公开示例性实施例的分布式系统中分配机器ID的方法100的流程图,该分布式系统包括至少一个服务实例。如图1所示,该分配机器ID的方法100包括:步骤S102,响应于接收到某一服务实例的ID获取请求,为该服务实例分配唯一机器ID;步骤S104,响应于确定具有机器ID的任一服务实例满足第一预设条件,回收该服务实例的机器ID;以及步骤S106,响应于确定满足第二预设条件,将已回收的多个机器ID设置为未分配的机器ID以供重新分配给服务实例。
由此可以实现对机器ID的及时回收和实现对机器ID的再分配。当服务实例数量较多,存在频繁扩缩容或短时间内被多次重启时,可以实现对机器ID的有效利用,减轻短时间内机器ID需求激增带来的压力以及出现重复ID的风险,提高ID生成服务的整体性能和可靠性。
在本实施例中,被分配给服务实例的唯一机器ID是未被分配给其他服务实例的机器ID。每个机器ID与一个服务实例对应,不同机器ID对应于不同的服务实例,不同的服务实例被分配的机器ID也不相同。服务实例在接收到被分配的唯一机器ID之后,基于该机器ID与服务ID生成规则来生成服务ID。
示例性地,被分配的机器ID和被服务实例生成的服务ID可以是预定位数的二进制数组,该机器ID的位数可以基于用户所需的服务实例数量而被确定。例如,当用户需要多于2048但小于4096个服务实例时,可以为用户分配12位或具有更多位数的二进制数组作为机器ID。该服务ID可以用于表示例如订单号、流水号、用户ID等等。但不限于此,只要能实现上文所描述的功能,对机器ID和服务ID的具体实现形式不做限制。
在一些实施例中,该方法还包括:在步骤S102之前,即,在响应于接收到某一服务实例的ID获取请求,为该服务实例分配唯一机器ID之前,服务实例首先申请身份代码(code)和认证令牌(token)中的至少一者,该身份代码和认证令牌用于唯一地标识该服务实例。该服务实例在被启动时,该服务实例基于该身份代码和认证令牌中的至少一者来生成ID获取请求,被分配给服务实例的唯一机器ID与该服务实例的身份代码和认证令牌中的至少一者对应。
在一些实施例中,该分配机器ID的方法还包括:响应于确定满足第三预设条件,确定某一服务实例已下线。根据本实施例,结合图1,在步骤S104,响应于确定具有机器ID的任一服务实例满足第一预设条件,回收该服务实例的机器ID中的第一预设条件可以被设置为确定该服务实例已下线,即,响应于确定服务实例已下线,回收该服务实例的机器ID。
根据一些实施例,该第三预设条件可以是在预设时长内未接收到该服务实例上报的相关数据,也可以是接收到该服务实例上报的下线信息(例如,故障信息、重启信息、任务完成信息等等),或接收到经由外部设备指示的该服务实例的下线信息。
图2示出了根据本公开示例性实施例的分布式系统中分配机器ID的方法200的流程图。如图2所示,该分配机器ID的方法200包括:步骤S202,接收服务实例上报的相关数据;以及步骤S204,响应于确定满足第三预设条件,确定该服务实例已下线。该第三预设条件为在预设时长内未接收到该服务实例上报的相关数据。
由此,通过接收服务实例上报的相关数据可以实现对服务实例的运行情况的监测。当服务实例未处于正常运行状态时(例如,被重启、任务已完成或发生故障),可以及时确定该服务实例已下线,以便于后续回收被分配给该服务实例的机器ID,实现机器ID的动态回收。
根据一些实施例,服务实例上报的相关数据可以包括服务实例的健康状态和/或服务实例生成服务ID的速率。示例性地,服务实例的健康状态可以包括服务实例的负载信息、运行状态信息等等。该服务ID可以由分配给该服务实例的服务ID生成规则确定,服务ID可以包括机器ID,还可以包括时间戳、随机数和服务序号中的至少一者。在下文中结合图4进一步详细描述了服务ID生成规则的一个示例。
在一些实施例中,服务实例上报的相关数据中还可以包括该服务实例正在使用的机器ID和/或服务ID生成规则,当检测到服务实例正在使用的机器ID和/或服务ID生成规则与分配给该服务实例的机器ID和/或服务ID生成规则不相符时,可以进一步采取对应措施,例如,发出警报、更正机器ID和/或服务ID生成规则、重启该服务实例等等。
在一些实施例中,服务实例可以按照预定的周期上报相关数据。该预定的周期可以是时间周期,例如,1秒。步骤S204中的预设时长可以包括多个完整的时间周期,例如,3个时间周期,即,响应于3秒内未接收到某一服务实例上报的相关数据,确定该服务实例已下线。
在一些实施例中,该分配机器ID的方法200中步骤S104可包括:将已下线的服务实例的机器ID加入回收队列。结合图1,在步骤S104中的第一预设条件可以被设置为确定回收队列中的机器ID已达到过期回收时间。即,当该服务实例已下线时,不立即回收该服务实例的机器ID,而是将该服务实例的机器ID加入回收队列,当该机器ID在回收队列中达到过期回收时间之后,再回收该机器ID。
图3示出了根据本公开示例性实施例的分布式系统中分配机器ID的方法300的流程图。如图3所示,该分配机器ID的方法300包括:步骤S302,接收服务实例的获取请求;步骤S304,确定是否满足第二预设条件;如果确定不满足第二预设条件,则执行步骤S306,为服务实例分配下一个未被分配的机器ID;如果确定满足第二预设条件,则执行步骤S308,将已回收的多个机器ID设置为未分配的机器ID以供重新分配给服务实例,之后执行步骤S310,为服务实例分配已回收过并且被设置为未分配的机器ID中的最小机器ID。
在本实施例中,结合图1,第二预设条件可以是确定当前分配的服务实例的机器ID达到预设阈值。在不满足第二预设条件的情况下,执行步骤S306,为服务实例分配下一个未被分配的机器ID。而在满足第二预设条件的情况下,即,确定当前分配的服务实例的机器ID达到预设阈值,执行步骤S308,将已回收的多个机器ID设置为未分配的机器ID以供重新分配给服务实例,并执行步骤S310,为服务实例分配已回收过并且被设置为未分配的机器ID中的最小机器ID。
由此,可以实现机器ID回收后的再分配机制,保持以递增的方式快速、有效地分配机器ID,保证机器ID资源的合理利用。避免当服务实例数量快速增长或减少的扩缩容场景下,机器ID资源分配不足的情况。
示例性的,服务启动以及服务重启时,为服务实例分配的机器ID可以从1开始,并且响应于依次接收到多个服务实例的获取请求,以递增的方式依次为多个服务实例分配机器ID。需要说明的是,在此仅是举例说明本公开实施例中的方案如何实现为服务实例分配ID,并非限定仅能以这种方式来为服务实例分配ID。
根据一些实施例,响应于依次接收到多个ID获取请求并且确定不满足第二预设条件,以ID递增的方式依次为多个ID获取请求各自相对应的服务实例分配机器ID。
示例性地,至少一个服务实例可以包括第一服务实例和第二服务实例,响应于依次接收到第一服务实例和第二服务实例的获取请求,为第一服务实例和第二服务实例分别分配唯一机器ID,并且第二服务实例的机器ID大于所述第一服务实例的机器ID。
具体的,服务实例的机器ID以递增的方式分配,当接收到第一服务实例的获取请求时,可以为第一服务实例分配大于上一次分配的机器ID的最小的未分配的机器ID。当在接收到第一服务实例的获取请求之后接收到第二服务实例的获取请求时,可以为第二服务实例分配大于第一服务实例的机器ID的最小未分配的机器ID。例如,当为第一服务实例分配的机器ID为N,且机器ID N+1未分配时,为第二服务实例分配机器ID N+1。
根据一些实施例,响应于接收到某一服务实例的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为M,且机器ID M+1已回收过并且被设置为未分配时,为第五服务实例分配机器ID M+1。如果从M+1至M+P都尚未被回收也未被设置为未分配,且机器ID M+P+1已回收过并且被设置为未分配时,为第五服务实例分配机器ID M+P+1。
由此,通过记录最近一次分配的机器ID并以递增的方式分配机器ID,可以使得服务实例以最快的速度得到被分配的机器ID,进而提高机器ID分配的整体速率。在频繁扩缩容或服务实例短时间内多次重启的情况下(例如,软件版本更新),可以提高机器ID的分配效率。
根据一些实施例,该预设阈值可以由ID生成规则中确定的机器ID位数而确定,例如当机器ID由具有某一位数的二进制数组表示时,预设阈值可以被确定为由该位数的二进制数组所能表示的最大值。该预设阈值大于服务实例的数量,以保证每个服务实例被分配的机器ID不会重复。
在一些实施例中,当服务实例的需求数量增加至超过预设阈值时,即,所有可用的机器ID都已经被分配给服务实例。响应于预设阈值之内的所有机器ID中不存在未分配的机器ID,发起不存在未分配的机器ID的警报。可以根据警报的信息重新定义预设阈值或调整ID生成规则。
根据一些实施例,响应于服务重启(例如,ID生成服务),重新分配所有服务实例的机器ID。具体地,当服务被重启时,可以将所有的机器ID设置为未分配的机器ID,由此重新为服务实例分配机器ID。
根据一些实施例,上文所描述的分配机器ID的方法还可以包括:响应于接收到某一服务实例的获取请求,为该服务实例分配服务ID生成规则。图4示出了根据本公开示例性实施例生成的服务ID 400的示意图。
根据一些实施例,服务ID生成规则包括机器ID位数,还包括以下各项中的至少其中一者:时间戳位数、随机数位数和服务序号位数。
如图4所示,在本实施例中,服务ID生成规则定义:服务ID 400具有x位时间戳401、y位机器ID 402和z位服务序号403。机器ID 402的位数可以由用户根据服务实例的使用数量需求而被定义。服务序号403可以指代在时间戳相同的情况下(例如,在同一毫秒内)生成的服务ID的序号,该服务序号403可以是由递增的方式生成的,也可以是由随机的方式生成的。在一些实施例中,服务ID生成规则还可以定义起始时间戳。在一些实施例中,由服务ID生成规则定义的服务ID总位数可以根据硬件或软件的需要和要求而变化,例如,根据数据库支持的存储类型的位数而被定义。
根据本公开的另一方面,还提供一种分布式系统中分配机器ID的装置。图5示出了根据本公开示例性实施例的分布式系统中分配机器ID的装置500的结构框图,该分布式系统包括至少一个服务实例。如图5所示,该分布式系统中分配机器ID的装置500包括:中央控制器501,被配置用于响应于接收到某一服务实例的ID获取请求,为该服务实例分配唯一机器ID;回收单元502,被配置用于响应于确定具有机器ID的任一服务实例满足第一预设条件,回收该服务实例的机器ID;以及释放单元503,被配置用于响应于确定满足第二预设条件,将已回收的多个机器ID设置为未分配的机器ID以供中央控制器重新分配给服务实例。
由此可以实现对机器ID的及时回收和实现对机器ID的再分配。当服务实例数量较多,存在频繁扩缩容或短时间内被多次重启时,可以实现对机器ID的有效利用,减轻短时间内机器ID需求激增带来的压力以及出现重复ID的风险,提高ID生成服务的整体性能和可靠性。
根据一些实施例,中央控制器501还被配置用于响应于确定满足第三预设条件,确定某一服务实例已下线。该第一预设条件为确定该服务实例已下线。
根据一些实施例,中央控制器501还被配置用于接收服务实例上报的相关数据,该第三预设条件可以是在预设时长内未接收到该服务实例上报的相关数据。可以理解的,该第三预设条件也可以是接收到该服务实例上报的下线信息(例如,故障信息、重启信息、任务完成信息等等),或接收到经由外部设备指示的该服务实例的下线信息。
根据本实施例,回收单元502中的第一预设条件可以为确定该服务实例已下线,即,响应于确定服务实例已下线,回收该服务实例的机器ID。由此,通过接收服务实例上报的相关数据可以实现对服务实例的运行情况的监测。当服务实例未处于正常运行状态时(例如,被重启、任务已完成或发生故障),可以及时判定该服务实例已下线,以便于后续回收被分配给该服务实例的机器ID,实现机器ID的动态回收。
根据一些实施例,其中,中央控制器501还被配置用于响应于依次接收到多个ID获取请求并且确定不满足第二预设条件,以ID递增的方式依次为多个ID获取请求各自相对应的服务实例分配机器ID。示例性地,至少一个服务实例可以包括第一服务实例和第二服务实例,其中,中央控制器501还被配置用于响应于依次接收到第一服务实例和第二服务实例的获取请求,为第一服务实例和第二服务实例分别分配唯一机器ID,并且第二服务实例的机器ID大于第一服务实例的机器ID。即,服务实例的机器ID可以以递增的方式分配,具体分配方式与前文所描述的一致,在此不再赘述。
根据一些实施例,其中,中央控制器501还被配置用于响应于接收到某一服务实例的获取请求并且确定满足第二预设条件,从已回收过并且被设置为未分配的多个机器ID中为该服务实例分配唯一机器ID。具体地,第二预设条件可以是确定当前分配的服务实例的机器ID达到预设阈值,具体分配方式可以与前文所描述的一致,在此不再赘述。
根据一些实施例,其中,中央控制器501还被配置用于响应于依次接收到多个ID获取请求并且确定满足第二预设条件,以ID递增的方式从已回收过并且被设置为未分配的机器ID中依次为多个ID获取请求各自相对应的服务实例分配机器ID。示例性地,至少一个服务实例还包括第三服务实例和第四服务实例,其中,中央控制器501还被配置用于响应于依次接收到第三服务实例和第四服务实例的获取请求并且确定满足第二预设条件,从已回收过并且被设置为未分配的机器ID中为第三服务实例和第四服务实例分配唯一机器ID,并且第四服务实例的机器ID大于第三服务实例的机器ID。具体地,第二预设条件可以是确定当前分配的服务实例的机器ID达到预设阈值,具体分配方式可以与前文所描述的一致,在此不再赘述。
根据一些实施例,中央控制器501还被配置用于响应于接收到某一服务实例的获取请求,为该服务实例分配服务ID生成规则。具体分配方式与服务ID生成规则可以与前文所描述的一致,在此不再赘述。
根据一些实施例,中央控制器501还被配置用于响应于服务重启,重新分配所有服务实例的机器ID。具体地,当服务被重启时,可以将所有的机器ID设置为未分配的机器ID,由此重新为服务实例分配机器ID。
图6示出了根据本公开示例性实施例的分布式系统的示意图。如图6所示,该分布式系统中包括:至少一个服务实例(例如,第一服务实例601、第二服务实例602、第三服务实例603、…第N服务实例610);以及如上的分配机器ID的装置500,其中,每个服务实例被配置用于基于中央控制器501所分配的机器ID生成服务ID。
在本实施例中,共N个服务实例与装置500通信地耦接。由此,通过装置500中的中央控制器501可以对服务实例实施监测,接收服务实例上报的相关数据,基于相关数据可以实现对机器ID的及时回收和对机器ID的再分配。当服务实例数量较多,存在频繁扩缩容或短时间内被多次重启时,可以实现对机器ID的有效利用,减轻短时间内机器ID激增带来的压力以及出现重复ID的风险,提高服务ID生成的整体性能和可靠性。
根据一些实施例,中央控制器501还被配置用于响应于接收到某一服务实例的获取请求,为该服务实例分配服务ID生成规则,每一服务实例被配置用于基于中央控制器所分配的机器ID和服务ID生成规则生成服务ID。具体分配方式与服务ID生成规则可以与前文所描述的一致,在此不再赘述。
根据本公开的另一方面,还提供一种电子设备,包括:至少一个处理器;以及存储器,所述存储器存储程序,所述程序包括指令,所述指令在由所述处理器执行时使得所述处理器能够执行上述的分布式系统中分配机器ID的方法。
根据本公开的另一方面,还提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储有计算机程序,所述计算机程序包括指令,所述指令在由计算设备的处理器执行时,使所述计算机执行上述的分布式系统中分配机器ID的方法。
根据本公开的另一方面,还提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序被处理器执行时实现上述的分布式系统中分配机器ID的方法的步骤。
参见图7,现将描述可以作为本公开的电子设备700的结构框图,其是可以应用于本公开的各方面的硬件设备的示例。电子设备可以是不同类型的计算机设备,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
图7示出了根据本公开实施例的电子设备的框图。如图7所示,电子设备700可以包括能够通过系统总线703彼此通信的至少一个处理器701、工作存储器702、I/O设备704、显示设备705、存储装置706和通信接口707。
处理器701可以是单个处理单元或多个处理单元,所有处理单元可以包括单个或多个计算单元或者多个核心。处理器701可以被实施成一个或更多微处理器、微型计算机、微控制器、数字信号处理器、中央处理单元、状态机、逻辑电路和/或基于操作指令来操纵信号的任何设备。处理器701可以被配置成获取并且执行存储在工作存储器702、存储装置706或者其他计算机可读介质中的计算机可读指令,诸如操作系统702a的程序代码、应用程序702b的程序代码等。
工作存储器702和存储装置706是用于存储指令的计算机可读存储介质的示例,指令由处理器701执行来实施前面所描述的各种功能。工作存储器702可以包括易失性存储器和非易失性存储器二者(例如RAM、ROM等等)。此外,存储装置706可以包括硬盘驱动器、固态驱动器、可移除介质、包括外部和可移除驱动器、存储器卡、闪存、软盘、光盘(例如CD、DVD)、存储阵列、网络附属存储、存储区域网等等。工作存储器702和存储装置706在本文中都可以被统称为存储器或计算机可读存储介质,并且可以是能够把计算机可读、处理器可执行程序指令存储为计算机程序代码的非暂态介质,计算机程序代码可以由处理器701作为被配置成实施在本文的示例中所描述的操作和功能的特定机器来执行。
I/O设备704可以包括输入设备和/或输出设备,输入设备可以是能向电子设备700输入信息的任何类型的设备,可以包括但不限于鼠标、键盘、触摸屏、轨迹板、轨迹球、操作杆、麦克风和/或遥控器。输出设备可以是能呈现信息的任何类型的设备,并且可以包括但不限于包括视频/音频输出终端、振动器和/或打印机。
通信接口707允许电子设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙TM设备、802.11设备、WiFi设备、WiMax设备、蜂窝通信设备和/或类似物。
工作寄存器702中的应用程序702b可以被加载执行上文所描述的各个方法和处理,例如图1中的步骤S101-步骤S104。在一些实施例中,计算机程序的部分或者全部可以经由存储装置706和/或通信接口707而被载入和/或安装到电子设备700上。当计算机程序被加载并由处理器701执行时,可以执行上文描述的数据处理方法的一个或多个步骤。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示设备(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行、也可以顺序地或以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
虽然已经参照附图描述了本公开的实施例或示例,但应理解,上述的方法、系统和设备仅仅是示例性的实施例或示例,本发明的范围并不由这些实施例或示例限制,而是仅由授权后的权利要求书及其等同范围来限定。实施例或示例中的各种要素可以被省略或者可由其等同要素替代。此外,可以通过不同于本公开中描述的次序来执行各步骤。进一步地,可以以各种方式组合实施例或示例中的各种要素。重要的是随着技术的演进,在此描述的很多要素可以由本公开之后出现的等同要素进行替换。
Claims (23)
1.一种分布式系统中分配机器ID的方法,所述分布式系统包括至少一个服务实例,所述方法包括:
响应于接收到某一服务实例的ID获取请求,为该服务实例分配唯一机器ID,并基于所述机器ID与服务ID生成规则来生成服务ID;
响应于确定具有机器ID的任一服务实例满足第一预设条件,回收该服务实例的机器ID;以及
响应于确定满足第二预设条件,将已回收的多个机器ID设置为未分配的机器ID以供重新分配给服务实例,
其中,所述第二预设条件为确定当前分配的服务实例的机器ID达到预设阈值,
所述预设阈值由所述服务ID生成规则中确定的机器ID位数确定。
2.根据权利要求1所述的方法,还包括:
响应于确定满足第三预设条件,确定某一服务实例已下线,
其中,所述第一预设条件为确定该服务实例已下线。
3.根据权利要求2所述的方法,还包括:
接收服务实例上报的相关数据,
其中,所述第三预设条件为在预设时长内未接收到该服务实例上报的相关数据。
4.根据权利要求3所述的方法,其中,所述相关数据包括服务实例的健康状态和/或服务实例生成服务ID的速率,所述服务ID包括机器ID,所述服务ID还包括以下各项中的至少其中一者:
时间戳、随机数和服务序号。
5.根据权利要求1所述的方法,还包括:
响应于依次接收到多个ID获取请求并且确定不满足第二预设条件,以ID递增的方式依次为所述多个ID获取请求各自相对应的服务实例分配机器ID。
6.根据权利要求1所述的方法,其中,所述预设阈值大于所述至少一个服务实例的数量。
7.根据权利要求1所述的方法,还包括:
响应于接收到某一服务实例的ID获取请求并且确定满足第二预设条件,从已回收过并且被设置为未分配的多个机器ID中为该服务实例分配唯一机器ID。
8.根据权利要求1所述的方法,还包括:
响应于依次接收到多个ID获取请求并且确定满足第二预设条件,以ID递增的方式从已回收过并且被设置为未分配的多个机器ID中依次为所述多个ID获取请求各自相对应的服务实例分配机器ID。
9.根据权利要求1所述的方法,还包括:
响应于接收到某一服务实例的获取请求,为该服务实例分配所述服务ID生成规则。
10.根据权利要求9所述的方法,其中,所述服务ID生成规则包括所述机器ID位数,还包括以下各项中的至少其中一者:
时间戳位数、随机数位数和服务序号位数。
11.根据权利要求1-10任一项所述的方法,还包括:
响应于服务重启,重新分配所有服务实例的机器ID。
12.一种分布式系统中分配机器ID的装置,所述分布式系统包括至少一个服务实例,所述装置包括:
中央控制器,被配置用于响应于接收到某一服务实例的ID获取请求,为该服务实例分配唯一机器ID,并基于所述机器ID与服务ID生成规则来生成服务ID;
回收单元,被配置用于响应于确定具有机器ID的任一服务实例满足第一预设条件,回收该服务实例的机器ID;以及
释放单元,被配置用于响应于确定满足第二预设条件,将已回收的多个机器ID设置为未分配的机器ID以供所述中央控制器重新分配给服务实例,
其中,所述第二预设条件为确定当前分配的服务实例的机器ID达到预设阈值,
所述预设阈值由所述服务ID生成规则中确定的机器ID位数确定。
13.根据权利要求12所述的装置,其中,所述中央控制器还被配置用于响应于确定满足第三预设条件,确定某一服务实例已下线,
其中,所述第一预设条件为确定该服务实例已下线。
14.根据权利要求13所述的装置,其中,所述中央控制器还被配置用于接收服务实例上报的相关数据,所述第三预设条件为在预设时长内未接收到该服务实例上报的相关数据。
15.根据权利要求12所述的装置,其中,所述中央控制器还被配置用于响应于依次接收到多个ID获取请求并且确定不满足第二预设条件,以ID递增的方式依次为所述多个ID获取请求各自相对应的服务实例分配机器ID。
16.根据权利要求12所述的装置,其中,所述中央控制器还被配置用于响应于接收到某一服务实例的ID获取请求并且确定满足第二预设条件,从已回收过并且被设置为未分配的机器ID中为该服务实例分配唯一机器ID。
17.根据权利要求12所述的装置,其中,所述中央控制器还被配置用于响应于依次接收到多个ID获取请求并且确定满足第二预设条件,以ID递增的方式从已回收过并且被设置为未分配的机器ID中依次为所述多个ID获取请求各自相对应的服务实例分配机器ID。
18.根据权利要求12所述的装置,其中,所述中央控制器还被配置用于响应于接收到某一服务实例的获取请求,为该服务实例分配所述服务ID生成规则。
19.根据权利要求12-18中任一项所述的装置,其中,所述中央控制器还被配置用于响应于服务重启,重新分配所有服务实例的机器ID。
20.一种分布式系统,包括:
至少一个服务实例;以及
权利要求12-19中任一项所述的分配机器ID的装置,
其中,每一服务实例被配置用于基于所述中央控制器所分配的机器ID生成服务ID。
21.根据权利要求20所述的系统,其中,所述中央控制器还被配置用于响应于接收到某一服务实例的获取请求,为该服务实例分配所述服务ID生成规则。
22.一种电子设备,包括:
处理器;以及
存储器,所述存储器存储程序,所述程序包括指令,所述指令在由所述处理器执行时使得所述处理器执行根据权利要求1-11中任一项所述的方法。
23.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储有计算机程序,所述计算机程序包括指令,所述指令在由计算设备的处理器执行时,使得所述计算设备执行根据权利要求1-11中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111639566.5A CN114363333B (zh) | 2021-12-29 | 2021-12-29 | 分布式系统中分配机器id的方法、装置、设备与介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111639566.5A CN114363333B (zh) | 2021-12-29 | 2021-12-29 | 分布式系统中分配机器id的方法、装置、设备与介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114363333A CN114363333A (zh) | 2022-04-15 |
CN114363333B true CN114363333B (zh) | 2023-11-28 |
Family
ID=81102801
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111639566.5A Active CN114363333B (zh) | 2021-12-29 | 2021-12-29 | 分布式系统中分配机器id的方法、装置、设备与介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114363333B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111385370A (zh) * | 2018-12-28 | 2020-07-07 | 广州市百果园信息技术有限公司 | Id分配方法、装置、存储介质及id分配系统 |
CN112351110A (zh) * | 2020-11-27 | 2021-02-09 | 杭州安恒信息技术股份有限公司 | 基于zookeeper的ID分配方法、装置 |
CN112637380A (zh) * | 2020-12-31 | 2021-04-09 | 网络通信与安全紫金山实验室 | 一种分布式集群id资源管理方法、系统、设备及介质 |
CN113420029A (zh) * | 2021-06-25 | 2021-09-21 | 陕西浪潮英信科技有限公司 | 一种分布式系统全局id生成方法、装置、设备及介质 |
CN113419745A (zh) * | 2021-06-24 | 2021-09-21 | 中国建设银行股份有限公司 | 应用实例编号管理方法、装置、电子设备及计算机可读介质 |
CN113708983A (zh) * | 2021-11-01 | 2021-11-26 | 湖南新云网科技有限公司 | 一种分布式节点id生成方法、装置、设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10367747B2 (en) * | 2016-07-14 | 2019-07-30 | International Business Machines Corporation | Flow controller automatically throttling rate of service provided by web API |
-
2021
- 2021-12-29 CN CN202111639566.5A patent/CN114363333B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111385370A (zh) * | 2018-12-28 | 2020-07-07 | 广州市百果园信息技术有限公司 | Id分配方法、装置、存储介质及id分配系统 |
CN112351110A (zh) * | 2020-11-27 | 2021-02-09 | 杭州安恒信息技术股份有限公司 | 基于zookeeper的ID分配方法、装置 |
CN112637380A (zh) * | 2020-12-31 | 2021-04-09 | 网络通信与安全紫金山实验室 | 一种分布式集群id资源管理方法、系统、设备及介质 |
CN113419745A (zh) * | 2021-06-24 | 2021-09-21 | 中国建设银行股份有限公司 | 应用实例编号管理方法、装置、电子设备及计算机可读介质 |
CN113420029A (zh) * | 2021-06-25 | 2021-09-21 | 陕西浪潮英信科技有限公司 | 一种分布式系统全局id生成方法、装置、设备及介质 |
CN113708983A (zh) * | 2021-11-01 | 2021-11-26 | 湖南新云网科技有限公司 | 一种分布式节点id生成方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114363333A (zh) | 2022-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108923992B (zh) | 一种nas集群高可用方法、系统及电子设备和存储介质 | |
US20160036924A1 (en) | Providing Higher Workload Resiliency in Clustered Systems Based on Health Heuristics | |
CN106572137B (zh) | 一种分布式服务资源管理方法和装置 | |
CN115495025B (zh) | 一种管理异常存储块的方法和装置 | |
CN115277566B (zh) | 数据访问的负载均衡方法、装置、计算机设备及介质 | |
CN104793982A (zh) | 一种创建虚拟机的方法和设备 | |
WO2022199204A1 (zh) | 用于确定资源的方法和装置 | |
US8103905B2 (en) | Detecting and recovering from process failures | |
US10884818B2 (en) | Increasing processing capacity of virtual machines | |
CN112363815B (zh) | Redis集群处理方法、装置、电子设备及计算机可读存储介质 | |
CN114363333B (zh) | 分布式系统中分配机器id的方法、装置、设备与介质 | |
CN111124291B (zh) | 分布式存储系统的数据存储处理方法、装置、电子设备 | |
CN113760610A (zh) | 基于OpenStack的裸机高可用性的实现方法、装置及电子设备 | |
CN113747423B (zh) | 云手机状态同步方法、装置、设备、存储介质及程序产品 | |
CN112162780B (zh) | 应用运行控制方法、装置及电子设备 | |
CN110990165B (zh) | 多路并发传输系统中多用户同时工作的方法及传输服务器 | |
CN110928679B (zh) | 一种资源分配方法及装置 | |
CN113760469A (zh) | 分布式计算的方法和装置 | |
CN103139066A (zh) | 一种资源的切换方法、主控设备以及节点设备 | |
CN113037871A (zh) | 会议通话的恢复方法、装置、系统、电子设备和可读存储介质 | |
CN112463514A (zh) | 分布式缓存集群的监测方法和装置 | |
CN114281604B (zh) | 数据恢复方法、装置、电子设备及存储介质 | |
CN114401275B (zh) | 云手机数据备份及还原方法、装置、电子设备及存储介质 | |
CN112559185B (zh) | 芯片资源分配方法、装置、网络设备及计算机存储介质 | |
CN111459656B (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 | ||
EE01 | Entry into force of recordation of patent licensing contract | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20220415 Assignee: Baisheng Consultation (Shanghai) Co.,Ltd. Assignor: Shengdoushi (Shanghai) Technology Development Co.,Ltd. Contract record no.: X2023310000138 Denomination of invention: Method, device, device, and medium for assigning machine IDs in distributed systems License type: Common License Record date: 20230714 |
|
GR01 | Patent grant | ||
GR01 | Patent grant |