CN113010337B - 故障检测方法、总控节点、工作节点及分布式系统 - Google Patents

故障检测方法、总控节点、工作节点及分布式系统 Download PDF

Info

Publication number
CN113010337B
CN113010337B CN202110081966.2A CN202110081966A CN113010337B CN 113010337 B CN113010337 B CN 113010337B CN 202110081966 A CN202110081966 A CN 202110081966A CN 113010337 B CN113010337 B CN 113010337B
Authority
CN
China
Prior art keywords
node
working
cluster
working node
heartbeat
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
Application number
CN202110081966.2A
Other languages
English (en)
Other versions
CN113010337A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202110081966.2A priority Critical patent/CN113010337B/zh
Publication of CN113010337A publication Critical patent/CN113010337A/zh
Application granted granted Critical
Publication of CN113010337B publication Critical patent/CN113010337B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/119Details of migration of file systems
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Abstract

本申请实施例提供了一种故障检测方法、总控节点、工作节点及分布式系统,涉及分布式系统技术领域。该方法包括:向工作节点集群发送心跳包;从Zookeeper集群获取工作节点集群维护的Znode临时节点的信息;根据接收到的工作节点集群返回的心跳响应,以及从Zookeeper集群获取到的Znode临时节点的信息,从工作节点集群中确定故障的工作节点;其中,工作节点集群中的任意一个工作节点返回的心跳响应中包括任意一个工作节点感知到的工作节点集群的心跳状态。本申请实施例将不必要HA频次下降到0;最终实现了文件存储的SLA服务可用性达到99.9999%,而且可适用于任意存在单点故障风险的系统中。

Description

