发明内容
本公开提供了一种故障处理方法、装置及存储介质,以解决现有技术中至少一种技术问题。
一方面,本公开提供了一种故障处理方法,应用于全局节点设备,包括:
接收处于同一地域的至少一个服务集群发送的故障处理请求;所述故障处理请求携带所属服务集群的故障节点数量和时间戳;
获取令牌集中当前存储令牌的第一令牌数;所述第一令牌数小于等于当前时间窗口的额定令牌数,所述时间窗口是基于所述至少一个服务集群所属地域的服务节点的历史恢复时长确定,所述额定令牌数是基于所述至少一个服务集群所属地域在当前时间窗口的群体性故障的防护阈值确定;
基于所述故障处理请求和所述第一令牌数,确定所述至少一个服务集群的待下发令牌数量;
基于所确定的待下发令牌数量,向所述至少一个服务集群下发令牌并更新所述令牌集中第一令牌数,以使得所述至少一个服务集群基于获取的令牌执行故障节点处理操作。
另一方面还提供一种故障处理方法,应用于局部节点设备,包括:
在监测到所属服务集群中服务节点存在异常时,生成故障处理请求;所述故障处理请求携带所属服务集群的故障节点数量和时间戳;
向全局节点设备发送所述故障处理请求,并获取所述全局节点设备基于所确定的待下发令牌数量所下发的令牌,所述待下发令牌数量是基于所述故障处理请求和令牌集中当前存储令牌的第一令牌数所确定的;所述第一令牌数小于等于当前时间窗口的额定令牌数,所述时间窗口是基于所述至少一个服务集群所属地域的服务节点的历史恢复时长确定,所述额定令牌数是基于所述至少一个服务集群所属地域在当前时间窗口的群体性故障的防护阈值确定;
基于获取的令牌执行故障节点处理操作。
另一方面还提供一种故障处理装置,应用于全局节点设备,包括:
请求接收模块,用于接收处于同一地域的至少一个服务集群发送的故障处理请求;所述故障处理请求携带所属服务集群的故障节点数量和时间戳;
第一获取模块,用于获取令牌集中当前存储令牌的第一令牌数;所述第一令牌数小于等于当前时间窗口的额定令牌数,所述时间窗口是基于所述至少一个服务集群所属地域的服务节点的历史恢复时长确定,所述额定令牌数是基于所述至少一个服务集群所属地域在当前时间窗口的群体性故障的防护阈值确定;
确定模块,用于基于所述故障处理请求和所述第一令牌数,确定所述至少一个服务集群的待下发令牌数量;
第一处理模块,用于基于所确定的待下发令牌数量,向所述至少一个服务集群下发令牌并更新所述令牌集中第一令牌数,以使得所述至少一个服务集群基于获取的令牌执行故障节点处理操作。
另一方面还提供一种故障处理装置,应用于局部节点设备,包括:
请求生成模块,用于在监测到所属服务集群中服务节点存在异常时,生成故障处理请求;所述故障处理请求携带所属服务集群的故障节点数量和时间戳;
第二获取模块,用于向全局节点设备发送所述故障处理请求,并获取所述全局节点设备基于所确定的待下发令牌数量所下发的令牌,所述待下发令牌数量是基于所述故障处理请求和令牌集中当前存储令牌的第一令牌数所确定的;所述第一令牌数小于等于当前时间窗口的额定令牌数,所述时间窗口是基于所述至少一个服务集群所属地域的服务节点的历史恢复时长确定,所述额定令牌数是基于所述至少一个服务集群所属地域在当前时间窗口的群体性故障的防护阈值确定;
第二处理模块,用于基于获取的令牌执行故障节点处理操作。
另一方面还提供一种计算机设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述任一所述的方法。
另一方面还提供一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行如上述任一所述的方法。
另一方面还提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本实施例上述任一所述的方法。
本公开提供的一种故障处理方法、装置及存储介质,具有如下技术效果:
本公开实施例接收处于同一地域的至少一个服务集群发送的故障处理请求;基于故障处理请求和获取的令牌集中当前存储的第一令牌数,向至少一个服务集群下发令牌并更新令牌集中第一令牌数,以使得至少一个服务集群基于获取的令牌执行故障节点处理操作。由于第一令牌数小于等于当前时间窗口的额定令牌数,该时间窗口是基于至少一个服务集群所属地域的服务节点的历史恢复时长确定,额定令牌数是基于至少一个服务集群所属地域在当前时间窗口的群体性故障的防护阈值确定,通过获取的分发令牌实现对故障节点的处理操作,实现了单地域群体性故障按分钟级时间窗口进行防护,避免故障恢复过程中的大量无效降级剔除,降低数据风险,极大提升了分布式系统的可靠性。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本公开涉及云技术及云存储。其中,云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术(Cloud technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
而云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。
目前,存储系统的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件系统上,文件系统将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(ID,ID entity)等额外的信息,文件系统将每个对象分别写入该逻辑卷的物理存储空间,且文件系统会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件系统能够根据每个对象的存储位置信息让客户端对数据进行访问。存储系统为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列(RAID,Redundant Array of Independent Disk)的组别,预先将物理存储空间划分成分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。
请参阅图1,图1是本公开实施例提供的一种故障处理方法的硬件环境的示意图,如图1所示,该硬件环境可以至少包括服务集群01、全局节点设备02和部署在各服务集群01中的局部节点设备03。全局节点设备02可以基于局部节点设备03发送的故障处理请求下发对应数量的令牌,以使得局部节点设备03根据获取的令牌对所属服务集群01中的故障节点执行故障处理操作。
上述服务器集群01(比如集群1、集群2、集群3...集群n)中部署的服务节点可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器,也可以是作为稳定可靠、低时延、可扩展的持久性块存储设备,且为CVM(Cloud Virtual Machine,云虚拟机)提供数据块级存储服务的云硬盘CBS(Cloud Block Storage)。以CBS为例,云硬盘可提供数据块级别的数据存储,其采用多副本的分布式机制,以提供可靠的数据保证。云硬盘支持在可用区内自动复制,将数据备份在不同设备或节点上,以减少单个设备故障带来的数据丢失等问题,从而提高数据的可靠性。根据性能的不同,云硬盘可分为普通云硬盘、高性能云硬盘和固态硬盘云硬盘等多种类型。通常情况下,服务器集群01的数量为多个,例如数个、几百个、或者上千个等。多个服务集群01可以共享一个全局节点设备01,每个服务集群中可以部署至少一个局部节点设备02。
上述全局节点设备02和局部节点设备03可以是服务器,该服务器可以为可以包括独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。在一些场景下,该全局节点设备可以被称为监控服务器(Monitor),该局部节点设备02可以被称为控制集群(MDS)。
需要说明的是,上述服务集群01中的服务节点与所属的局部节点设备02之间,以及全局节点设备02与局部节点设备03之间均可以通过有线或无线通信方式进行直接或间接地连接,本公开在此不做限制。
当然,本公开实施例提供的方法并不限用于图1所示的应用场景中,还可以用于其它可能的应用场景,本公开实施例并不进行限制。对于图1所示的硬件环境的各个设备所能实现的功能将在后续的方法实施例中一并进行描述,在此先不过多赘述。
下面对本公开涉及的名称进行解释:
剔除:将某个故障节点从集群中移出,而由其它节点继续对外提供服务的动作。
群体性故障:是指大规模故障,也即超过了业务能容忍的范围,发生群体性故障时往往通过故障剔除不能有效恢复业务。
在分布式系统中,通常由多个服务节点同时对外提供服务。当至少一个服务节点出现故障时,将会影响整个分布式存储系统的正常运行。相关技术中,对于检测到的故障节点,通常采用直接剔除故障节点的处理方式。然而,当故障节点数量较多时,也即发生超过了业务能容忍的范围的群体性故障时,此时往往通过直接故障剔除不仅并不能有效恢复业务,而且还会导致整地域大量故障节点的剔除发生,进而增加了数据风险。鉴于以上问题,本公开实施例提出一种故障处理方案,能够避免故障恢复过程中的大量无效降级剔除,降低数据风险,且极大提升了分布式系统的可靠性。
图2是本公开实施例提供的一种故障处理方法的流程示意图,图3是本公开实施例提供的一种故障处理方法的应用环境示意图。本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。该方法可以由全局节点设备执行,其中,该全局节点设备可以是上述硬件环境中的全局节点设备02。具体的如图2和3所示,所述方法可以包括:
S201,接收处于同一地域的至少一个服务集群发送的故障处理请求;所述故障处理请求携带所属服务集群的故障节点数量和时间戳。
其中,所述故障处理请求用于请求处理服务集群中的故障节点。这里的至少一个服务集群位于同一地域,也即属于单地域集群。
服务集群中的局部节点设备可以监测本服务集群中各服务节点是否异常,若监测到故障节点,则生成故障处理请求,并将该故障处理请求发送至全局节点设备,以使得全局节点设备基于该故障处理请求确定针对故障节点的故障处理策略。
该故障处理请求携带所属服务集群的故障节点数量和时间戳。其中,该故障节点数量用于反映每个服务集群(比如集群1、集群2...,集群n)各自所需处理的故障节点量。该时间戳用于反映至少一个服务集群在同一时间窗口中发送的故障处理请求的请求时间先后顺序。
需要说明的是,若服务集群(比如图3中的集群3)中局部节点设备未监测到本集群中存在故障节点,则可以不向全局节点设备发送故障处理请求,也即该集群3可以不与全局节点设备发生交互,从而可以减轻全局节点设备的处理负担和负载。
S203,获取令牌集中当前存储令牌的第一令牌数;所述第一令牌数小于等于当前时间窗口的额定令牌数。
该第一令牌数是令牌集中当前实时存储的令牌的总数。可选地,获取令牌集中当前存储令牌的第一令牌数的方式可以包括:在接收到处于同一地域的至少一个服务集群发送的故障处理请求的情况下,触发该获取令牌集中当前存储令牌的第一令牌数的步骤。或者,全局节点设备实时或自动从令牌集中获取当前存储令牌的第一令牌数。本公开对此不做具体限定。
全局节点设备可以维护一个令牌集,以用于存储令牌,该令牌集中存储令牌数可以为n个,其中n取值范围可以为[0,N],N为当前时间窗口的额定令牌数。示例性地,该令牌集可以通过令牌桶的方式实现,令牌桶的大小可以为当前时间窗口的额定令牌数N,即该令牌桶内最多可以存储N个令牌。
该时间窗口是基于所述至少一个服务集群所属地域的服务节点的历史恢复时长确定。示例性的,在至少一个服务集群所属地域(比如地域A),该地域A中包含100+个服务集群,每个服务集群包括若干个服务节点,若计算该地域A中各服务节点从出现故障到故障恢复所需的历史时长(比如平均历史时长、最大历史时长等)为Tk,此时该Tk即为时间窗口。
仅作为示例,时间窗口可以是分钟级别,例如包括但不限于为1分钟、1.5分钟、3分钟等等。由于群体性故障通常在某一时间窗口内故障陆续发生与恢复,通过基于分钟级时间窗口进行防护,可以解决基于某一时刻的故障比例进行防护时,由于故障刚发生或者开始恢复过程中往往不能满足该时刻的故障比例防护条件,进而造成不必要的故障节点的降级剔除的问题,从而避免故障刚发生或者故障恢复过程中对故障节点的无效降级剔除。
该额定令牌数是基于所述至少一个服务集群所属地域在当前时间窗口的群体性故障的防护阈值确定。群体性故障的防护阈值用于对抗群体性故障所带来的数据可靠性降低的缺陷。可选地,群体性故障的防护阈值可以为最大故障节点总数占总服务节点的比值。在确定群体性故障的防护阈值f和总服务节点M,进而可以确定当前时间窗口的最大故障节点总数,也即确定额定令牌数N。
仅作为示例,群体性故障的防护阈值f的数值可以为1%-30%中任意值。单地域集群所包含的服务集群数量通常为多个(比如100个以上),且部署在相同或相近的机房,故而基于核心交换机、机房电路异常等造成的节点故障分布在单地域的多个不同服务集群中,若将群体性故障的防护阈值f设置较大值,则可能达到不到群体性防护的阈值,从而导致大量降级剔除发送,带来数据风险。为了避免此问题,优选地,f为小于等于5%的数值,例如包括但不限于为2%、3.5%、4%、5%等等。通过将群体性故障的防护阈值f控制在不超过5%,可以实现单地域群体性故障造成的降级剔除不超过5%,增加分布式系统的数据可靠性。
在实际应用中,在某个单地域集群,其包含100个服务集群,每个服务集群包括多组副本(比如48组),每组副本可以有多个副本(cell,比如图3中所示的每行有3个副本)用于存储所需数据(比如用户数据),共计14400个副本。每个副本对应一个服务节点,从而该单地域集群中总服务节点数量为14400个。若确定群体性故障的防护阈值f为3.5%,则该单地域集群对应的最大故障节点总数约为500个,也即确定此时的额定令牌数为500个。若确定该单地域集群的时间窗口Tk为1分钟,则在一个时间窗口Tk中令牌集中令牌数不超过额定令牌数,也即在1分钟之内令牌集中令牌数不超过500个,进而保证在一个时间窗口内,总令牌分发数目不会超过500个,即同一时间窗口可以处理的故障节点(副本数)不超过500个。
S205,基于所述故障处理请求和所述第一令牌数,确定所述至少一个服务集群的待下发令牌数量。
在一可选实施例中,所述基于所述故障处理请求和所述第一令牌数,确定所述至少一个服务集群的待下发令牌数量包括:
S2051,当所述故障处理请求中故障节点总数小于等于所述第一令牌数时,根据所述故障处理请求中的故障节点数量,确定所述至少一个服务集群对应的待下发令牌数量。
可选地,若确定至少一个服务集群所发送的故障处理请求所指示的故障节点总数Mt小于等于第一令牌数N1,则确定令牌集中的当前存储的令牌数量满足请求处理的故障节点数量,此时可以根据每个服务集群所请求获取的故障节点数量,为每个服务集群分配对应的待下发令牌数量。
S2053,当所述故障处理请求中故障节点总数大于所述第一令牌数时,根据所述故障处理请求中的故障节点数量和时间戳的先后顺序,确定所述至少一个服务集群对应的待下发令牌数量。
可选地,若确定至少一个服务集群所发送的故障处理请求所指示的故障节点总数Mt大于第一令牌数N1,则确定令牌集中的当前存储的令牌数量无法同时满足请求处理的全部故障节点数量,此时可以根据每个故障处理请求中的故障节点数量和时间戳的先后顺序,为对应的服务集群分配对应的待下发令牌数量。
在一可选实施例中,所述根据所述故障处理请求中的故障节点数量和时间戳的先后顺序,确定所述至少一个服务集群对应的待下发令牌数量可以包括:根据所述故障处理请求中时间戳的先后顺序,依次判断某一时间戳对应的故障处理请求中的故障节点数量是否小于等于第一令牌数,若判定结果为是,则响应该时间戳对应的故障处理请求,为该时间戳对应的服务集群分配与请求中故障节点数量相匹配的待下发令牌数。若判定结果为否,则拒绝响应该时间戳及后续时间戳对应的故障处理请求,进而拒绝向该时间戳及后续时间戳对应的服务集群分配令牌数。
在实际应用中,在第一时间戳,若服务集群1和服务集群2中的局部节点设备同时向全局节点设备发送故障处理请求1和故障处理请求2,以分别请求处理的故障处理节点数为5个和10个,此时故障节点总数Mt为30个,小于令牌集中当前存储令牌的第一令牌数N1(比如50个),则响应该时间戳对应的故障处理请求,为该服务集群1分配与故障处理请求1中故障节点数量相匹配的待下发令牌数(5个),为该服务集群2分配与故障处理请求2中故障节点数量相匹配的待下发令牌数(10个),此时令牌集中当前存储令牌的第一令牌数调整为35个。在第二时间戳,若服务集群5和服务集群6中的局部节点设备同时向全局节点设备发送故障处理请求5和故障处理请求6,以分别请求处理的故障处理节点数为20个和40个,此时故障节点总数Mt为60个,大于令牌集中当前存储令牌的第一令牌数N1(此时为35个),则拒绝响应该故障处理请求5和6,进而拒绝向服务集群5和6分配令牌数,从而服务集群5和6不会获取到对应的令牌,进而无法执行故障节点处理操作。
在另一可选实施例中,所述根据所述故障处理请求中的故障节点数量和时间戳的先后顺序,确定所述至少一个服务集群对应的待下发令牌数量可以包括:
S20531,根据所述故障处理请求中的故障节点数量、时间戳的先后顺序以及第一令牌数,确定目标时间戳,所述目标时间戳之前所发送的故障处理请求中的故障节点总数小于等于第一令牌数;
S20533,从所述至少一个服务集群中,确定时间戳小于等于所述目标时间戳对应的服务集群作为目标服务集群;
S20535,根据所述目标服务集群的故障处理请求中故障节点数量,确定所述目标服务集群对应的待下发令牌数量;
S20537,拒绝响应除所述目标服务集群之外的剩余服务集群的故障处理请求,确定所述剩余服务集群对应的待下发令牌数量为零。
具体地,根据所述故障处理请求中时间戳的先后顺序,确定累计故障处理请求中的故障节点总数小于等于第一令牌数对应的时间戳为目标时间戳。接着,从至少一个服务集群中确定时间戳小于等于目标时间戳对应的服务集群作为目标服务集群;之后,根据目标服务集群的故障处理请求中故障节点数量,确定目标服务集群的待下发令牌数量为对应的故障节点数量,以及拒绝响应除所述目标服务集群之外的剩余服务集群的故障处理请求,确定所述剩余服务集群的待下发令牌数量为零。
S207,基于所确定的待下发令牌数量,向所述至少一个服务集群下发令牌并更新所述令牌集中第一令牌数,以使得所述至少一个服务集群基于获取的令牌执行故障节点处理操作。
在确定待下发令牌数量之后,可以向对应的服务集群下发对应的令牌。每下发一个令牌,则令牌集中存储的令牌数减少一个,待令牌下发过程中或完成的情况下可以根据已下发令牌数量更新令牌集中存储的第一令牌数。接着,服务集群中的局部节点设备获取到对应数量的令牌,并基于获取的令牌对请求处理的故障节点执行故障处理操作。
其中,所述故障节点处理操作可以包括但不限于为故障节点剔除操作、故障转移操作、故障节点更新操作中至少一种。
需要说明的是,该故障节点剔除操作可以是指将故障节点从节点列表中移出,而由其它节点继续对外提供服务的操作,待剔除的故障节点恢复后,可重新将剔除的该故障节点添加至节点列表中以对外提供服务。该故障转移操作可以是指通过故障节点的从节点来代替该故障节点对外提供服务,且待故障节点恢复后从节点自动恢复成从节点身份。故障节点更新操作可以是指通过新的节点来完全替换故障节点对外提供服务。
故障节点处理操作的具体操作类型可以根据故障节点的故障类型来确定。示例性的,若故障节点的故障类型是可快速恢复的故障类型,比如网络连接延时、网络连接错误、节点反馈延迟等,此时可以采用故障节点剔除操作、故障转移操作中至少一种。若故障节点的故障类型是不可快速恢复的故障类型,例如节点设备故障等,此时可以采用故障节点剔除操作、故障转移操作、故障节点更新操作中至少一种,尤其可以采用故障节点更新操作来执行故障节点处理。
本公开实施例接收处于同一地域的至少一个服务集群发送的故障处理请求;基于故障处理请求和获取的令牌集中当前存储的第一令牌数,向至少一个服务集群下发令牌并更新令牌集中第一令牌数,以使得至少一个服务集群基于获取的令牌执行故障节点处理操作。由于第一令牌数小于等于当前时间窗口的额定令牌数,该时间窗口是基于至少一个服务集群所属地域的服务节点的历史恢复时长确定,额定令牌数是基于至少一个服务集群所属地域在当前时间窗口的群体性故障的防护阈值确定,通过获取的分发令牌实现对故障节点的处理操作,实现了单地域群体性故障按分钟级时间窗口进行防护,避免故障恢复过程中的大量无效降级剔除,降低数据风险,极大提升了分布式系统的可靠性。
在一可选实施例中,如图4所示,所述方法还可包括:
S401,在与所述时间戳间隔预设时间窗口的时间,生成与下发令牌数相匹配的令牌;
S403,基于生成的令牌数量更新所述令牌集中的令牌数。
具体地,在一个预设时间窗口Tk(比如1分钟),令牌集(比如令牌桶)中初始时刻装满令牌数量为N,每当分发n个令牌,令牌集中的令牌数目将会减少n个。在t1时间戳,若分发了m个令牌,则令牌集中的令牌数目将会减少m个,此时令牌集中剩余令牌数为N2个。间隔一个预设时间窗口后(即Tk+t1时间)再重新生成m个令牌,接着根据生成的令牌数量m更新所述令牌集中的令牌数,使得令牌集中的令牌数达到N2+m个。当令牌集中令牌数达到额定令牌数N时不会再生成新的令牌。
上述实施例,通过在不断分发令牌的情况下,基于上述令牌生成策略生成相应的令牌,以使得每个时间窗口中分发的令牌数不超过额定令牌数,实现了对分布式系统中故障节点的持续有效故障处理,同时还提高了故障处理效率和效果,进一步提高分布式系统的可靠性。
图5是本公开实施例提供的另一种故障处理方法的流程示意图,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。该方法可以由局部节点设备执行,其中,该局部节点设备可以是上述硬件环境中的局部节点设备03。具体的如图5所示,所述方法可以包括:
S501,在监测到所属服务集群中服务节点存在异常时,生成故障处理请求;所述故障处理请求携带所属服务集群的故障节点数量和时间戳。
其中,所述故障处理请求用于请求处理服务集群中的故障节点。
可选地,通过故障节点监测方法对局部节点设备所属服务集群中各服务节点进行异常检测,若监测到所属服务集群中各服务节点存在异常时,统计故障节点数量,并生成故障处理请求,向全局节点设备发送该故障处理请求,以请求获取与统计的故障节点数量对应数目的令牌。
在一可选实施例中,所述在监测到所属服务集群中服务节点存在异常时,生成故障处理请求之前,所述方法还可以包括:在预设检测周期,监测所属服务集群中各服务节点的心跳状态;基于所述心跳状态确定所属服务集群中服务节点存在异常。具体地,在预设监测周期内(比如1秒),监测所属服务集群中各服务节点的心跳状态,若心跳状态异常,则确定所属服务集群中至少一个服务节点存在异常,以及确定该心跳状态异常对应的服务节点为故障节点。
S503,向全局节点设备发送所述故障处理请求,并获取所述全局节点设备基于所确定的待下发令牌数量所下发的令牌,所述待下发令牌数量是基于所述故障处理请求和令牌集中当前存储令牌的第一令牌数所确定的;所述第一令牌数小于等于当前时间窗口的额定令牌数,所述时间窗口是基于所述至少一个服务集群所属地域的服务节点的历史恢复时长确定,所述额定令牌数是基于所述至少一个服务集群所属地域在当前时间窗口的群体性故障的防护阈值确定。
S505,基于获取的令牌执行故障节点处理操作。
上述步骤S501-S505中具体细节和有益效果可参见上述实施例,在此不再赘述。
在实际应用中,若当前监测到2个故障节点(比如副本)故障,则向全局节点设备发送索要两个令牌的故障处理请求。若监测到所属服务集群无故障节点时,局部节点设备可以与全局节点设备不发生通信交互以减轻全局节点设备的负载。若全局节点设备中令牌集(比如令牌桶)中剩余令牌数目满足请求获取的令牌数量时,则分发相应数目的令牌给局部节点设备,否则拒绝分发令牌给局部节点设备;成功获取到令牌的局部节点设备,则执行相应的故障节点的故障处理操作(比如剔除操作),获取令牌失败的局部节点设备则不会执行相应故障节点的故障处理操作(比如剔除操作),而是等待对应故障节点的故障恢复。通过全局节点设备的令牌分发实现对整地域故障节点处理数目的控制,实现了对整地域群体性故障的剔除防护,保证了系统的可靠性。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本公开所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本公开各个实施例所述的方法。
下述为本公开装置实施例,可以用于执行本公开方法实施例。对于本公开装置实施例中未披露的细节,请参照本公开方法实施例。
请参考图6,其示出了本公开实施例提供的一种故障处理装置的结构框图。该装置可以具有实现上述方法示例中的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。所述故障处理装置应用于全局节点设备,可以包括:
请求接收模块610,用于接收处于同一地域的至少一个服务集群发送的故障处理请求;所述故障处理请求携带所属服务集群的故障节点数量和时间戳;
第一获取模块620,用于获取令牌集中当前存储令牌的第一令牌数;所述第一令牌数小于等于当前时间窗口的额定令牌数,所述时间窗口是基于所述至少一个服务集群所属地域的服务节点的历史恢复时长确定,所述额定令牌数是基于所述至少一个服务集群所属地域在当前时间窗口的群体性故障的防护阈值确定;
确定模块630,用于基于所述故障处理请求和所述第一令牌数,确定所述至少一个服务集群的待下发令牌数量;
第一处理模块640,用于基于所确定的待下发令牌数量,向所述至少一个服务集群下发令牌并更新所述令牌集中第一令牌数,以使得所述至少一个服务集群基于获取的令牌执行故障节点处理操作。
在一可选实施例中,所述确定模块包括:
第一确定单元,用于当所述故障处理请求中故障节点总数小于等于所述第一令牌数时,根据所述故障处理请求中的故障节点数量,确定所述至少一个服务集群对应的待下发令牌数量;
第二确定单元,用于当所述故障处理请求中故障节点总数大于所述第一令牌数时,根据所述故障处理请求中的故障节点数量和时间戳的先后顺序,确定所述至少一个服务集群对应的待下发令牌数量。
在一可选实施例中,所述第二确定单元还包括:
第一确定子单元,用于根据所述故障处理请求中的故障节点数量、时间戳的先后顺序以及第一令牌数,确定目标时间戳,所述目标时间戳之前所发送的故障处理请求中的故障节点总数小于等于第一令牌数;
第二确定子单元,用于从所述至少一个服务集群中,确定时间戳小于等于所述目标时间戳对应的服务集群作为目标服务集群;
第三确定子单元,用于根据所述目标服务集群的故障处理请求中故障节点数量,确定所述目标服务集群对应的待下发令牌数量;
第四确定子单元,用于拒绝响应除所述目标服务集群之外的剩余服务集群的故障处理请求,确定所述剩余服务集群对应的待下发令牌数量为零。
在一可选实施例中,所述装置还包括:
在与所述时间戳间隔预设时间窗口的时间,生成与下发令牌数相匹配的令牌;
基于生成的令牌数量更新所述令牌集中的令牌数。
在一可选实施例中,所述故障节点处理操作包括故障节点剔除操作、故障转移操作、故障节点更新操作中至少一种。
请参考图7,其示出了本公开实施例提供的另一种故障处理装置的结构框图。该装置可以具有实现上述方法示例中的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。所述故障处理装置应用于局部节点设备,可以包括:
请求生成模块710,用于在监测到所属服务集群中服务节点存在异常时,生成故障处理请求;所述故障处理请求携带所属服务集群的故障节点数量和时间戳;
第二获取模块720,用于向全局节点设备发送所述故障处理请求,并获取所述全局节点设备基于所确定的待下发令牌数量所下发的令牌,所述待下发令牌数量是基于所述故障处理请求和令牌集中当前存储令牌的第一令牌数所确定的;所述第一令牌数小于等于当前时间窗口的额定令牌数,所述时间窗口是基于所述至少一个服务集群所属地域的服务节点的历史恢复时长确定,所述额定令牌数是基于所述至少一个服务集群所属地域在当前时间窗口的群体性故障的防护阈值确定;
第二处理模块730,用于基于获取的令牌执行故障节点处理操作。
在一可选实施例中,所述装置还可包括:
监测模块,用于在预设检测周期,监测所属服务集群中各服务节点的心跳状态;
故障节点确定模块,用于基于所述心跳状态确定所属服务集群中故障节点。
此处需要说明的是,本公开实施例的故障处理装置与实施例中故障处理方法基于相同的发明构思,请参照前述实施例的记载,在此不赘述。
本公开实施例提供了一种计算机设备,该设备可以包括处理器和存储器,该存储器中存储有至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现如上述方法实施例任一所述的方法。
本公开实施例还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行上述方法实施例任一所述的方法。
本公开实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本实施例上述任一方法。
进一步地,图8示出了一种用于实现本公开实施例所提供的方法的设备的硬件结构示意图,所述设备可以为计算机终端、移动终端或其它设备,所述设备还可以参与构成或包含本公开实施例所提供的装置。如图8所示,计算机终端11可以包括一个或多个(图中采用112a、112b,……,112n来示出)处理器112(处理器112可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器114、以及用于通信功能的传输装置116。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图8所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端11还可包括比图8中所示更多或者更少的组件,或者具有与图8所示不同的配置。
应当注意到的是上述一个或多个处理器112和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端11(或移动设备)中的其他元件中的任意一个内。如本公开实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器114可用于存储应用软件的软件程序以及模块,如本公开实施例中所述的方法对应的程序指令/数据存储装置,处理器112通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的一种神经网络处理方法。存储器114可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器114可进一步包括相对于处理器112远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端11。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置116用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端11的通信供应商提供的无线网络。在一个实例中,传输装置116包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置116可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端11(或移动设备)的用户界面进行交互。
在其他实施例中,上述设备可以是一个分布式系统中的一个节点,其中,该分布式系统可以为区块链系统,该区块链系统可以是由该多个节点通过网络通信的形式连接形成的分布式系统。其中,节点之间可以组成点对点(P2P,Peer To Peer)网络,任意形式的计算设备,比如服务器、终端等电子设备都可以通过加入该点对点网络而成为该区块链系统中的一个节点。
需要说明的是:上述本公开实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本公开特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本公开中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和服务器实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本公开的较佳实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。