CN114666389A - 分布式系统中节点状态的检测方法、装置及计算机设备 - Google Patents

分布式系统中节点状态的检测方法、装置及计算机设备 Download PDF

Info

Publication number
CN114666389A
CN114666389A CN202210248119.5A CN202210248119A CN114666389A CN 114666389 A CN114666389 A CN 114666389A CN 202210248119 A CN202210248119 A CN 202210248119A CN 114666389 A CN114666389 A CN 114666389A
Authority
CN
China
Prior art keywords
node
task group
detection
identifier
state
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
Application number
CN202210248119.5A
Other languages
English (en)
Other versions
CN114666389B (zh
Inventor
张成远
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jingdong Technology Information Technology Co Ltd
Original Assignee
Jingdong Technology Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Jingdong Technology Information Technology Co Ltd filed Critical Jingdong Technology Information Technology Co Ltd
Priority to CN202210248119.5A priority Critical patent/CN114666389B/zh
Publication of CN114666389A publication Critical patent/CN114666389A/zh
Application granted granted Critical
Publication of CN114666389B publication Critical patent/CN114666389B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开提出一种分布式系统中节点状态的检测方法、装置及计算机设备,涉及计算机技术领域。该方法包括:对当前关联的任务组中各个节点上报的心跳包进行解析,以确定每个节点当前的状态;在任一节点当前的状态为心跳异常的情况下,向其余各第二检测服务发送异常节点检测请求;接收各第二检测服务分别返回的任一节点的检测结果;在各个检测结果满足预设条件的情况下,向管理控制节点发送异常节点处理请求,其中,处理请求中包括任一节点的标识。由此,第一检测服务在判断节点出现心跳异常的情况下,请求其余第二检测服务对心跳异常节点进行校验,进而再请求管理控制节点对异常节点进行处理,从而可以及时、准确地发现分布式系统中存在的异常节点。

Description

分布式系统中节点状态的检测方法、装置及计算机设备
技术领域
本公开涉及计算机技术领域,尤其涉及一种分布式系统中节点状态的检测方法、装置及计算机设备。
背景技术
分布式系统是建立在计算机网络之上的软件系统,具有高度的内聚性和透明性。分布式系统由多个工作单元组成,通常将分布式系统中的工作单元称为节点,其具体形式可以是软件子模块、线程或进程、子任务执行设备等。分布式系统的各节点分别执行一部分子任务,通过各节点之间的协同工作,可实现复杂的任务执行要求。如果一个节点出现异常,势必会影响整个分布式系统的任务执行。因此,如何对分布式系统中的节点状态进行检测成为重点的研究方向。
发明内容
本公开旨在至少在一定程度上解决相关技术中的技术问题之一。
本公开第一方面实施例提出了一种分布式系统中节点状态的检测方法,包括:
对当前关联的任务组中各个节点上报的心跳包进行解析,以确定每个节点当前的状态;
在任一节点当前的状态为心跳异常的情况下,向其余各第二检测服务发送异常节点检测请求,其中,所述检测请求中包括所述任一节点的标识;
接收所述各第二检测服务分别返回的任一节点的检测结果;
在各个所述检测结果满足预设条件的情况下,向管理控制节点发送异常节点处理请求,其中,所述处理请求中包括所述任一节点的标识。
本公开第二方面实施例提出了一种分布式系统中节点状态的检测装置,包括:
第一确定模块,用于对当前关联的任务组中各个节点上报的心跳包进行解析,以确定每个节点当前的状态;
第一处理模块,在任一节点当前的状态为心跳异常的情况下,向其余各第二检测服务发送异常节点检测请求,其中,所述检测请求中包括所述任一节点的标识;
第一接收模块,用于接收所述各第二检测服务分别返回的任一节点的检测结果;
第二处理模块,用于在各个所述检测结果满足预设条件的情况下,向管理控制节点发送异常节点处理请求,其中,所述处理请求中包括所述任一节点的标识。
本公开第三方面实施例提出了一种计算机设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时,实现如本公开第一方面实施例提出的分布式系统中节点状态的检测方法。
本公开第四方面实施例提出了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,实现如本公开第一方面实施例提出的分布式系统中节点状态的检测方法。
本公开第五方面实施例提出了一种计算机程序产品,当所述计算机程序产品中的指令处理器执行时,执行本公开第一方面实施例提出的分布式系统中节点状态的检测方法。
本公开提供的分布式系统中节点状态的检测方法、装置及计算机设备,存在如下有益效果:
本公开实施例中,首先对当前关联的任务组中各个节点上报的心跳包进行解析,以确定每个节点当前的状态,之后在任一节点当前的状态为心跳异常的情况下,向其余各第二检测服务发送异常节点检测请求,再接收各第二检测服务分别返回的任一节点的检测结果;最后在各个检测结果满足预设条件的情况下,向管理控制节点发送异常节点处理请求。由此,第一检测服务在根据节点上传的心跳包判断节点出现心跳异常的情况下,请求其余第二检测服务对心跳异常节点进行校验,进而再请求管理控制节点对异常节点进行处理,从而可以及时、准确地发现分布式系统中存在的异常节点。
本公开附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本公开的实践了解到。
附图说明
本公开上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本公开一实施例所提供的一种节点状态检测系统的架构示意图;
图2为本公开一实施例所提供的分布式系统中节点状态的检测方法的流程示意图;
图3为本公开另一实施例所提供的分布式系统中节点状态的检测方法的流程示意图;
图4为本公开一实施例所提供的一种节点状态转换的示意图;
图5为本公开另一实施例所提供的分布式系统中节点状态的检测方法的流程示意图;
图6为本公开一实施例所提供的一种确定第一检测服务当前关联的任务组的流程示意图;
图7为本公开另一实施例所提供的分布式系统中节点状态的检测装置的结构示意图;
图8示出了适于用来实现本公开实施方式的示例性计算机设备的框图。
具体实施方式
下面详细描述本公开的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本公开,而不能理解为对本公开的限制。
下面参考附图描述本公开实施例的分布式系统中节点状态的检测方法、装置、计算机设备和存储介质。
图1为本公开一实施例所提供的一种节点状态检测系统的架构示意图。如图1所示,该节点状态检测系统可以包括但不限于一个管理控制节点、一个检测服务、一个数据库。
需要说明的的是,图1所示的设备数量和形态仅用于举例并不构成对本公开实施例的限定,实际应用中可以包括两个或两个以上的管理控制设备,两个或两个以上的检测服务,两个或两个以上的数据库,两个或两个以上的节点。
本公开实施例中的节点1_1、节点1_2、节点2_1及节点2_2等节点为分布式系统中包含的节点,各个节点会按照固定的上报周期,上报各自的心跳包,该上报的各心跳包可以存储在数据库中,检测服务可以根据数据库中每个节点上报的心跳包检测节点是否异常,并在节点出现异常时,将节点的异常情况上报给管理控制节点;管理控制节点用于对检测服务上报的异常节点进行处理;数据库用于存储各个节点上传的心跳包。
图2为本公开一实施例所提供的分布式系统中节点状态的检测方法的流程示意图。
本公开实施例以该分布式系统中节点状态的检测方法被配置于分布式系统中节点状态的检测装置中来举例说明,该分布式系统中节点状态的检测装置可以应用于任一计算机设备中,以使该计算机设备可以执行分布式系统中节点状态的检测功能。
如图2所示,该方法由第一检测服务执行,该分布式系统中节点状态的检测方法可以包括以下步骤:
步骤201,对当前关联的任务组中各个节点上报的心跳包进行解析,以确定每个节点当前的状态。
需要说明的是,第一检测服务当前关联的任务组中可以包含多个节点。第一检测服务负责周期性地对任务组中包含的每个节点上报的心跳包进行扫描,以及时确定节点是否存在异常。第一检测服务也可以被称为第一哨兵服务,本公开对此不做限定。
可选的,各个节点的心跳包可以存储在数据库中。各个节点的心跳包中可以包含节点的标识及时间戳。节点的标识可以为节点的IP地址、节点的端口等。节点的时间戳可以为节点上报心跳包的时间,也可以为单调变化的数字序列。本公开对此不做限定。
步骤202,在任一节点当前的状态为心跳异常的情况下,向其余各第二检测服务发送异常节点检测请求,其中,检测请求中包括任一节点的标识。
可以理解的是,在第一检测服务检测到当前关联的任务组中,任一节点当前的状态为心跳异常的情况下,第一检测服务可以向其余多个第二检测服务发送异常节点检测请求,由多个第二检测服务对该心跳异常节点进行检测,进而确定该节点是否存在心跳异常。
可选的,第一检测服务在对任务组中的节点进行扫描时,未检测到任一节点上报的心跳包,即节点超过约定的时间未上报心跳包,可以确定节点当前的状态为心跳异常状态。
可以理解的是,第一检测服务在向其余个第二检测服务发送异常节点检测请求时,需要将异常节点的标识发送给各第二检测服务,从而各第二检测服务可以根据节点的标识,对异常节点进行检测。
步骤203,接收各第二检测服务分别返回的任一节点的检测结果。
可以理解的是,各第二检测服务接收到第一检测服务发送的异常节点检测请求之后,可以根据检测请求中包含的心跳异常节点的标识,对该心跳异常节点进行主动访问,如果该心跳异常节点可以被访问,则确定该节点的检测结果为正常状态,若该节点不能被访问,则确定该节点的检测结果为心跳异常状态。最后将检测结果返回给第一检测服务。
步骤204,在各个检测结果满足预设条件的情况下,向管理控制节点发送异常节点处理请求,其中,处理请求中包括任一节点的标识。
其中,管理控制节点需要实现一个通知接口,接口可以是超文本传输协议(HyperText Transfer Protocol,HTTP)的形式,也可以是传输控制协议(Transmission ControlProtocol,TCP)的形式,传递的内容是一个或多个异常节点当前的状态信息。
可选的,各个检测结果中包含的任一节点心跳异常的结果的数量,与检测结果总数量的比值大于第一阈值,确定各个检测结果满足预设条件。
其中,第一阈值可以为预先设定好的阈值,比如可以为0.5、0.8等等,本公开对此不做限定。
举例来说,第一阈值为0.5,各第二检测服务返回的对任一节点的检测结果的总数量为10个,其中,心跳异常的检测结果为6个,则可以确定各个检测结果满足预设条件,第一检测服务可以确定该任一节点为异常节点,进而向管理控制节点发送异常节点服务请求,由管理控制节点对该异常节点进行处理。
或者,各个检测结果中心跳异常的检测结果的数量大于第二阈值,确定各个检测结果满足预设条件。
其中,第二阈值可以为根据第二检测服务的数量预先设定好的阈值,比如可以为5个、10个等等,本公开对此不做限定。
可选的,管理控制节点在接收到异常节点处理请求之后,可以对异常节点进行恢复,并将该异常节点更新为正常状态;也可以将该异常节点从分布式系统中删除,并将该异常节点更新为删除状态。
可以理解的是,本公开中,不同检测服务通过根据分布式系统中的各个节点主动上报的心跳数据,对节点的状态进行检测、投票等,在确定有异常节点的情况下,再进行异常节点上报,而无需管理控制节点进行全量节点心跳包的遍历,从而既减轻了管理控制节点的负担,又提高了异常节点检测的及时性和准确性。
本公开实施例中,首先对当前关联的任务组中各个节点上报的心跳包进行解析,以确定每个节点当前的状态,之后在任一节点当前的状态为心跳异常的情况下,向其余各第二检测服务发送异常节点检测请求,再接收各第二检测服务分别返回的任一节点的检测结果;最后在各个检测结果满足预设条件的情况下,向管理控制节点发送异常节点处理请求。由此,第一检测服务在根据节点上传的心跳包判断节点出现心跳异常的情况下,请求其余第二检测服务对心跳异常节点进行校验,进而再请求管理控制节点对异常节点进行处理,从而可以及时、准确地发现分布式系统中存在的异常节点。
图3为本公开一实施例所提供的分布式系统中节点状态的检测方法的流程示意图,如图3所示,该分布式系统中节点状态的检测方法由第一检测服务执行,可以包括以下步骤:
步骤301,获取分布式系统中包含的节点范围的标识及数据库中每个已生成的任务组对应的节点范围的标识。
可以理解的是,分布式系统中可以包含多个节点,每个检测服务可以负责一部分节点的异常检测任务,因此,为了保证不同的检测服务检测不同的节点,在第一检测服务在开始工作之前,需要先确定自己负责检测的节点。本公开中,可以根据分布式系统中包含的节点范围的标识及数据库中每个已生成的任务组对应的节点范围的标识,确定第一检测服务对应的任务组,任务组中包含第一检测服务负责检测的多个节点。
其中,分布式系统中包含的节点范围包括分布式系统中的全部节点,每个节点均有自己对应的标识。
可选的,可以根据约定的规则,确定生成的每个任务组中包含的节点的个数,进而确定每个任务组中对应的节点范围的标识。
举例来说,若分布式系统中包含的节点总数为300个,则对应的节点范围的标识可以为node_1_300,表示第1个节点至第300个节点。若约定的规则为每个任务组中包含的100个节点,则第一个任务组对应的节点范围的标识可以为node_1_100,表示第1个节点到第100个节点),第一个任务组对应的节点范围的标识可以为node_101_200,表示第101个节点到第200个节点,最后一个任务组的对应的节点范围的标识可以为node_201_300,由此,直至最后一个节点的标识包含在最后一个任务组中,从而保证分布式系统中的每个节点均可以被检测。
其中,数据库可以为MySQL数据库、MariaDB数据库等等,本公开对此不做限定。
可选的,随着数据库中包含的节点不断增多,可以采用分库分表等方式对数据库进行扩充,确保随着分布式系统中节点的增多,仍旧可以检测出异常节点。
步骤302,在各任务组对应的节点范围的标识小于分布式系统中包含的节点范围的标识的情况下,生成新的任务组。
可以理解的是,若每个任务组对应的节点范围范围的标识均小于分布式系统中包含的节点范围的标识,则说明分布式系统中的节点并未全部生成任务组,即未生成任务组的节点,还没有对应的检测服务对其进行异常检测,因此,第一检测服务可以根据约定的规则生成新的任务组。
本公开实施例中,已经生成的任务组表示已经有对应的检测服务对其包含的各个节点进行检测,第一检测服务需要生成新的任务组,从而保证一个任务组只有一个对应的检测服务对其包含的各个节点进行检测。由此,可以使每个检测服务可以分摊分布式系统中节点的检测任务,即使分布式系统中的节点增多,各检测服务也可以完成全部节点的检测任务。
步骤303,将新的任务组对应的占位标识更新为第一检测服务的标识。
其中,第一检测服务的标识可以为IP地址、IP+端口、一个字符串、或数字等等,本公开对此不做限定。
需要说明的是,每个检测服务对应的标识不同。
可选的,在数据库各已生成的任务组对应的节点范围的标识与新的任务组对应的节点范围的标识不同的情况下,将新的任务组对应的占位标识更新为第一检测服务的标识。
可以理解的是,第一检测服务生成一个任务组之后,需要根据生成的任务组对应的节点范围的标识去数据库中检索,判断数据库中是否存在的相同的任务组,若数据库中不存在相同的任务组,说明新生成的任务组还没有相应的检测服务对其进行检测,进而将新的任务组对应的占位标识更新为第一检测服务的标识。由此,第一检测服务可以对当前关联的任务组中的每个节点进行检测。
步骤304,对当前关联的任务组中各个节点上报的心跳包进行解析,在任一节点上报的心跳包的频率与预设的频率不匹配的情况下,确定任一节点当前的状态为心跳异常。
其中,每个节点上传心跳包的频率可以是预先配置好的,进而节点可以根据配置好的频率上传心跳包。比如,节点上报心跳包的频率可以为30秒(s)上报一次心跳包,也可以为1分钟(min)上报一次心跳包。本公开对此不做限定。
需要说明的是,任意两个节点预设的上报心跳包的频率可以相同,也可以不同,本公开对此不做限定。可选的,由于节点可能存在某一次漏上报心跳包的情况,但是节点并未出现异常,因此第一检测服务对节点上报的心跳包进行解析的频率可以大于节点对应的上传心跳包的预设的频率。
举例来说,节点预设的上报心跳包的频率为30s上传一次心跳包,第一检测服务解析心跳包的频率为90s解析一次,若第一检测服务对心跳包解析之后发现节点在该90s内未上传一次心跳包,则可以确定节点出现心跳异常。
可选的,节点的状态可以包括:初始化状态init、正常状态normal、心跳异常状态、节点异常状态abnormal、主观宕机状态Sdown、客观宕机状态Odown、删除状态Delete等等,本公开对此不做限定。
其中,初始化状态init,为任一节点刚在数据库中注册完成的状态。一旦正常向数据库上传心跳包,则即将进入正常状态normal,即开始正常工作。
其中,正常状态normal,为节点正常工作的状态,节点会正常向数据库上传心跳包。
其中,节点异常状态abnormal,为节点知道自身存在问题,但是节点自己又无法恢复,节点可能可以正常上传心跳包,因此,节点可以通过心跳包上传自己的异常状态,进而由第一检测服务上报给管理控制节点,由管理控制节点进行处理。
其中,主观宕机状态Sdown,可以为第一检测服务在确定任一节点当前的状态为心跳异常之后,主观上认为任一节点出现异常。
其中,客观宕机状态Odown,第一检测服务将节点当前的状态更新为主观宕机状态Sdown之后,会向其余各第二检测服务发送异常节点检测请求,若各第二检测服务分别返回的各个检测结果,确认该节点不能被访问,则该节点的状态为客观宕机状态。
其中,删除状态Delete,异常节点无法恢复,管理控制节点会将该节点从数据库中移除,并将该节点标识为删除状态Delete。检测服务不再针对删除的节点进行检测。
步骤305,将数据库中任一节点的状态更新为主观宕机状态。
可以理解的是,第一检测服务确定任一节点当前的状态为心跳异常,并不能直接确定该节点为异常节点,因为,也有可能是第一检测服务自身出现异常,因此,第一检测服务在检测到任一节点当前的状态为心跳异常的情况下,第一检测服务可以向其余多个第二检测服务发送异常节点检测请求,由多个第二检测服务对该心跳异常节点进行检测,进而确定该节点是否存在心跳异常。
步骤306,向其余各第二检测服务发送异常节点检测请求,其中,检测请求中包括任一节点的标识。
步骤307,接收各第二检测服务分别返回的任一节点的检测结果。
其中,步骤306,步骤307的具体实现形式,可参照本公开其他各实施例中的详细步骤,此处不再详细赘述。
步骤308,根据各个检测结果,对任一节点的状态进行更新。
可选的,在各个检测结果满足预设条件的情况下,将任一节点的状态更新为客观宕机状态。
可以理解的是,在各第二检测服务返回的各个检测结果满足预设条件的情况下,不仅第一检测服务检测到任一节点出现异常,而且多个第二检测服务也不能正常访问该节点,则确认该节点出现异常,因此,可以将任一节点的状态由主观宕机状态更新为客观宕机状态。
或者,在各个检测结果未满足预设条件的情况下,将任一节点的状态更新为正常状态。
可以理解的是,在各第二检测服务对心跳异常节点进行访问时,心跳异常节点可能又恢复了正常,则多个第二检测服务可以正常访问该节点,因此,在各个检测结果未满足预设条件的情况下,将任一节点的状态由主观宕机状态更新为正常状态。
或者,在各第二检测服务返回检测结果前,根据任一节点上报的心跳包确定任一节点的心跳异常解除,将任一节点的状态更新为正常状态。
可以理解的时,在向各第二检测服务发送异常节点检测请求之后,又检测到该异常节点上传的心跳包,则说明该节点又恢复了正常,可以将任一节点的状态由主观宕机状态更新为正常状态。
本公开实施例中,先获取分布式系统中包含的节点范围的标识及数据库中每个已生成的任务组对应的节点范围的标识,之后在各任务组对应的节点范围的标识小于分布式系统中包含的节点范围的标识的情况下,生成新的任务组,并将新的任务组对应的占位标识更新为第一检测服务的标识,再对当前关联的任务组中各个节点上报的心跳包进行解析,在任一节点上报的心跳包的频率与预设的频率不匹配的情况下,确定任一节点当前的状态为心跳异常,之后将数据库中任一节点的状态更新为主观宕机状态,向其余各第二检测服务发送异常节点检测请求,最后接收各第二检测服务分别返回的任一节点的检测结果,根据各个检测结果,对任一节点的状态进行更新。由此,在分布式系统中的任务组没有全部生成的情况下,生成新的任务组,并对新的任务组中包含的节点进行检测,以确定节点是否存在异常,从而不仅可以及时、准确地发现分布式系统中存在的异常节点,而且可以使每个任务组都有不同的检测服务对其包含的节点进行检测,减少了资源浪费,提高了异常检测的效率。
本公开实施例中,图4为本公开一实施例所提供的一种节点状态转换的示意图。如图4所示,节点在数据库中注册完成的状态为初始化状态init;注册完成之后,节点开始工作进入正常状态。
若第一检测服务对节点上传的解析之后,确定任一节点当前的状态为心跳异常,则将节点的状态更新为主观宕机状态Sdown;
之后向其余各第二检测服务发送异常节点检测请求,若各第二检测服务分别返回的各个检测结果满足预设条件,则将任一节点的状态更新为客观宕机状态,并向管理控制节点发送异常节点处理请求,若异常管理控制节点恢复该节点,则将该节点更新为正常状态normal;若管理控制节点删除了该节点,则将该节点的状态更新为删除状态delete;
若各个检测结果未满足预设条件,则将任一节点的状态更新为正常状态;
或者,若在各第二检测服务返回检测结果前,根据任一节点上报的心跳包确定任一节点的心跳异常解除,将任一节点的状态更新为正常状态;
在节点上传的心跳包中的状态为节点异常状态abnormal,则向管理控制节点发送异常节点处理请求。
图5为本公开一实施例所提供的分布式系统中节点状态的检测方法的流程示意图,如图5所示,该分布式系统中节点状态的检测方法可以包括以下步骤:
步骤501,获取数据库中各任务组对应的锁定时刻。
其中,锁定时刻为每个任务组的占位标识,最近一次被更新的时刻。
可选的,在当前时刻与相邻的前一次获取各任务组对应的锁定时刻间的时间间隔大于或等于第二阈值的情况下,获取数据库中各任务组对应的锁定时刻。
其中,第二阈值可以为抢锁周期,比如,抢锁周期可以为每30s抢一次,也可以为每10min抢一次,本公开对此不做限定。
可以理解的是,当前时刻与相邻的前一次获取各任务组对应的锁定时刻间的时间间隔大于或等于第二阈值,说明到了指定的抢锁周期,第一检测服务需要重新获取数据库中各任务组对应的锁定时刻,进而判断每个任务组对应的锁定周期是否已经过期,若任一任务组对应的锁定周期已经过期,则将任一任务组对应的占位标识更新为第一检测服务的标识。
可选的,在获取数据库中各任务组对应的锁定时刻之后,在任一任务组对应的锁定时刻与当前时刻间的差值小于第一阈值的情况下,获取任一任务组对应的占位标识,在任一任务组对应的占位标识为第一检测服务的标识的情况下,将任一任务组对应的锁定时刻更新为当前时刻。由此,第一检测服务可以持续占有该任务组,避免被其他检测服务抢走。
其中,第一阈值可以为任一任务组对应的锁定周期,比如,锁定周期可以为10min,也可以为1个小时(h),本公开对此不做限定。
举例来说,第一检测服务为当前关联的任务组,设置的锁定周期为1个小时,约定每10分钟获取一次数据库中各任务组对应的锁定时刻。若确定任一任务组的占位标识是第一检测服务,且对应的锁定周期未过期,则第一检测服务可以更新任务组的锁定时刻,从而保证持续占有该任务组。
步骤502,在任一任务组对应的锁定时刻与当前时刻间的差值大于或等于第一阈值的情况下,将任一任务组对应的占位标识更新为第一检测服务的标识。
可以理解的是,任一任务组对应的锁定时刻与当前时刻间的差值大于或等于第一阈值,表示任一任务组的锁定周期已经过期,因此,第一检测服务可以抢占该任务组,在第一检测服务抢到该任务组的情况下,可以将任一任务组对应的占位标识更新为第一检测服务的标识。
本公开实施例中,在任一任务组对应的锁定周期已经过期的情况下,即使有多个检测服务同时抢占该任务组,根据数据库事务的ACID属性,只能有一个检测服务可以抢到该任务组。
本公开实施例中,数据库事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成,访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成,且满足ACID属性。
本公开实施例中,ACID属性包括原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行;一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态,一致状态的含义是数据库中的数据应满足完整性约束;隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行;持久性(Durability):已被提交的事务对数据库的修改应该永久保存在数据库中。
步骤503,确定任一任务组为当前关联的任务组。
步骤504,对当前关联的任务组中各个节点上报的心跳包进行解析,以确定每个节点当前的状态。
其中,步骤504的具体实现形式,可参照本公开其他各实施例中的详细步骤,此处不再详细赘述。
步骤505,在任一当前节点的心跳包中的状态为节点异常的情况下,向管理控制节点发送异常节点处理请求,其中,处理请求中包括任一节点的标识。
需要说明的是,异常节点知道自身存在问题,但是节点自己又无法恢复,节点可通过心跳包上传自己的异常状态。第一检测服务在对心跳包解析之后,发现该节点为异常节点,则直接向管理控制节点发送异常节点处理请求,由管理控制节点对该异常节点进行处理。
本公开实施例中,首先获取数据库中各任务组对应的锁定时刻,之后在任一任务组对应的锁定时刻与当前时刻间的差值大于或等于第一阈值的情况下,将任一任务组对应的占位标识更新为第一检测服务的标识,确定任一任务组为当前关联的任务组,对当前关联的任务组中各个节点上报的心跳包进行解析,以确定每个节点当前的状态,最后在任一当前节点的心跳包中的状态为节点异常的情况下,向管理控制节点发送异常节点处理请求。由此,在指定的抢锁周期,对数据库中的任务组进行抢锁,避免了任一检测服务出现故障,导致其关联的任务组中包含的节点没有检测服务进行异常检测,从而进一步保证了可以及时、准确地发现分布式系统中存在的异常节点。
本公开实施例中,可以在数据库中引入一张锁定信息(lock_info)的表,表1为lock_info表的主体部分。
表1
Figure BDA0003545839270000081
其中,key:该字段的值用于表示锁定的任务组对应的节点范围的标识,同时也可以用该字段的值表示一把锁,可以按约定的规则生成key,比如任务组对应的节点范围的标识为node_1_100,表示节点1到100,一旦node_1_100这个key被某个检测服务锁定,其余检测服务就不会针对节点1到节点100进行检测了。
version:版本字段,可以使用单调变化的数字。
term:约定的锁定周期时间,锁定周期的单位可以是秒(s),也可以是分钟(min)、小时(h)。确保抢到锁的检测服务自身出故障以后,超过约定的锁定周期时间以后,其他检测服务就可以抢这个任务组。
owner:标识当前的任务组被哪个检测服务抢到,每个检测服务有自己的唯一标识,一个检测服务抢到了该锁就可以把自己的标识填入owner字段,一方面可以清楚地看到是哪个检测服务抢到该锁,另一方面该检测服务在锁超时之前,可以持续的重入抢锁,比如锁的锁定周期是30秒,抢锁周期为每隔10秒,该检测服务就可以针对这个锁发起一次抢锁操作,在锁未超时的情况下,其余检测服务无法抢到这把锁,而该检测服务可以通过重入抢锁的方式,不断更新时间戳,即锁定时刻,确保自身服务正常的情况下,可以一直持有这把锁,从而避免当有多个检测服务工作时,每次用不同的检测服务去检测同一任务组中的节点,尽量让同一任务组的检测任务固定到某个检测服务身上。可选的,若希望用同一任务组每次都可以让不同的检测服务去检测,就可以将抢锁周期设置成大于锁定周期,比如锁定周期是30秒,抢锁周期是35秒,相当于每次都等自己持有的锁全部释放以后才会进入第二轮抢锁。
create_time:该字段用于记录这条记录的创建时间,即这个任务组第一次被创建的时间,仅用于记录,非关键字段。
update_time:该字段用于记录这条记录最新的更新时间,即该锁最新被抢的时间,只有抢锁成功以后才会更新该字段,基于这个字段+term字段,进而可以判断这把锁是否在有效时间内。
本公开实施例中,第一检测服务到了指定的抢锁周期,就会重新确定当前关联的任务组。图6为本公开一实施例所提供的一种确定第一检测服务当前关联的任务组的流程示意图。如图6所示,第一检测服务确定当前关联的任务组的步骤具体包括:
步骤601,检测任务组是否全部生成完毕,若是,则执行步骤510;若否,则执行步骤602。
可选的,第一检测服务首先获取分布式系统中包含的节点范围的标识及数据库中每个已生成的任务组对应的节点范围的标识,在各任务组对应的节点范围的标识大于或等于分布式系统中包含的节点范围的标识的情况下,判断任务组已经全部生成完毕。在各任务组对应的节点范围的标识小于分布式系统中包含的节点范围的标识的情况下,判断任务组没有全部生成完毕。
步骤602,生成新的任务组。
可选的,在任务组没有全部生成完毕的情况下,第一检测服务根据约定的规则,生成新的任务组。
步骤603,在数据库中查询任务组。
步骤604,判断数据库中是否已经存在相同的任务组,若是,执行步骤605;若否,则执行步骤607。
可以理解的是,为了保证每个任务组均有不同的检测服务对其包含的节点进行检测,若数据库中已经存在相同的任务组,第一检测服务需要判断任务组对应的锁定时刻是否超期。若数据库中不存在相同的任务组,则第一检测服务可以抢占该任务组。
步骤605,判断任务组对应的锁定时刻是否超期,若是,则执行步骤607;若否,则执行步骤606。
可选的,可以根据任务组对应的锁定时刻与当前时刻间的差值、及第一阈值判断任务组对应的锁定时刻是否超期。若任务组对应的锁定时刻与当前时刻间的差值大于或等于第一阈值任务组对应的锁定时刻已经超期,则第一检测服务可以抢占该任务组。若任务组对应的锁定时刻与当前时刻间的差值小于第一阈值,则说明任务组对应的锁定时刻还未超期,进而可以判断任务组对应的占位标识是否为第一检测服务的标识。
步骤606,判断任务组对应的占位标识是否为第一检测服务的标识,若是若是,则执行步骤607;若否,则执行步骤601。
可以理解的是,若任务组对应的占位标识是第一检测服务的标识,则可以将任务组对应的锁定时刻更新为当前时刻,从而延长检测该任务组的时间。
步骤607,抢占任务组。
可以理解的是,在确定任务组对应的锁定时刻已经超期,或任务组对应的占位标识为第一检测服务的标识的情况下,第一检测服务可以抢占该任务组。
步骤608,判断抢占任务组是否成功,若是,则执行步骤609;若否,则执行步骤601。
可以理解的是,由于可能存在多个检测同时抢占该任务组的情况,因此,需要进一步判断是否抢占成功。
步骤609,更新数据库。
可选的,在任务组抢占成功之后,若任务组对应的占位标识不是第一检测服务的标识,则将任务组的对应的占位标识更新为第一检测服务的标识。
可选的,若任务组对应的占位标识为第一检测服务的标识,则可以将任务组对应的锁定时刻更新为当前时刻,从而延长锁定该任务组的周期。
步骤610,结束。
为了实现上述实施例,本公开还提出一种分布式系统中节点状态的检测装置。
图7为本公开实施例所提供的分布式系统中节点状态的检测装置的结构示意图。如图7所示,该分布式系统中节点状态的检测装置700可以包括:
第一确定模块710,用于对当前关联的任务组中各个节点上报的心跳包进行解析,以确定每个节点当前的状态;
第一处理模块720,在任一节点当前的状态为心跳异常的情况下,向其余各第二检测服务发送异常节点检测请求,其中,检测请求中包括任一节点的标识;
第一接收模块730,用于接收各第二检测服务分别返回的任一节点的检测结果;
第二处理模块740,用于在各个检测结果满足预设条件的情况下,向管理控制节点发送异常节点处理请求,其中,处理请求中包括任一节点的标识。
可选的,第一确定模块710,具体用于:
在任一节点上报的心跳包的频率与预设的频率不匹配的情况下,确定任一节点当前的状态为心跳异常。
可选的,还包括:
第一更新模块,用于将数据库中任一节点的状态更新为主观宕机状态。
可选的,第一更新模块,还用于:
在各个检测结果满足预设条件的情况下,将任一节点的状态更新为客观宕机状态;
或者,
在各个检测结果未满足预设条件的情况下,将任一节点的状态更新为正常状态;
或者,
在各第二检测服务返回检测结果前,根据任一节点上报的心跳包确定任一节点的心跳异常解除,将任一节点的状态更新为正常状态。
可选的,第二处理模块740,还具体用于:
各个检测结果中包含的任一节点心跳异常的结果的数量,与检测结果总数量的比值大于第一阈值,确定各个检测结果满足预设条件。
可选的,还包括第二确定模块,具体用于:
获取数据库中各任务组对应的锁定时刻;
在任一任务组对应的锁定时刻与当前时刻间的差值大于或等于第一阈值的情况下,将任一任务组对应的占位标识更新为第一检测服务的标识;
确定任一任务组为当前关联的任务组。
可选的,第二确定模块,还具体用于:
响应于当前时刻与相邻的前一次获取各任务组对应的锁定时刻间的时间间隔大于或等于第二阈值,获取数据库中各任务组对应的锁定时刻。
可选的,还包括第二更新模块,具体用于:
在任一任务组对应的锁定时刻与当前时刻间的差值小于第一阈值的情况下,获取任一任务组对应的占位标识;
在任一任务组对应的占位标识为第一检测服务的标识的情况下,将任一任务组对应的锁定时刻更新为当前时刻。
可选的,还包括第三更新模块,具体用于:
获取分布式系统中包含的节点范围的标识及数据库中每个已生成的任务组对应的节点范围的标识;
在各任务组对应的节点范围的标识小于分布式系统中包含的节点范围的标识的情况下,生成新的任务组;
将新的任务组对应的占位标识更新为第一检测服务的标识。
可选的,第三更新模块,还具体用于:
在数据库各已生成的任务组对应的节点范围的标识与新的任务组对应的节点范围的标识不同的情况下,将新的任务组对应的占位标识更新为第一检测服务的标识。
可选的,还包括第三处理模块,具体用于:
在任一当前节点的心跳包中的状态为节点异常的情况下,向管理控制节点发送异常节点处理请求,其中,处理请求中包括任一节点的标识。
本公开实施例中的上述各模块的功能及具体实现原理,可参照上述各方法实施例,此处不再赘述。
本公开实施例的分布式系统中节点状态的检测装置,首先首先对当前关联的任务组中各个节点上报的心跳包进行解析,以确定每个节点当前的状态,之后在任一节点当前的状态为心跳异常的情况下,向其余各第二检测服务发送异常节点检测请求,再接收各第二检测服务分别返回的任一节点的检测结果;最后在各个检测结果满足预设条件的情况下,向管理控制节点发送异常节点处理请求。由此,第一检测服务在根据节点上传的心跳包判断节点出现心跳异常的情况下,请求其余第二检测服务对心跳异常节点进行校验,进而再请求管理控制节点对异常节点进行处理,从而可以及时、准确地发现分布式系统中存在的异常节点。
为了实现上述实施例,本公开还提出一种计算机设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时,实现如本公开前述实施例提出的分布式系统中节点状态的检测方法。
为了实现上述实施例,本公开还提出一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,实现如本公开前述实施例提出的分布式系统中节点状态的检测方法。
为了实现上述实施例,本公开还提出一种计算机程序产品,当计算机程序产品中的指令处理器执行时,执行如本公开前述实施例提出的分布式系统中节点状态的检测方法。
图8示出了适于用来实现本公开实施方式的示例性计算机设备的框图。图8显示的计算机设备12仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图8所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture;以下简称:ISA)总线,微通道体系结构(Micro Channel Architecture;以下简称:MAC)总线,增强型ISA总线、视频电子标准协会(Video Electronics StandardsAssociation;以下简称:VESA)局域总线以及外围组件互连(Peripheral ComponentInterconnection;以下简称:PCI)总线。
计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(Random Access Memory;以下简称:RAM)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图8未显示,通常称为“硬盘驱动器”)。尽管图8中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如:光盘只读存储器(Compact Disc Read OnlyMemory;以下简称:CD-ROM)、数字多功能只读光盘(Digital Video Disc Read OnlyMemory;以下简称:DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本公开各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本公开所描述的实施例中的功能和/或方法。
计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(Local Area Network;以下简称:LAN),广域网(Wide Area Network;以下简称:WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现前述实施例中提及的方法。
本公开的技术方案,首先对当前关联的任务组中各个节点上报的心跳包进行解析,以确定每个节点当前的状态,之后在任一节点当前的状态为心跳异常的情况下,向其余各第二检测服务发送异常节点检测请求,再接收各第二检测服务分别返回的任一节点的检测结果;最后在各个检测结果满足预设条件的情况下,向管理控制节点发送异常节点处理请求。由此,第一检测服务在根据节点上传的心跳包判断节点出现心跳异常的情况下,请求其余第二检测服务对心跳异常节点进行校验,进而再请求管理控制节点对异常节点进行处理,从而可以及时、准确地发现分布式系统中存在的异常节点。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本公开的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本公开的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本公开的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本公开的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本公开的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本公开各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本公开的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本公开的限制,本领域的普通技术人员在本公开的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (25)

1.一种分布式系统中节点状态的检测方法,其特征在于,所述方法由第一检测服务执行,所述方法包括:
对当前关联的任务组中各个节点上报的心跳包进行解析,以确定每个节点当前的状态;
在任一节点当前的状态为心跳异常的情况下,向其余各第二检测服务发送异常节点检测请求,其中,所述检测请求中包括所述任一节点的标识;
接收所述各第二检测服务分别返回的任一节点的检测结果;
在各个所述检测结果满足预设条件的情况下,向管理控制节点发送异常节点处理请求,其中,所述处理请求中包括所述任一节点的标识。
2.如权利要求1所述的方法,其特征在于,所述对当前关联的任务组中的各个节点上报的心跳包进行解析,以确定每个节点当前的状态,包括:
在任一节点上报的心跳包的频率与预设的频率不匹配的情况下,确定所述任一节点当前的状态为心跳异常。
3.如权利要求1所述的方法,其特征在于,在所述向其余检测服务发送异常节点检测请求之前,还包括:
将数据库中所述任一节点的状态更新为主观宕机状态。
4.如权利要求3所述的方法,其特征在于,在所述将数据库中所述任一节点的状态更新为主观宕机状态之后,还包括:
在各个所述检测结果满足预设条件的情况下,将所述任一节点的状态更新为客观宕机状态;
或者,
在各个所述检测结果未满足预设条件的情况下,将所述任一节点的状态更新为正常状态;
或者,
在所述各第二检测服务返回检测结果前,根据所述任一节点上报的心跳包确定所述任一节点的心跳异常解除,将所述任一节点的状态更新为正常状态。
5.如权利要求1所述的方法,其特征在于,所述各个检测结果满足预设条件,包括:
所述各个检测结果中包含的所述任一节点心跳异常的结果的数量,与所述检测结果总数量的比值大于第一阈值,确定所述各个检测结果满足预设条件。
6.如权利要求1所述的方法,其特征在于,在所述对当前关联的任务组中各个节点上报的心跳包进行解析之前,还包括:
获取数据库中各任务组对应的锁定时刻;
在任一任务组对应的锁定时刻与当前时刻间的差值大于或等于第一阈值的情况下,将所述任一任务组对应的占位标识更新为所述第一检测服务的标识;
确定所述任一任务组为当前关联的任务组。
7.如权利要求6所述的方法,其特征在于,所述获取数据库中各任务组对应的锁定时刻,包括:
响应于当前时刻与相邻的前一次获取各任务组对应的锁定时刻间的时间间隔大于或等于第二阈值,获取所述数据库中各任务组对应的锁定时刻。
8.如权利要求6所述的方法,其特征在于,在所述获取数据库中各任务组对应的锁定时刻之后,还包括:
在任一任务组对应的锁定时刻与当前时刻间的差值小于第一阈值的情况下,获取所述任一任务组对应的占位标识;
在所述任一任务组对应的占位标识为所述第一检测服务的标识的情况下,将所述任一任务组对应的锁定时刻更新为当前时刻。
9.如权利要求1-8任一所述的方法,其特征在于,在所述对当前关联的任务组中各个节点上报的心跳包进行解析之前,还包括:
获取分布式系统中包含的节点范围的标识及数据库中每个已生成的任务组对应的节点范围的标识;
在各任务组对应的节点范围的标识小于所述分布式系统中包含的节点范围的标识的情况下,生成新的任务组;
将所述新的任务组对应的占位标识更新为所述第一检测服务的标识。
10.如权利要求9所述的方法,其特征在于,所述将所述新的任务组对应的占位标识更新为所述第一检测服务的标识,包括:
在数据库各已生成的任务组对应的节点范围的标识与所述新的任务组对应的节点范围的标识不同的情况下,将所述新的任务组对应的占位标识更新为所述第一检测服务的标识。
11.如权利要求1-8任一所述的方法,其特征在于,在所述确定每个节点当前的状态之后,还包括:
在任一当前节点的心跳包中的状态为节点异常的情况下,向管理控制节点发送异常节点处理请求,其中,所述处理请求中包括所述任一节点的标识。
12.一种分布式系统中节点状态的检测装置,其特征在于,所述装置包括:
第一确定模块,用于对当前关联的任务组中各个节点上报的心跳包进行解析,以确定每个节点当前的状态;
第一处理模块,在任一节点当前的状态为心跳异常的情况下,向其余各第二检测服务发送异常节点检测请求,其中,所述检测请求中包括所述任一节点的标识;
第一接收模块,用于接收所述各第二检测服务分别返回的任一节点的检测结果;
第二处理模块,用于在各个所述检测结果满足预设条件的情况下,向管理控制节点发送异常节点处理请求,其中,所述处理请求中包括所述任一节点的标识。
13.如权利要求12所述的装置,其特征在于,所述第一确定模块,具体用于:
在任一节点上报的心跳包的频率与预设的频率不匹配的情况下,确定所述任一节点当前的状态为心跳异常。
14.如权利要求12所述的装置,其特征在于,还包括:
第一更新模块,用于将数据库中所述任一节点的状态更新为主观宕机状态。
15.如权利要求14所述的装置,其特征在于,所述第一更新模块,还用于:
在各个所述检测结果满足预设条件的情况下,将所述任一节点的状态更新为客观宕机状态;
或者,
在各个所述检测结果未满足预设条件的情况下,将所述任一节点的状态更新为正常状态;
或者,
在所述各第二检测服务返回检测结果前,根据所述任一节点上报的心跳包确定所述任一节点的心跳异常解除,将所述任一节点的状态更新为正常状态。
16.如权利要求12所述的装置,其特征在于,所述第二处理模块,还具体用于:
所述各个检测结果中包含的所述任一节点心跳异常的结果的数量,与所述检测结果总数量的比值大于第一阈值,确定所述各个检测结果满足预设条件。
17.如权利要求12所述的装置,其特征在于,还包括第二确定模块,具体用于:
获取数据库中各任务组对应的锁定时刻;
在任一任务组对应的锁定时刻与当前时刻间的差值大于或等于第一阈值的情况下,将所述任一任务组对应的占位标识更新为所述第一检测服务的标识;
确定所述任一任务组为当前关联的任务组。
18.如权利要求17所述的装置,其特征在于,所述第二确定模块,还具体用于:
响应于当前时刻与相邻的前一次获取各任务组对应的锁定时刻间的时间间隔大于或等于第二阈值,获取所述数据库中各任务组对应的锁定时刻。
19.如权利要求17所述的装置,其特征在于,还包括第二更新模块,具体用于:
在任一任务组对应的锁定时刻与当前时刻间的差值小于第一阈值的情况下,获取所述任一任务组对应的占位标识;
在所述任一任务组对应的占位标识为所述第一检测服务的标识的情况下,将所述任一任务组对应的锁定时刻更新为当前时刻。
20.如权利要求12-19任一所述的装置,其特征在于,还包括第三更新模块,具体用于:
获取分布式系统中包含的节点范围的标识及数据库中每个已生成的任务组对应的节点范围的标识;
在各任务组对应的节点范围的标识小于所述分布式系统中包含的节点范围的标识的情况下,生成新的任务组;
将所述新的任务组对应的占位标识更新为所述第一检测服务的标识。
21.如权利要求20所述的装置,其特征在于,所述第三更新模块,还具体用于:
在数据库各已生成的任务组对应的节点范围的标识与所述新的任务组对应的节点范围的标识不同的情况下,将所述新的任务组对应的占位标识更新为所述第一检测服务的标识。
22.如权利要求12-19任一所述的装置,其特征在于,还包括第三处理模块,具体用于:
在任一当前节点的心跳包中的状态为节点异常的情况下,向管理控制节点发送异常节点处理请求,其中,所述处理请求中包括所述任一节点的标识。
23.一种计算机设备,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时,实现如权利要求1-11中任一所述的分布式系统中节点状态的检测方法。
24.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1-11中任一所述的分布式系统中节点状态的检测方法。
25.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序在被处理器执行时,实现如权利要求1-11中任一项所述的分布式系统中节点状态的检测方法。
CN202210248119.5A 2022-03-14 2022-03-14 分布式系统中节点状态的检测方法、装置及计算机设备 Active CN114666389B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210248119.5A CN114666389B (zh) 2022-03-14 2022-03-14 分布式系统中节点状态的检测方法、装置及计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210248119.5A CN114666389B (zh) 2022-03-14 2022-03-14 分布式系统中节点状态的检测方法、装置及计算机设备

Publications (2)

Publication Number Publication Date
CN114666389A true CN114666389A (zh) 2022-06-24
CN114666389B CN114666389B (zh) 2024-05-17

Family

ID=82028945

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210248119.5A Active CN114666389B (zh) 2022-03-14 2022-03-14 分布式系统中节点状态的检测方法、装置及计算机设备

Country Status (1)

Country Link
CN (1) CN114666389B (zh)

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106856489A (zh) * 2015-12-08 2017-06-16 阿里巴巴集团控股有限公司 一种分布式存储系统的服务节点切换方法和装置
CN106874334A (zh) * 2016-08-12 2017-06-20 阿里巴巴集团控股有限公司 一种数据处理方法及装置、资讯处理系统
CN108446171A (zh) * 2018-02-01 2018-08-24 平安科技(深圳)有限公司 电子装置、分布式系统执行任务分配方法及存储介质
US10270668B1 (en) * 2015-03-23 2019-04-23 Amazon Technologies, Inc. Identifying correlated events in a distributed system according to operational metrics
KR20190065202A (ko) * 2019-05-21 2019-06-11 주식회사 우리기술 비정상 태스크의 감시 기능을 가진 분산제어 시스템의 제어기
CN110768873A (zh) * 2019-10-31 2020-02-07 广州酷旅旅行社有限公司 分布式心跳检测方法、系统、装置和计算机设备
CN111049934A (zh) * 2019-12-30 2020-04-21 深圳蓝奥声科技有限公司 无线物联网边缘协同监控方法、装置及系统
US20200250039A1 (en) * 2019-01-31 2020-08-06 EMC IP Holding Company LLC Harmonization of failure domains in a distributed system
CN111970148A (zh) * 2020-08-14 2020-11-20 北京金山云网络技术有限公司 分布式任务调度方法及系统
CN112035326A (zh) * 2020-09-03 2020-12-04 中国银行股份有限公司 基于集群节点互检的异常节点任务处理方法及装置
CN112256714A (zh) * 2020-11-09 2021-01-22 北京沃东天骏信息技术有限公司 数据同步方法、装置、电子设备和计算机可读介质
CN112328421A (zh) * 2020-11-05 2021-02-05 腾讯科技(深圳)有限公司 一种系统故障处理方法、装置、计算机设备和存储介质
CN112860504A (zh) * 2019-11-26 2021-05-28 北京京东尚科信息技术有限公司 监控方法及装置、计算机存储介质、电子设备
CN113778744A (zh) * 2021-01-05 2021-12-10 北京沃东天骏信息技术有限公司 任务处理方法、设备、系统以及存储介质
CN114070739A (zh) * 2021-11-11 2022-02-18 杭州和利时自动化有限公司 一种集群部署方法、装置、设备和计算机可读存储介质

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10270668B1 (en) * 2015-03-23 2019-04-23 Amazon Technologies, Inc. Identifying correlated events in a distributed system according to operational metrics
CN106856489A (zh) * 2015-12-08 2017-06-16 阿里巴巴集团控股有限公司 一种分布式存储系统的服务节点切换方法和装置
CN106874334A (zh) * 2016-08-12 2017-06-20 阿里巴巴集团控股有限公司 一种数据处理方法及装置、资讯处理系统
CN108446171A (zh) * 2018-02-01 2018-08-24 平安科技(深圳)有限公司 电子装置、分布式系统执行任务分配方法及存储介质
US20200250039A1 (en) * 2019-01-31 2020-08-06 EMC IP Holding Company LLC Harmonization of failure domains in a distributed system
KR20190065202A (ko) * 2019-05-21 2019-06-11 주식회사 우리기술 비정상 태스크의 감시 기능을 가진 분산제어 시스템의 제어기
CN110768873A (zh) * 2019-10-31 2020-02-07 广州酷旅旅行社有限公司 分布式心跳检测方法、系统、装置和计算机设备
CN112860504A (zh) * 2019-11-26 2021-05-28 北京京东尚科信息技术有限公司 监控方法及装置、计算机存储介质、电子设备
CN111049934A (zh) * 2019-12-30 2020-04-21 深圳蓝奥声科技有限公司 无线物联网边缘协同监控方法、装置及系统
CN111970148A (zh) * 2020-08-14 2020-11-20 北京金山云网络技术有限公司 分布式任务调度方法及系统
CN112035326A (zh) * 2020-09-03 2020-12-04 中国银行股份有限公司 基于集群节点互检的异常节点任务处理方法及装置
CN112328421A (zh) * 2020-11-05 2021-02-05 腾讯科技(深圳)有限公司 一种系统故障处理方法、装置、计算机设备和存储介质
CN112256714A (zh) * 2020-11-09 2021-01-22 北京沃东天骏信息技术有限公司 数据同步方法、装置、电子设备和计算机可读介质
CN113778744A (zh) * 2021-01-05 2021-12-10 北京沃东天骏信息技术有限公司 任务处理方法、设备、系统以及存储介质
CN114070739A (zh) * 2021-11-11 2022-02-18 杭州和利时自动化有限公司 一种集群部署方法、装置、设备和计算机可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
田东;毛太平;吴长泽;: "基于灰色预测的分布式系统动态故障检测服务", 计算机工程与设计, no. 24, 23 December 2007 (2007-12-23) *

Also Published As

Publication number Publication date
CN114666389B (zh) 2024-05-17

Similar Documents

Publication Publication Date Title
US11625700B2 (en) Cross-data-store operations in log-coordinated storage systems
CN105357038B (zh) 监控虚拟机集群的方法和系统
US8126843B2 (en) Cluster-wide read-copy update system and method
US7275097B2 (en) System and method for analyzing input/output activity on local attached storage
US9817703B1 (en) Distributed lock management using conditional updates to a distributed key value data store
US7509343B1 (en) System and method of collecting and reporting system performance metrics
US5659682A (en) Scheme to determine completion of directory operations for server recovery
US20050076070A1 (en) Method, apparatus, and computer readable medium for managing replication of back-up object
US20050066027A1 (en) Method of displaying events
US8626765B2 (en) Processing database operation requests
US20170192863A1 (en) System and method of failover recovery
JPH0833857B2 (ja) システム間デ−タベ−ス共用システムジヤ−ナルマ−ジ方式
CN111241122B (zh) 任务监测方法、装置、电子设备和可读存储介质
CN111769933A (zh) 一种监控文件变化方法、装置、电子设备及存储介质
US8271454B2 (en) Circular log amnesia detection
CN112579307A (zh) 一种物理锁资源的分配检测方法、装置及电子设备
US6807540B2 (en) System and method for deadlock management in database systems with demultiplexed connections
CN111597270A (zh) 数据同步方法、装置、设备及计算机存储介质
WO2005043414A2 (en) Tracking space usage in a database
US8924343B2 (en) Method and system for using confidence factors in forming a system
US20210382636A1 (en) Customizable lock management for distributed resources
US8103685B1 (en) Methods and apparatus for capturing last discovery time of managed objects
CN114666389A (zh) 分布式系统中节点状态的检测方法、装置及计算机设备
US7660888B2 (en) Indicating network resource availability methods, system and program product
US8386732B1 (en) Methods and apparatus for storing collected network management data

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