故障检测方法、总控节点、工作节点及分布式系统
技术领域
本申请涉及分布式系统技术领域,具体而言,本申请涉及一种故障检测方法、总控节点、工作节点及分布式系统。
背景技术
目前文件存储承载的是云上客户在线业务,对外提供共享文件存储服务的工作节点存在单点故障风险。
当工作节点所在接入机异常或者其本身异常时,总控节点需要能够快速检测到故障发生,及时将工作节点原有服务迁移到集群中的其它工作节点,尽可能缩短中断用户业务时长。
现有故障探测技术注重于技术上易实现性,大部分相关技术无法处理网络分区场景,导致误判频率很高,从而影响用户业务。
发明内容
本发明实施例提供一种克服上述问题或者至少部分地解决上述问题的故障检测方法、装置、电子设备及存储介质。
第一方面,提供了一种故障检测方法,应用于分布式系统中的总控节点,分布式系统还包括Zookeeper集群和工作节点集群,该方法包括:
向工作节点集群发送心跳包;
从Zookeeper集群获取工作节点集群维护的Znode临时节点的信息;
根据接收到的工作节点集群返回的心跳响应,以及从Zookeeper集群获取到的Znode临时节点的信息,从工作节点集群中确定故障的工作节点;
其中,工作节点集群中的任意一个工作节点返回的心跳响应中包括任意一个工作节点感知到的工作节点集群的心跳状态。
在一个可能的实现方式中,根据接收到的工作节点集群返回的心跳响应,以及从Zookeeper集群获取到的Znode临时节点的信息,从工作节点集群中确定故障的工作节点,包括:
若工作节点集群中的任意一个工作节点同时满足以下条件,则确定任意一个工作节点为故障的工作节点:
向任意一个工作节点连续发送预设次数的心跳包后均没有接收到任意一个工作节点返回的心跳响应;
在向任意一个工作节点发送预设次数的心跳包期间,从Zookeeper集群中未获取任意一个工作节点维护的Znode临时节点的信息;
根据接收到的心跳响应确定任意一个工作节点心跳异常。
在一个可能的实现方式中,根据接收到的心跳响应确定任意一个工作节点心跳异常,包括:
在向任意一个工作节点发送预设次数的心跳包期间,若感知到任意一个工作节点心跳异常的心跳响应,占接收到的所有心跳响应的比值大于预设阈值,则确定任意一个工作节点心跳异常。
在一个可能的实现方式中,从Zookeeper集群获取工作节点集群维护的Znode临时节点的信息,包括:
若向任意一个工作节点连续发送预设次数的心跳包后均没有接收到任意一个工作节点返回的心跳响应,则从Zookeeper集群获取任意一个工作节点维护的Znode临时节点的信息。
在一个可能的实现方式中,工作节点用于提供存储服务;
从工作节点集群中确定故障的工作节点,之后还包括:
将故障的工作节点提供的存储服务迁移至工作节点集群中未故障的工作节点。
第二方面,提供了一种协同故障检测方法,应用于分布式系统中的工作节点集群中的任意一个工作节点,分布式系统还包括总控节点和Zookeeper集群,工作节点未故障且未与总控节点和Zookeeper集群存在网络分区,该协同故障检测方法包括:
在Zookeeper集群中维护Znode临时节点;
感知工作节点集群的心跳状态;
接收总控节点发送的心跳包,向总控节点返回包括感知到的工作节点群的心跳状态的心跳响应,以使得总控节点根据接收到的工作节点集群返回的心跳响应,以及从Zookeeper集群获取到的Znode临时节点的信息,从工作节点集群中确定故障的工作节点。
在一个可能的实现方式中,感知工作节点集群的心跳状态,包括:
向工作节点集群中除任意一个工作节点以外的工作节点发送心跳包;
根据接收到的工作节点集群中除任意一个工作节点以外的工作节点返回的心跳响应,作为感知到的工作节点集群的心跳状态。
在一个可能的实现方式中,感知工作节点集群的心跳状态,包括:
向工作节点集群中除任意一个工作节点以外的工作节点发送心跳包;
根据接收到的工作节点集群中除任意一个工作节点以外的工作节点返回的心跳响应,作为感知到的工作节点集群的心跳状态。
第三方面,提供了一种分布式系统中的总控节点,分布式系统还包括工作节点集群以及Zookeeper集群,总控节点包括:
心跳包发送模块,用于向工作节点集群发送心跳包;
临时节点获取模块,从Zookeeper集群获取工作节点集群维护的Znode临时节点的信息;
故障节点确定模块,用于根据接收到的工作节点集群返回的心跳响应,以及从Zookeeper集群获取到的Znode临时节点的信息,从工作节点集群中确定故障的工作节点;
其中,工作节点集群中的任意一个工作节点返回的心跳响应中包括任意一个工作节点感知到的工作节点集群的心跳状态。
在一个可能的实现方式中,故障节点确定模块具体用于:
若工作节点集群中的任意一个工作节点同时满足以下条件,则确定任意一个工作节点为故障的工作节点:
向任意一个工作节点连续发送预设次数的心跳包后均没有接收到任意一个工作节点返回的心跳响应;
在向任意一个工作节点发送预设次数的心跳包期间,从Zookeeper集群中未获取任意一个工作节点维护的Znode临时节点的信息;
根据接收到的心跳响应确定任意一个工作节点心跳异常。
在一个可能的实现方式中,故障节点确定模块根据接收到的心跳响应确定任意一个工作节点心跳异常,包括:
在向任意一个工作节点发送预设次数的心跳包期间,若感知到任意一个工作节点心跳异常的心跳响应,占接收到的所有心跳响应的比值大于预设阈值,则确定任意一个工作节点心跳异常。
在一个可能的实现方式中,临时节点获取模块具体用于:
若向任意一个工作节点连续发送预设次数的心跳包后均没有接收到任意一个工作节点返回的心跳响应,则从Zookeeper集群获取任意一个工作节点维护的Znode临时节点的信息。
在一个可能的实现方式中,工作节点用于提供存储服务;
总控节点还包括:
将故障的工作节点提供的存储服务迁移至工作节点集群中未故障的工作节点。
第四方面,提供了一种分布式系统中工作节点集群的未故障的工作节点,分布式系统还包括总控节点和Zookeeper集群,工作节点未故障且未与总控节点和Zookeeper集群存在网络分区,工作节点包括:
临时节点维护模块,用于在Zookeeper集群中维护Znode临时节点;
心跳感知模块,用于感知工作节点集群的心跳状态;
心跳响应模块,用于接收总控节点发送的心跳包,向总控节点返回包括感知到的工作节点群的心跳状态的心跳响应,以使得总控节点根据接收到的工作节点集群返回的心跳响应,以及从Zookeeper集群获取到的Znode临时节点的信息,从工作节点集群中确定故障的工作节点。
在一个可能的实现方式中,心跳感知模块包括:
心跳包发送单元,用于向工作节点集群中除任意一个工作节点以外的工作节点发送心跳包;
心跳状态确定单元,用于根据接收到的工作节点集群中除任意一个工作节点以外的工作节点返回的心跳响应,作为感知到的工作节点集群的心跳状态。
第五方面,提供一种分布式系统,包括:Zookeeper集群、如第三方面所提供的总控节点以及如第四方面所提供的工作节点构成的工作节点集群。
第六方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现如第一方面或第二方面所提供的方法的步骤。
第七方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面或第二方面所提供的方法的步骤。
第八方面,本发明实施例提供一种计算机程序,该计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中,当计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行实现如第一方面或第二方面所提供的方法的步骤。
本发明实施例提供的故障检测方法、总控节点、工作节点及分布式系统,总控节点通过向工作节点集群发送心跳包,并从Zookeeper集群获取工作节点集群维护的Znode临时节点的信息,根据接收到的工作节点集群返回的心跳响应,以及从Zookeeper集群获取到的Znode临时节点的信息,从工作节点集群中确定故障的工作节点,根据是否接收到工作节点的心跳响应、只有工作节点未故障且与Zookeeper集群不存在网络分区时才能维护Znode临时节点以及工作节点返回的心跳响应中包括感知到的工作节点集群的心跳状态,共三方面综合考虑工作节点是否出现故障,避免了存在网络分区时误触发HA。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1是本申请实施例提供的分布式系统应用于区块链系统的一个可选的结构示意图;
图2示例地示出了本申请实施例提供的区块结构的一个可选的示意图;
图3示例性地示出了相关技术中分布式系统中的Master检测Agent故障的示意图;
图4示例性地示出了适用于各个游戏玩家的分布式系统的故障检查场景过程;
图5示例性地示出了本申请实施例的分布式系统的Master检测Agent故障的示意图;
图6示例性地示出了本申请实施例的故障检测方法的流程示意图;
图7示例性地示出了本申请实施例的总控节点与工作节点心跳探测的交互示意图;
图8示例性地示出了本申请实施例中总控节点与Zookeeper集群的交互示意图;
图9示例性地示出了本申请实施例的工作节点间心跳探测的示意图;
图10示例性地示出了本申请实施例的协同故障检测方法的流程示意图;
图11示例性地示出了本申请实施例中工作节点与Zookeeper集群的交互示意图;
图12示例性地示出了为本申请实施例提供的总控节点的结构示意图;
图13示例性地示出了为本申请实施例提供的工作节点的结构示意图;
图14示例性地示出了本申请实施例提供了一种分布式系统的结构示意图;
图15示例性地示出了本申请实施例中总控节点、工作节点和Zookeeper集群的三方交互示意图;
图16示例性地示出了本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面详细描述本申请的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
在对本申请所示的各个实施例进行说明之前,首先对本申请涉及到的几个概念进行介绍。
分布式系统(distributed system)分布式系统是多个节点通过通信线路互联而构成的松散耦合的系统。分布式系统需要大量机器协作,面临诸多的挑战,其中比较突出的挑战在于节点故障,虽然单个节点的故障概率较低,但当节点数目达到一定规模,出故障的概率就会变高。分布式系统需要保证故障发生的时候,系统仍然是可用的,这就需要监控节点的状态,在节点故障的情况下将该节点负责的计算、存储任务转移到其他节点。
本申请实施例涉及的系统可以是由客户端、多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)通过网络通信的形式连接形成的分布式系统。
以分布式系统为区块链系统为例,参见图1,图1是本申请实施例提供的分布式系统100应用于区块链系统的一个可选的结构示意图,由多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)和客户端形成,节点之间形成组成的点对点(P2P,Peer ToPeer)网络,P2P协议是一个运行在传输控制协议(TCP,Transmission Control Protocol)协议之上的应用层协议。在分布式系统中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作系统层和应用层。
参见图1示出的区块链系统中各节点的功能,涉及的功能包括:
1)路由,节点具有的基本功能,用于支持节点之间的通信。
节点除具有路由功能外,还可以具有以下功能:
2)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链系统中的其他节点,供其他节点在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。
例如,应用实现的业务包括:
2.1)钱包,用于提供进行电子货币的交易的功能,包括发起交易(即,将当前交易的交易记录发送给区块链系统中的其他节点,其他节点验证成功后,作为承认交易有效的响应,将交易的记录数据存入区块链的临时区块中;当然,钱包还支持查询电子货币地址中剩余的电子货币;
2.2)共享账本,用于提供账目数据的存储、查询和修改等操作的功能,将对账目数据的操作的记录数据发送到区块链系统中的其他节点,其他节点验证有效后,作为承认账目数据有效的响应,将记录数据存入临时区块中,还可以向发起操作的节点发送确认。
2.3)智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易,例如查询买家所购买商品的物流状态,在买家签收货物后将买家的电子货币转移到商户的地址;当然,智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。
3)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点提交的记录数据。
参见图2,图2是本申请实施例提供的区块结构(Block Structure)一个可选的示意图,每个区块中包括本区块存储交易记录的哈希值(本区块的哈希值)、以及前一区块的哈希值,各区块通过哈希值连接形成区块链。另外,区块中还可以包括有区块生成时的时间戳等信息。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了相关的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
总控节点(Master):监控工作节点的状态,需要能够快速检测到工作节点异常,并尽可能减少误判。
工作节点(Agent):接收并执行总控节点命令,可以为用户、公司提供数据存储、计算等各类服务。
接入机:部署工作节点服务的物理机。
HA(high availability):Master检测到Agent异常后,将故障Agent的原有服务迁移到集群中其它Agent上。
网络分区
当网络由于发生异常情况,导致分布式系统中部分节点之间的网络延时不断增大,最终导致组成分布式系统的所有节点中,只有部分节点之间能够进行正常通信,而另一些节点则不能——将这个现象称为网络分区。当网络分区出现时,分布式系统会出现局部小集群,在极端情况下,这些局部小集群会独立完成原本需要整个分布式才能完成的功能,这就对分布式一致性提出类非常大的挑战。
云技术(Cloud technology)
云技术是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
云存储
云存储是在云计算(cloud computing)概念上延伸和发展出来的一个新的概念,分布式云存储系统是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。
云计算
云计算是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。
作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为IAgentS(Infrastructure as a Service,基础设施即服务)平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备、网络设备。
SLA:服务等级协议(简称:SLA,全称:service level agreement)。是在一定开销下为保障服务的性能和可用性,服务提供商与用户间定义的一种双方认可的协定。通常这个开销是驱动提供服务质量的主要因素。
请参阅图3,其示例性地示出了相关技术中分布式系统中的Master检测Agent故障的示意图,如图所示,Master通过与Agent定期交换心跳包的方式检测Agent是否出现故障,具体地,在图3所示的分布式系统中包括一个Master和三个Agent,应当理解的是,本申请实施例对于Master和Agent的个数不作具体的限定,特别地,当Master的个数为多个时,可以在多个Master之中指定一个主Master,而除主Master之外的Master作为备用Master,当某一个备用Master侦测到主Master故障时或者主Master侦测到自身发生故障时,可以实现主备切换,由某一个备用Master进行后续的故障检测服务。
Master分别向3个Agent发送心跳包,其中Agent1和Agent2在接收到心跳包后及时向Master返回了心跳响应,Master根据接收到心跳响应,确定Agent1和Agent2是存活的,没有出现故障,Master并未接收到Agent3返回的心跳响应,因此确定Agent3存在心跳丢失,判定Agent3出现故障。
但实际是,Master没有接收到Agent3返回的心跳响应,并不只是因为Agent所在的接入机异常或者本身异常(两种异常在本申请实施例中都称之为故障),还可能是因为Agent与Master存在网络分区。相关的故障检测技术注重于技术上易实现性,但无法处理网络分区场景,导致误判频率很高,从而影响用户业务。
进一步地,为了便于理解现有技术中存在的问题,通过图4所示的故障检测场景进行解释,图4所示的是一个适用于各个游戏玩家的分布式系统的故障检查场景过程,在该分布式系统中游戏玩家P1通过终端发送游戏存档存储请求OP1,总控节点在接收到请求后,确定游戏玩家P1的请求是发送给存档1工作节点的,该工作节点中保存了游戏玩家P1的游戏存档数据,所以总控节点需要将OP1发送至存档1工作节点。需要进一步说明的是,上述分布式系统可以是多个物理服务器构成的服务器集群,可以提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。而下文的终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
一般地,当存档1工作节点接收到OP1后,会将游戏玩家P1的游戏存档进行保存,但此时总控节点不能接收到存档1工作节点发送的存档成功的响应信息,这可能是因为总控节点与存档1节点存在网络分区,也可能是因为当前玩家数量过多导致存档1节点故障,所以总控节点不能准确判定存档1工作节点是否已经将戏玩家P1的游戏存档进行保存,也就不能确定是否将OP1转发至存档2工作节点进行处理,或者将存档1工作节点上原有的服务(存储的游戏存档)迁移到存档2工作节点,或者不做任何处理,现有的总控节点很容易出现误判。
本申请提供的故障检测方法、总控节点、工作节点及分布式系统,旨在解决现有技术的如上技术问题。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
请参阅图5,其示例性地示出了本申请实施例的分布式系统的Master检测Agent故障的示意图。
如图所示,Master仍然需要与Agent定期交换心跳包,若Master收到Agent返回的心跳响应,可证明Agent状态正常,但若Master没有收到心跳响应,无法区分是Agent状态异常还是Master与Agent间存在网络分区,所以本申请实施例一方面增设了Agent间交换心跳包,实现任意Agent均能够感知集群中所有Agent状态,可有效减少因单Agent与Master或单Agent与Zookeeper集群(也称之为ZK server,下同)存在网络分区时的误判,另一方面,为区分Master与Agent间存在网络分区,引入Zookeeper集群,正常状态下Agent定期在Zookeeper集群中维护Znode临时节点,Master定期获取Znode临时节点的信息。当Master与Agent存在网络分区,而Master与Zookeeper集群、Agent与Zookeeper集群网络正常时,本申请实施例能够避免误触发HA,最后,Master汇总三种探测方式下Agent状态,只有全部异常条件均满足时才触发HA,实现节点无故障时不会误触发HA,有故障时快速检测并触发HA。
本申请实施例提供的故障检测方法应用于具有云计算能力的节点设备,包括但不限于总控节点和工作节点。在本申请实施例中,以总控节点作为执行主体,对本申请实施例提供的故障检测的生成方法进行介绍。
请参阅图6,其示例性地示出了本申请实施例的故障检测方法的流程示意图,该方法应用于分布式系统中的总控节点,并且分布式系统还包括Zookeeper集群和工作节点集群,故障检测方法包括:
S101、向工作节点集群发送心跳包。
结合图3和图5可知,本申请实施例的总控节点向工作节点集群发送心跳包,是指向工作节点集群中的所有工作节点发送心跳包,目的是通过是否接收到心跳响应,对工作节点是否异常进行一个方面的判断。
请参阅图7,其示例性地示出了本申请实施例的总控节点与工作节点心跳探测的交互示意图,如图所示:
在情况1中,总控节点向工作节点发送心跳包,总控节点在预设时间内(图中为举例显示为1秒钟)接收到工作节点返回的心跳响应(也称之为回包),总归节点判定工作节点未出现故障。
在情况2中,总控节点向工作节点发送心跳包,总控节点没有接收到工作节点返回的心跳响应时,若连续多次发送心跳包,均没有收到工作节点返回的心跳响应,只从这一情况总控节点并不能直接确定是工作节点发送了故障,也可能是因为总控节点和工作节点直接存在网络分区。
S102、从Zookeeper集群获取工作节点集群维护的Znode临时节点的信息。
本申请实施例的分布式系统中新增了zookeeer集群,Zookeeper是一个分布式的,开放源码的分布式应用程序协调服务。Zookeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息。Zookeeper集群中的每个节点称之为Znode节点。Znode节点的类型一般有永久节点和临时节点之分,节点的类型在创建时即被确定,并且不能改变,具体的:
临时节点:该节点的生命周期依赖于创建它们的会话。一旦会话(Session)结束,临时节点将被自动删除,当然可以也可以手动删除。
永久节点:该节点的生命周期不依赖于会话,并且只有在客户端显示执行删除操作的时候,他们才能被删除。
本申请实施例中的工作节点可以在Zookeeper集群中注册并维护Znode临时节点,Znode临时节点的信息中包括注册该Znode临时节点的工作节点的唯一标识,该唯一标识可以为工作节点的IP地址,从而主控节点通过在Zookeeper集群中根据工作节点的唯一标识查找相应的Znode临时节点。
如果工作节点不存在故障并且与Zookeeper集群不存在网络分区,那么工作节点可以持续维护Znode临时节点,主控节点可以从Zookeeper集群中获取到该Znode临时节点的信息。
而当工作节点出现故障或者与Zookeeper集群存在网络分区,那么工作节点和Zookeeper集群的会话将中断,进而导致该工作节点维护的Znode临时节点的生命周期结束,此时总控节点将无法从Zookeeper集群中获取到该Znode临时节点的信息,因此总控节点可以根据是否能够获取到Znode临时节点的信息,对维持该Znode临时节点的工作节点是否异常进行另一个方面的判断。
请参阅图8,其示例性地示出了本申请实施例中总控节点与Zookeeper集群的交互示意图,如图所示:
在情况1中,总控节点向Zookeeper集群发送待查询的工作节点的唯一标识,以获取记录该唯一标识的Znode临时节点的信息;
总控节点从Zookeeper集群中获取到工作节点维护的Znode临时节点的信息,则确定工作节点未故障。
在情况2中,总控节点向Zookeeper集群发送待查询的工作节点的唯一标识,以获取记录该唯一标识的Znode临时节点的信息;
总控节点从Zookeeper集群中无法获取到工作节点维护的Znode临时节点的信息,只从这一情况无法确定工作节点是因为出现了故障,还是因为总控节点自身与Zookeeper集群存在网络分区,或者是工作节点与Zookeeper集群存在网络分区。
本申请实施例对于步骤S101和步骤S102的执行顺序不作具体的限定,步骤S101和S102可以先后执行,也可以同时执行。
S103、根据接收到的工作节点集群返回的心跳响应,以及从Zookeeper集群获取到的Znode临时节点的信息,从工作节点集群中确定故障的工作节点。
应当理解的是,对于工作节点集群中任意一个工作节点,如果该工作节点既没有出现故障,也没有与总控节点出现网络分区,那么该工作节点可以接收到总控节点发送的心跳包,并且总控节点也可以接收到该工作节点发送的心跳响应,而如果该工作节点出现故障和/或与总控节点出现网络分区,那么总控节点不能接收到该工作节点发送的心跳响应,也就是说,总控节点接收到的工作节点集群返回的心跳响应,并不一定包含工作节点集群中所有工作节点返回的心跳响应。
并且,总控节点接收到的每个心跳响应,与相关技术存在区别的是,还包括返回该心跳响应的工作节点感知到的工作节点集群的心跳状态。
请参阅图9,其示例性地示出了本申请实施例的工作节点间心跳探测的示意图,如图所示,Agent1、Agent2和Agent3两两之间相互发送心跳包,并接收心跳响应,例如,Agent1向Agent2和Agent3发送心跳包,若接收到Agent2和Agent3返回的的信息,则判定Agent2和Agent3心跳正常,并生成返回至Master的心跳响应,该返回至Master的心跳响应中记录了Agent1感知的工作集群的心跳状态:
Agent1:心跳正常;
Agent2:心跳正常;
Agent3:心跳正常。
当Agent1没有接收到Agent2发送的心跳响应,但接收到Agent3发送的心跳响应时,则Agent1感知的工作集群的心跳状态可以表示为:
Agent1:心跳正常;
Agent2:心跳异常;
Agent3:心跳正常。
总控节点根据接收到的心跳包中包括的Agent感知的工作集群的心跳状态,可以对工作节点是否异常进行另一个方面的判断,比如,当Master接收的大部分心跳包中都感知到某个Agent的心跳状态异常,则该Agent出现故障的可能性较高。
本申请实施例的应用于总控节点侧的故障检测方法,通过向工作节点集群发送心跳包,并从Zookeeper集群获取工作节点集群维护的Znode临时节点的信息,根据接收到的工作节点集群返回的心跳响应,以及从Zookeeper集群获取到的Znode临时节点的信息,从工作节点集群中确定故障的工作节点,根据是否接收到工作节点的心跳响应、只有工作节点未故障且与Zookeeper集群不存在网络分区时才能维护Znode临时节点以及工作节点返回的心跳响应中包括感知到的工作节点集群的心跳状态,共三方面综合考虑工作节点是否出现故障,避免了存在网络分区时误触发HA。
另外,通过将本申请实施例的故障检测方法在腾讯云共享文件存储系统中进行实际应用,经过验证,本申请实施例能够将不必要HA频次下降到0;最终实现了文件存储的SLA服务可用性达到99.9999%,而且可适用于任意存在单点故障风险的系统中。
在上述各实施例的基础上,作为一种可选实施例,根据接收到的工作节点集群返回的心跳响应,以及从Zookeeper集群获取到的Znode临时节点的信息,从工作节点集群中确定故障的工作节点,包括
若工作节点集群中的任意一个工作节点同时满足以下条件,则确定任意一个工作节点为故障的工作节点:
条件1、向任意一个工作节点连续发送预设次数的心跳包后均没有接收到任意一个工作节点返回的心跳响应;
条件2、在向任意一个工作节点发送预设次数的心跳包期间,从Zookeeper集群中未获取任意一个工作节点维护的Znode临时节点的信息;
条件3、根据接收到的心跳响应确定任意一个工作节点心跳异常。
以图5所示的分布式系统为例,总控节点周期性向工作节点发送心跳,一般地,工作节点都会在预设时长内向总控节点返回心跳响应,若总控节点向工作节点1连续发送预设次数(例如可以为3、5、7等等)后均没有收到工作节点1返回的心跳响应,并且总控节点接受到的工作节点2和工作节点3返回的心跳响应中都感知工作节点1心跳异常,并且从Zookeeper集群中也没有获取到工作节点1维护的Znode临时节点的信息,那么就确定工作节点1是因为故障与总控节点断开连接,而不是因为分区导致的断开连接。
在上述各实施例的基础上,对于工作节点集群中的任意一个工作节点,若工作节点满足上述三个条件中的一个或两个,则生成包含工作节点满足的条件的告警信息。
也就是说,当工作节点并未全部满足上述三个条件时,由于并不能确定工作节点发生了故障,则只生成包含工作节点满足的条件的告警信息。
以图5所示实施例为例,若总控节点能够接收到工作节点1返回的心跳响应,并且根据接收到的心跳响应确定工作节点1心跳正常,只不过总控节点从Zookeeper集群中没有获取到工作节点1维护的Znode临时节点的信息,则生成的告警信息中记录:总控节点在Zookeeper集群中未获取到工作节点1维护的Znode临时节点的信息。通过将该告警信息发送至分布式系统的运维人员,使得运维人员对工作节点1和Zookeeper集群的网络是否分区进行检查。
在上述各实施例的基础上,对于任意一个节点,若该节点仅满足条件2,不满足条件1和3,说明工作节点集群中出该节点之外的其他节点基本上能够感知到该节点的心跳,并且该节点也能够正常维护Zookeeper集群中的Znode节点,很可能是因为该工作节点与总控节点之间存在网络分区导致总控节点无法接收到该工作节点的心跳响应,需要由运维人员针对性地进行检测。
在上述各实施例的基础上,工作节点用于提供存储服务,本申请实施例对于工作节点提供的存储服务的具体存储对象不作具体的限定,例如可以是文档、游戏、照片、音视频等等。
总控节点从工作节点集群中确定故障的工作节点,之后还包括:
将故障的工作节点提供的存储服务迁移至工作节点集群中未故障的工作节点。
以图4为例,若总控节点确定存档1工作节点发生故障,则将存档1工作节点提供的游戏存档数据都转移至存档2工作节点,并且在接到终端发送的存档1工作节点的游戏存档请求时,也会将游戏存档请求转发至存档2工作节点,由存档2工作节点提供存储服务。
在上述各实施例的基础上,作为一种可选实施例,根据接收到的心跳响应确定任意一个工作节点心跳异常,包括:
在向任意一个工作节点发送预设次数的心跳包期间,若感知到任意一个工作节点心跳异常的心跳响应,占接收到的所有心跳响应的比值大于预设阈值,则确定任意一个工作节点心跳异常。
以图5所示的分布式系统为例,若总控节点在向工作节点1发送预设次数的心跳包期间,共接受到由工作节点2和工作节点3返回的10个心跳响应,并且10个心跳响应中有8个心跳响应都感知到工作节点1心跳异常,若预设阈值为0.7,则可以确定感知到工作节点1心跳异常的心跳响应占接收到的所有心跳响应的比值大于预设阈值,确定工作节点1心跳异常。
在上述各实施例中,总控节点需要从Zookeeper集群中获取工作节点集群维护的Znode临时节点的信息,当工作节点集群中的工作节点数量较多时,总控节点想要确定没有获取到哪些Znode临时节点的信息的效率较低,因此,作为一种可选实施例,从Zookeeper集群获取工作节点集群维护的Znode临时节点的信息,包括:
若向任意一个工作节点连续发送超过预设次数的心跳包后均没有接收到任意一个工作节点返回的心跳响应,则从Zookeeper集群获取任意一个工作节点维护的Znode临时节点的信息:
若向任意一个工作节点连续发送预设次数的心跳包后均没有接收到任意一个工作节点返回的心跳响应,则从Zookeeper集群获取任意一个工作节点维护的Znode临时节点的信息。
以图5所示的分布式系统为例,若总控节点向工作节点1连续发送预设次数的心跳包后均没有接收到工作节点1返回的心跳响应,则从Zookeeper集群中获取工作节点1维护的Znode临时节点。
这样操作一方面能够减少总控节点从Zookeeper集群获取Znode临时节点信息的频率,同时也能大幅降低获取的Znode临时节点信息的数目,为进一步提高故障检测效率奠定基础。
请参阅图10,其示例性地示出了本申请实施例的协同故障检测方法的流程示意图,本方法应用于工作节点集群中未出现故障且未与总控节点和Zookeeper集群存在网络分区的工作节点,如图10所示,该方法包括:
S201、在Zookeeper集群中维护Znode临时节点。
在本申请实施例的分布式系统中,工作节点集群中的工作节点在没有出现故障且与Zookeeper集群不存在网络分区时,会在Zookeeper集群中注册并维护对应的Znode临时节点,当工作节点出现故障,或者与Zookeeper集群存在网络分区时,则无法在Zookeeper集群中继续维护对应的Znode临时节点。
请参阅图11,其示例性地示出了本申请实施例中工作节点与Zookeeper集群的交互示意图,如图所示:
1、Agent向Zookeeper集群发送注册Znode临时节点的请求,该请求中包含Agent的唯一标识,该唯一标识可以为Agent的IP地址。
2、Zookeeper集群根据请求完成Znode临时节点的注册,并在注册成功后向Agent返回注册成功的信息。
3、Agent与Zookeeper集群保持会话,从而实现维护Znode临时节点的存活。
S202、感知工作节点集群的心跳状态;
工作节点在未故障时,还需要感知工作节点集群的心跳状态,工作节点集群的心跳状态可以包括工作节点集群中感知到的工作节点的心跳状态,当一个工作节点和另一个工作节点均没有出现故障,且两个工作节点没有分区的情况下,两个工作节点中的每个工作节点可以接收到对方发送的心跳响应,也就可以判定对方的心跳状态正常。
需要注意的是,本申请实施例对步骤S201和步骤S202的执行顺序不作具体的限定。步骤S201和S202可以先后执行,也可以同时执行。
S203、接收总控节点发送的心跳包向总控节点返回包括感知到的工作节点群的心跳状态的心跳响应,以使得总控节点根据接收到的工作节点集群返回的心跳响应,以及从Zookeeper集群获取到的Znode临时节点的信息,从工作节点集群中确定故障的工作节点。
工作节点在未故障且与总控节点不存在网络分区时,能够接受到总控节点发送的心跳包,之后将感知的工作节点群的心跳状态记录值心跳响应中返回至总控节点。总控节点确定正常的工作节点的逻辑比较简单,即只要能接收到工作节点的心跳响应,即可判断该工作节点未故障,但在确定故障的工作节点时,首先需要满足没有接受到该工作节点的心跳响应这一条件,此外还需要根据接收到的工作节点集群返回的心跳响应以及从Zookeeper集群获取到的Znode临时节点的信息,才可以准确、高效地确定该工作节点是否真的故障。
本申请实施例的应用于工作节点侧的故障检测方法,通过在未故障且与Zookeeper集群不存在网络分区时,在Zookeeper集群中维护Znode临时节点;在未故障时,感知工作节点集群的心跳状态;在未故障且与总控节点不存在网络分区,接收总控节点发送的心跳包,向总控节点返回包括感知到的工作节点群的心跳状态的心跳响应,使得总控节点根据是否接收到工作节点的心跳响应、只有工作节点未故障且与Zookeeper集群不存在网络分区时才能维护Znode临时节点以及工作节点返回的心跳响应中包括感知到的工作节点集群的心跳状态,共三方面综合考虑工作节点是否出现故障,避免了存在网络分区时误触发HA。
在上述各实施例的基础上,作为一种可选实施例,工作节点感知工作节点集群的心跳状态,包括:
向工作节点集群中除任意一个工作节点以外的工作节点发送心跳包;
根据接收到的工作节点集群中除任意一个工作节点以外的工作节点返回的心跳响应,作为感知到的工作节点集群的心跳状态。
工作节点感知工作节点集群的心跳状态的具体实例可参考图9所示的实施例,在此不再赘述。
本申请实施例提供了一种分布式系统中的总控节点,分布式系统还包括工作节点集群以及Zookeeper集群,如图12所示,总控节点100可以包括:心跳包发送模块101、临时节点获取模块102和故障节点确定模块103,具体地:
心跳包发送模块101,用于向工作节点集群发送心跳包;
临时节点获取模块102,用于从Zookeeper集群获取工作节点集群维护的Znode临时节点的信息;
故障节点确定模块103,用于根据接收到的工作节点集群返回的心跳响应,以及从Zookeeper集群获取到的Znode临时节点的信息,从工作节点集群中确定故障的工作节点。
本申请实施例提供的总控节点,具体执行上述方法实施例流程,具体请详见上述故障检查方法实施例在总控节点侧的内容,在此不再赘述。本申请实施例提供的总控节点,通过向工作节点集群发送心跳包,并从Zookeeper集群获取工作节点集群维护的Znode临时节点的信息,根据接收到的工作节点集群返回的心跳响应,以及从Zookeeper集群获取到的Znode临时节点的信息,从工作节点集群中确定故障的工作节点,根据是否接收到工作节点的心跳响应、只有工作节点未故障且与Zookeeper集群不存在网络分区时才能维护Znode临时节点以及工作节点返回的心跳响应中包括感知到的工作节点集群的心跳状态,共三方面综合考虑工作节点是否出现故障,避免了存在网络分区时误触发HA。
在上述各实施例的基础上,作为一种可选实施例,故障节点确定模块具体用于:
若工作节点集群中的任意一个工作节点同时满足以下条件,则确定任意一个工作节点为故障的工作节点:
向任意一个工作节点连续发送预设次数的心跳包后均没有接收到任意一个工作节点返回的心跳响应;
在向任意一个工作节点发送预设次数的心跳包期间,从Zookeeper集群中未获取任意一个工作节点维护的Znode临时节点的信息;
根据接收到的心跳响应确定任意一个工作节点心跳异常。
在上述各实施例的基础上,作为一种可选实施例,故障节点确定模块根据接收到的心跳响应确定任意一个工作节点心跳异常,包括:
在向任意一个工作节点发送预设次数的心跳包期间,若感知到任意一个工作节点心跳异常的心跳响应,占接收到的所有心跳响应的比值大于预设阈值,则确定任意一个工作节点心跳异常。
在上述各实施例的基础上,作为一种可选实施例,临时节点获取模块具体用于:
若向任意一个工作节点连续发送预设次数的心跳包后均没有接收到任意一个工作节点返回的心跳响应,则从Zookeeper集群获取任意一个工作节点维护的Znode临时节点的信息。
在上述各实施例的基础上,作为一种可选实施例,工作节点用于提供存储服务;
总控节点还包括:
将故障的工作节点提供的存储服务迁移至工作节点集群中未故障的工作节点。
本申请实施例提供了一种分布式系统中的工作节点,分布式系统还包括总控节点以及Zookeeper集群,如图13所示,工作节点200可以包括:临时节点维护模块201、心跳感知模块202和心跳响应模块203,具体地:
临时节点维护模块201,用于在Zookeeper集群中维护Znode临时节点;
心跳感知模块202,用于感知工作节点集群的心跳状态;
心跳响应模块203,用于接收总控节点发送的心跳包,向总控节点返回包括感知到的工作节点群的心跳状态的心跳响应,以使得总控节点根据接收到的工作节点集群返回的心跳响应,以及从Zookeeper集群获取到的Znode临时节点的信息,从工作节点集群中确定故障的工作节点
本申请实施例的工作节点,具体执行上述方法实施例流程,具体请详见上述故障检查方法实施例在工作节点侧的内容,在此不再赘述。本申请实施例提供的工作节点通过在未故障且与Zookeeper集群不存在网络分区时,在Zookeeper集群中维护Znode临时节点;在未故障时,感知工作节点集群的心跳状态;在未故障且与总控节点不存在网络分区,接收总控节点发送的心跳包,向总控节点返回包括感知到的工作节点群的心跳状态的心跳响应,使得总控节点根据是否接收到工作节点的心跳响应、只有工作节点未故障且与Zookeeper集群不存在网络分区时才能维护Znode临时节点以及工作节点返回的心跳响应中包括感知到的工作节点集群的心跳状态,共三方面综合考虑工作节点是否出现故障,避免了存在网络分区时误触发HA。
在一个可能的实现方式中,心跳感知模块包括:
心跳包发送单元,用于向工作节点集群中除任意一个工作节点以外的工作节点发送心跳包;
心跳状态确定单元,用于根据接收到的工作节点集群中除任意一个工作节点以外的工作节点返回的心跳响应,作为感知到的工作节点集群的心跳状态。
请参阅图14,其示例性地示出了本申请实施例提供了一种分布式系统的结构示意图,如图所示,分布式系统包括:总控节点100、由多个工作节点200构成的工作节点集群和Zookeeper集群300。
请参阅图15,其示例性地示出了本申请实施例中总控节点、工作节点和Zookeeper集群的三方交互示意图,如图所示:
Agent向Zookeeper集群注册Znode临时节点;
Zookeeper集群向Agent返回注册成功的信息;
在情况1中,Master从Zookeeper集群获取Znode临时节点的信息,若可以获取到Znode临时节点的信息,则说明维护该Znode临时节点的状态正常;
在情况2中,Master从Zookeeper集群获取Znode临时节点的信息,若Agent状态异常或Master、Agent任意一方或者两方与Zookeeper Server存在网络分区时,Master无法获取到Znode信息。
本申请实施例中提供了一种电子设备,该电子设备包括:存储器和处理器;至少一个程序,存储于存储器中,用于被处理器执行时,与现有技术相比,通过向工作节点集群发送心跳包,并从Zookeeper集群获取工作节点集群维护的Znode临时节点的信息,根据接收到的工作节点集群返回的心跳响应,以及从Zookeeper集群获取到的Znode临时节点的信息,从工作节点集群中确定故障的工作节点,根据是否接收到工作节点的心跳响应、只有工作节点未故障且与Zookeeper集群不存在网络分区时才能维护Znode临时节点以及工作节点返回的心跳响应中包括感知到的工作节点集群的心跳状态,共三方面综合考虑工作节点是否出现故障,避免了存在网络分区时误触发HA。
在一个可选实施例中提供了一种电子设备,如图16所示,图16所示的电子设备4000包括:处理器4001和存储器4003。其中,处理器4001和存储器4003相连,如通过总线4002相连。可选地,电子设备4000还可以包括收发器4004。需要说明的是,实际应用中收发器4004不限于一个,该电子设备4000的结构并不构成对本申请实施例的限定。
处理器4001可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programasterable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器4001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线4002可包括一通路,在上述组件之间传送信息。总线4002可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线4002可以分为地址总线、数据总线、控制总线等。为便于表示,图16中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器4003可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgramasterable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscReadOnly Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
存储器4003用于存储执行本申请方案的应用程序代码,并由处理器4001来控制执行。处理器4001用于执行存储器4003中存储的应用程序代码,以实现前述方法实施例所示的内容。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,当其在计算机上运行时,使得计算机可以执行前述方法实施例中相应内容。与现有技术相比,通过向工作节点集群发送心跳包,并从Zookeeper集群获取工作节点集群维护的Znode临时节点的信息,根据接收到的工作节点集群返回的心跳响应,以及从Zookeeper集群获取到的Znode临时节点的信息,从工作节点集群中确定故障的工作节点,根据是否接收到工作节点的心跳响应、只有工作节点未故障且与Zookeeper集群不存在网络分区时才能维护Znode临时节点以及工作节点返回的心跳响应中包括感知到的工作节点集群的心跳状态,共三方面综合考虑工作节点是否出现故障,避免了存在网络分区时误触发HA。
本申请实施例提供了一种计算机程序,该计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中,当计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行如前述方法实施例所示的内容。与现有技术相比,通过向工作节点集群发送心跳包,并从Zookeeper集群获取工作节点集群维护的Znode临时节点的信息,根据接收到的工作节点集群返回的心跳响应,以及从Zookeeper集群获取到的Znode临时节点的信息,从工作节点集群中确定故障的工作节点,根据是否接收到工作节点的心跳响应、只有工作节点未故障且与Zookeeper集群不存在网络分区时才能维护Znode临时节点以及工作节点返回的心跳响应中包括感知到的工作节点集群的心跳状态,共三方面综合考虑工作节点是否出现故障,避免了存在网络分区时误触发HA。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (11)

1.一种故障检测方法,其特征在于,应用于分布式系统中的总控节点,所述分布式系统还包括Zookeeper集群和工作节点集群,所述故障检测方法包括:
向所述工作节点集群中的各工作节点发送心跳包;
从所述Zookeeper集群获取所述工作节点集群维护的Znode临时节点的信息,所述Znode临时节点的生命周期在相应的工作节点与所述Zookeeper集群分区时结束;
根据接收到的所述工作节点集群返回的心跳响应,以及从所述Zookeeper集群获取到的Znode临时节点的信息,从所述工作节点集群中确定故障的工作节点;
其中,所述工作节点集群中的任意一个工作节点返回的心跳响应中包括所述任意一个工作节点感知到的所述工作节点集群的心跳状态。
2.根据权利要求1所述的故障检测方法,其特征在于,所述根据接收到的所述工作节点集群返回的心跳响应,以及从所述Zookeeper集群获取到的Znode临时节点的信息,从所述工作节点集群中确定故障的工作节点,包括:
若所述工作节点集群中的任意一个工作节点同时满足以下条件,则确定所述任意一个工作节点为故障的工作节点:
向所述任意一个工作节点连续发送预设次数的心跳包后均没有接收到所述任意一个工作节点返回的心跳响应;
在向所述任意一个工作节点发送预设次数的心跳包期间,从所述Zookeeper集群中未获取所述任意一个工作节点维护的Znode临时节点的信息;
根据接收到的心跳响应确定所述任意一个工作节点心跳异常。
3.根据权利要求2所述的故障检测方法,其特征在于,所述根据接收到的心跳响应确定所述任意一个工作节点心跳异常,包括:
在向所述任意一个工作节点发送预设次数的心跳包期间,若感知到所述任意一个工作节点心跳异常的心跳响应,占接收到的所有心跳响应的比值大于预设阈值,则确定所述任意一个工作节点心跳异常。
4.根据权利要求1所述的故障检测方法,其特征在于,所述从所述Zookeeper集群获取所述工作节点集群维护的Znode临时节点的信息,包括:
若向所述任意一个工作节点连续发送预设次数的心跳包后均没有接收到所述任意一个工作节点返回的心跳响应,则从所述Zookeeper集群获取所述任意一个工作节点维护的Znode临时节点的信息。
5.根据权利要求1所述的故障检测方法,其特征在于,所述工作节点用于提供存储服务;
所述从所述工作节点集群中确定故障的工作节点,之后还包括:
将所述故障的工作节点提供的存储服务迁移至所述工作节点集群中未故障的工作节点。
6.一种协同故障检测方法,其特征在于,应用于分布式系统中的工作节点集群中的任意一个工作节点,所述分布式系统还包括总控节点和Zookeeper集群,所述工作节点未故障且未与所述总控节点和Zookeeper集群存在网络分区,所述协同故障检测方法包括:
在所述Zookeeper集群中维护Znode临时节点,Znode临时节点的生命周期在相应的工作节点与所述Zookeeper集群分区时结束;
感知所述工作节点集群的心跳状态;
接收所述总控节点发送的心跳包,向所述总控节点返回包括感知到的所述工作节点集群的心跳状态的心跳响应,以使得所述总控节点根据接收到的所述工作节点集群返回的心跳响应,以及从所述Zookeeper集群获取到的Znode临时节点的信息,从所述工作节点集群中确定故障的工作节点;
其中,所述感知所述工作节点集群的心跳状态,包括:
向所述工作节点集群中除所述任意一个工作节点以外的工作节点发送心跳包;
根据接收到的所述工作节点集群中除所述任意一个工作节点以外的工作节点返回的心跳响应,作为感知到的所述工作节点集群的心跳状态。
7.一种分布式系统中的总控节点,其特征在于,所述分布式系统还包括工作节点集群以及Zookeeper集群,所述总控节点包括:
心跳包发送模块,用于向所述工作节点集群中的各工作节点发送心跳包;
临时节点获取模块,从所述Zookeeper集群获取所述工作节点集群维护的Znode临时节点的信息,所述Znode临时节点的生命周期在相应的工作节点与所述Zookeeper集群分区时结束;
故障节点确定模块,用于根据接收到的所述工作节点集群返回的心跳响应,以及从所述Zookeeper集群获取到的Znode临时节点的信息,从所述工作节点集群中确定故障的工作节点;
其中,所述工作节点集群中的任意一个工作节点返回的心跳响应中包括所述任意一个工作节点感知到的所述工作节点集群的心跳状态。
8.一种分布式系统中工作节点集群的工作节点,其特征在于,所述分布式系统还包括总控节点和Zookeeper集群,所述工作节点未故障且未与所述总控节点和Zookeeper集群存在网络分区,所述工作节点包括:
临时节点维护模块,用于在所述Zookeeper集群中维护Znode临时节点,所述Znode临时节点的生命周期在相应的工作节点与所述Zookeeper集群分区时结束;
心跳感知模块,用于感知所述工作节点集群的心跳状态;
心跳响应模块,用于接收所述总控节点发送的心跳包,向所述总控节点返回包括感知到的所述工作节点集群的心跳状态的心跳响应,以使得所述总控节点根据接收到的所述工作节点集群返回的心跳响应,以及从所述Zookeeper集群获取到的Znode临时节点的信息,从所述工作节点集群中确定故障的工作节点;
其中,所述心跳感知模块具体用于:向所述工作节点集群中除所述工作节点以外的工作节点发送心跳包;
根据接收到的所述工作节点集群中除所述工作节点以外的工作节点返回的心跳响应,作为感知到的所述工作节点集群的心跳状态。
9.一种分布式系统,其特征在于,包括:Zookeeper集群、如权利要求7所述的总控节点以及如权利要求8所述的工作节点构成的工作节点集群。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至5任一项所述的故障检测方法或者如权利要求6所述的协同故障检测方法的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至5任一项所述的故障检测方法或者如权利要求6所述的协同故障检测方法的步骤。
CN202110081966.2A 2021-01-21 2021-01-21 故障检测方法、总控节点、工作节点及分布式系统 Active CN113010337B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110081966.2A CN113010337B (zh) 2021-01-21 2021-01-21 故障检测方法、总控节点、工作节点及分布式系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110081966.2A CN113010337B (zh) 2021-01-21 2021-01-21 故障检测方法、总控节点、工作节点及分布式系统

Publications (2)

Publication Number Publication Date
CN113010337A CN113010337A (zh) 2021-06-22
CN113010337B true CN113010337B (zh) 2023-05-16

Family

ID=76384596

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110081966.2A Active CN113010337B (zh) 2021-01-21 2021-01-21 故障检测方法、总控节点、工作节点及分布式系统

Country Status (1)

Country Link
CN (1) CN113010337B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106059843A (zh) * 2016-08-16 2016-10-26 深圳市华成峰数据技术有限公司 一种基于Zookeeper 的节点配置系统及方法
CN111858097A (zh) * 2020-07-22 2020-10-30 安徽华典大数据科技有限公司 分布式数据库系统、数据库访问方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10089307B2 (en) * 2014-12-31 2018-10-02 International Business Machines Corporation Scalable distributed data store
CN110430064B (zh) * 2017-03-30 2020-12-04 腾讯科技(深圳)有限公司 区块链系统、消息处理方法及存储介质
CN108092857A (zh) * 2018-01-15 2018-05-29 郑州云海信息技术有限公司 一种分布式系统心跳检测方法及相关装置
CN109327509B (zh) * 2018-09-11 2022-01-18 武汉魅瞳科技有限公司 一种主/从架构的低耦合的分布式流式计算系统
CN109669820A (zh) * 2018-12-24 2019-04-23 广州君海网络科技有限公司 基于Kettle的任务监管方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106059843A (zh) * 2016-08-16 2016-10-26 深圳市华成峰数据技术有限公司 一种基于Zookeeper 的节点配置系统及方法
CN111858097A (zh) * 2020-07-22 2020-10-30 安徽华典大数据科技有限公司 分布式数据库系统、数据库访问方法

Also Published As

Publication number Publication date
CN113010337A (zh) 2021-06-22

Similar Documents

Publication Publication Date Title
CN107193490B (zh) 一种基于区块链的分布式数据存储系统及方法
CN111400112B (zh) 分布式集群的存储系统的写入方法、装置及可读存储介质
US11263612B2 (en) Systems and methods for point of sale data synchronization
US7788522B1 (en) Autonomous cluster organization, collision detection, and resolutions
US8990176B2 (en) Managing a search index
US10193951B2 (en) Binding CRUD-type protocols in distributed agreement protocols
US8266474B2 (en) Fast cluster failure detection
CN112422341B (zh) 区块链网络的故障检测方法及相关设备
CN111698315B (zh) 针对区块的数据处理方法、数据处理装置及计算机设备
CN112612856B (zh) 基于区块链的数据处理方法和装置
Biswas et al. A novel leader election algorithm based on resources for ring networks
CN104579765A (zh) 一种集群系统的容灾方法和装置
CN110708177B (zh) 分布式系统中的异常处理方法、系统和装置
CN110502581A (zh) 分布式数据库系统监测方法及装置
CN112200680B (zh) 区块链节点管理方法、装置、计算机以及可读存储介质
Ramachandran et al. Trinity: a distributed publish/subscribe broker with blockchain-based immutability
CN113010337B (zh) 故障检测方法、总控节点、工作节点及分布式系统
US20190387054A1 (en) Method, electronic device and computer program product for searching for node
CN111314427A (zh) 一种区块链全部节点信息的获取方法、设备和存储介质
US11290318B2 (en) Disaster recovery of cloud resources
CN115987858A (zh) 区块链网络的压力测试方法及相关设备
CN115604160A (zh) 网络检测处理方法及装置、电子设备、存储介质
Doglio et al. Scaling Your Node. js Apps
Bogdanov et al. A multilayer approach to the security of blockchain networks of the future
JP5711772B2 (ja) クラスタシステム

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40047274

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: CORR

Ref document number: 40047274

Country of ref document: HK

Free format text: CORRECTED DATA OF SECTION 27, 01.09.2023: (73) TENCENT TECHNOLOGY (SHENZHEN) COMPANY LIMITED, CN