一种实现心跳机制的方法、装置及系统与流程

文档序号:12828940阅读:199来源:国知局
一种实现心跳机制的方法、装置及系统与流程
本发明涉及计算机
技术领域
,尤其涉及一种实现心跳机制的方法、装置及系统。
背景技术
:心跳机制,是指发送端定时发送一个自定义的心跳请求(例如,心跳包或心跳帧),接收端接收到该结构体后向发送端回复心跳响应,让发送端知道接收端“在线”,以确认接收端当前可以正常工作。在分布式数据库系统中,为了提高系统的可靠性,会为数据分片保存多个副本,同一数据分片的多个副本可以分别存储在不同的节点上,存储这多个副本的一组节点可组成一个数据同步单元,为了保证这多个副本之间的数据一致性,数据同步单元内的各节点可使用同步协议(例如,raft协议)进行数据同步,在数据同步的过程中,同步协议要求数据同步单元内的各节点之间通过交换机或路由器发送心跳请求和心跳响应,来确认各节点是否可以正常工作,从而探测各节点内存储的副本是否可用。然而,随着分布式数据库系统的规模日益庞大,一个数据同步单元内节点的数量增多,因此,各节点之间发送心跳请求和心跳响应的数量显著增加,导致整个分布式数据库系统的负载增加。技术实现要素:本发明的实施例提供一种实现心跳机制的方法、装置及系统,可降低节点发送心跳响应的数量,从而减少分布式数据库系统中不必要的资源占用开销。为达到上述目的,本发明的实施例采用如下技术方案:第一方面,本发明的实施例提供一种实现心跳机制的方法,应用于分布式数据库系统,包括:交换节点获取第一节点向第二节点发送的心跳请 求,该心跳请求包括该第一节点的标识和该第二节点的标识,该第一节点和该第二节点为与该交换节点相连的不同节点;该交换节点记录接收该心跳请求的第一时刻;该交换节点根据该第二节点的标识,在缓存信息中查询该交换节点最近一次接收到该第二节点发送消息的第二时刻,该缓存信息中存储有该交换节点接收到的任一节点发送消息的时刻与该节点的标识之间的对应关系;若该第一时刻与该第二时刻之间差值的绝对值小于阈值,则该交换节点向该第一节点发送心跳响应。可以理解的是,由于交换节点可以实时记录n个节点中每个节点发送的消息经过交换节点的时间,这样,当第一节点向第二节点发送的心跳请求经过交换节点时,交换节点可以通过查询到最近一次接收到第二节点发送消息的时刻,进而确定出该第二节点可用,从而代替第二节点向第一节点发送心跳响应,那么,可以有效减少n个节点中每个节点接收心跳请求和发送心跳响应的次数,从而避免接收大量的心跳请求和发送大量的心跳响应占用资源。同时,当交换节点确定第二节点可用后,可直接代替第二节点向第一节点发送心跳响应,即基于本方案的心跳机制,一个完整的心跳请求和心跳响应所经历的心跳路径为:第一节点-交换节点-第一节点。而基于现有的心跳机制,一个完整的心跳请求和心跳响应所经历的心跳路径为:第一节点-交换节点-第二节点-交换节点-第一节点。可以看出,本发明实施例提供的实现心跳机制的方法,还可以大大降低心跳路径,减少心跳响应的延迟,从而缩短整个分布式数据库系统的故障检测时间,提高分布式数据库系统的可靠性。在一个可能的设计中,在该交换节点记录接收该心跳请求的第一时刻之后,还包括:该交换节点将该第一节点的标识与该第一时刻的对应关系存储至该缓存信息中。在一个可能的设计中,该交换节点获取第一节点向第二节点发送的心跳请求,包括:该交换节点接收该第一节点向该第二节点发送的消息,该消息携带有该第一节点的标识;该交换节点对该消息进行解析,确定该消息为该第一节点向该第二节点发送的心跳请求。在一个可能的设计中,在该交换节点接收该第一节点向该第二节点发 送的消息之后,还包括:若该消息不是该第一节点向该第二节点发送的心跳请求,则该交换节点记录接收该消息的第三时刻;该交换节点将该第一节点的标识与该第三时刻的对应关系存储至该缓存信息中。在一个可能的设计中,在该交换节点根据该第二节点的标识,在缓存信息中查询该交换节点最近一次接收到该第二节点发送消息的第二时刻之后,还包括:若该第一时刻与该第二时刻之间差值的绝对值大于阈值,则该交换节点将该心跳请求转发至该第二节点。第二方面,本发明的实施例提供一种交换节点,应用于分布式数据库系统,该交换节点与第一节点和第二节点相连,该交换节点包括:获取单元,用于获取该第一节点向该第二节点发送的心跳请求,该心跳请求包括该第一节点的标识和该第二节点的标识;记录单元,用于记录接收该心跳请求的第一时刻;查询单元,用于根据该第二节点的标识,在缓存信息中查询该交换节点最近一次接收到该第二节点发送消息的第二时刻,该缓存信息中存储有该交换节点接收到的任一节点发送消息的时刻与该节点的标识之间的对应关系;发送单元,用于若该第一时刻与该第二时刻之间差值的绝对值小于阈值,则向该第一节点发送心跳响应。在一个可能的设计中,该交换节点还包括:存储单元,用于将该第一节点的标识与该第一时刻的对应关系存储至该缓存信息中。在一个可能的设计中,该交换节点还包括解析单元,其中,该获取单元,还用于接收该第一节点向该第二节点发送的消息,该消息携带有该第一节点的标识;该解析单元,用于对该消息进行解析,确定该消息为该第一节点向该第二节点发送的心跳请求。在一个可能的设计中,该记录单元,还用于若该消息不是该第一节点向该第二节点发送的心跳请求,则记录接收该消息的第三时刻;该存储单元,还用于将该第一节点的标识与该第三时刻的对应关系存储至该缓存信息中。在一个可能的设计中,该发送单元,还用于若该第一时刻与该第二时刻之间差值的绝对值大于阈值,则将该心跳请求转发至该第二节点。第三方面,本发明的实施例提供一种交换节点,包括:处理器、存储器、总线和通信接口;该存储器用于存储计算机执行指令,该处理器与该 存储器通过该总线连接,当该交换节点运行时,该处理器执行该存储器存储的该计算机执行指令,以使该交换节点执行如第一方面中任意一项该的实现心跳机制的方法。第四方面,本发明的实施例提供一种实现心跳机制的系统,包括第二方面或第三方面中任一项该的交换节点,以及与该交换节点均相连的第一节点和第二节点。第五方面,本发明实施例提供了一种计算机存储介质,用于储存为上述交换节点所用的计算机软件指令,其包含用于执行上述方面为交换节点所设计的程序。本发明中,交换节点、第一节点以及第二节点的名字对设备或功能模块本身不构成限定,在实际实现中,这些设备或功能模块可以以其他名称出现。只要各个设备或功能模块的功能和本发明类似,属于本发明权利要求及其等同技术的范围之内。相较于现有技术,由于交换节点可以实时记录各个节点中每个节点发送的消息经过该交换节点的时间,这样,当第一节点向第二节点发送的心跳请求经过交换节点时,交换节点可以通过查询到最近一次接收到第二节点发送消息的时刻,进而确定出该第二节点可用,从而代替第二节点向第一节点发送心跳响应,那么,可以有效减少各个节点接收心跳请求和发送心跳响应的次数,从而避免接收大量的心跳请求和发送大量的心跳响应占用资源。本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。图1为本发明实施例提供的分布式数据库系统的架构图;图2为本发明实施例提供的一种实现心跳机制的方法的流程示意图一;图3为本发明实施例提供的一种实现心跳机制的方法的流程示意图 二;图4为本发明实施例提供的一种交换节点的结构示意图一;图5为本发明实施例提供的一种交换节点的结构示意图二;图6为本发明实施例提供的一种交换节点的结构示意三;图7为本发明实施例提供的一种交换节点的硬件结构示意图;图8为本发明实施例提供的一种实现心跳机制的系统的示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。另外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。本发明实施例提供的实现心跳机制的方法,其核心原理在于:将拓扑结构中均连接至一个交换节点(例如,交换机或路由器)的n个节点作为一个节点组,由于这n个节点发送的消息(例如,心跳请求、心跳响应以及业务消息等)都要经过该交换节点,即,该交换节点位于n个节点内每两个节点之间进行通讯的路径上,因此,交换节点可以实时记录n个节点中每个节点发送的消息经过交换节点的时间,这样,当第一节点向第二节点发送的心跳请求经过交换节点时,交换节点可以通过查询到最近一次接收到第二节点发送消息的时刻,从而确定出该第二节点是否“活着”,若第二节点是否“活着”,则直接向第一节点返回心跳响应,无需将该心跳请求转发至第二节点,再由第二节点通过交换节点回复心跳响应。具体的,本发明实施例提供的实现心跳机制的方法,可应用于如图1所示的分布式数据库系统,其中,可将拓扑结构中均连接至一个交换节点的n个节点作为一个节点组,节点组内的n个节点发送的消息都要经过该节点组内的交换节点,该分布式数据库系统中可以包括多个节点组,每 个节点组中的交换节点与局域网(localareanetwork,lan)或广域网(wideareanetwork,wan)相连。需要说明的是,节点组内的n个节点可以为具有存储功能的实体设备,例如计算机等,也可以为具有存储功能的功能模块,例如磁盘等,本发明实施例对此不做限定。可以理解的是,由于交换节点可以实时记录n个节点中每个节点发送的消息经过交换节点的时间,这样,当第一节点向第二节点发送的心跳请求经过交换节点时,交换节点可以通过查询到最近一次接收到第二节点发送消息的时刻,进而确定出该第二节点可用,从而代替第二节点向第一节点发送心跳响应,那么,可以有效减少n个节点中每个节点接收心跳请求和发送心跳响应的次数,从而避免接收大量的心跳请求和发送大量的心跳响应占用资源。同时,当交换节点确定第二节点可用后,可直接代替第二节点向第一节点发送心跳响应,即基于本方案的心跳机制,一个完整的心跳请求和心跳响应所经历的心跳路径为:第一节点-交换节点-第一节点。而基于现有的心跳机制,一个完整的心跳请求和心跳响应所经历的心跳路径为:第一节点-交换节点-第二节点-交换节点-第一节点。可以看出,本发明实施例提供的实现心跳机制的方法,还可以大大降低心跳路径,减少心跳响应的延迟,从而缩短整个分布式数据库系统的故障检测时间,提高分布式数据库系统的可靠性。以下,如图2所示,详细阐述本发明实施例提供的实现心跳机制的方法,该方法包括:101、交换节点接收第一节点向第二节点发送的消息,该消息携带有第一节点的标识。其中,第一节点和第二节点为图1中一个节点组内与交换节点相连的两个不同节点。由于第一节点向第二节点发送消息时都需要经过交换节点,因此,交换节点可以接收到第一节点向第二节点发送的消息,其中,该消息携带有第一节点的标识。需要说明的是,这里所说的消息可以是任何消息,例如,心跳请求、 心跳响应以及业务消息等。102、交换节点对该消息进行解析,判断该消息是否为第一节点向第二节点发送的心跳请求。在步骤102中,交换节点对步骤101中接收到的消息进行解析,判断该消息是否为第一节点向第二节点发送的心跳请求。具体的,该消息中可携带有消息类型的标识,该消息类型具体可以为心跳请求、心跳响应或业务消息等类型,例如,可以预留该消息中的一个或多个字段用于指示该消息类型的标识,那么,在步骤102中,交换节点对步骤101中接收到的消息进行解析,获取该消息中携带的消息类型的标识,进而,根据该消息类型的标识判断该消息是否为第一节点向第二节点发送的心跳请求。示例性的,该消息可以以报文的形式进行发送和接收,交换节点通过解析报文的报头中的前两个比特位,获取该消息中携带的消息类型的标识,从而根据该消息类型的标识判断该消息是否为第一节点向第二节点发送的心跳请求,例如,当该消息类型的标识为00时,可判断出该消息为心跳请求,当第一帧内为10时,可判断出该消息为业务消息,需要说明的是,上述解析消息的方法仅作为举例说明,本发明实施例对交换节点解析消息的形式不作任何限定。进一步地,若该消息为第一节点向第二节点发送的心跳请求,则交换节点执行下述步骤103a-106a,查询最近一次接收到第二节点发送消息的时刻,从而确定出该第二节点是否“活着”;若该消息不是第一节点向第二节点发送的心跳请求,则交换节点执行下述步骤103b-104b,实时记录接收到的任一节点发送消息的时刻与该节点的标识之间的对应关系。103a、若该消息为第一节点向第二节点发送的心跳请求,则交换节点记录接收该心跳请求的第一时刻,该心跳请求包括第一节点的标识和第二节点的标识。具体的,步骤103a中,若该消息为第一节点向第二节点发送的心跳请求,则该心跳请求中除了包含第一节点的标识外,还包含第二节点的标识,用于指示第一节点向第二节点发送心跳请求。此时,交换节点记录接收该心跳请求的时间为第一时刻,该第一时刻 可以认为是第一节点发送该心跳请求的时间。当然,由于第一节点发送该心跳请求与交换节点记录接收该心跳请求之间存在时间差,因此,还可以在该心跳请求中携带第一节点发送该心跳请求的时间,这样,交换节点便可以将该携带的第一节点发送该心跳请求的时间作为第一时刻。104a、交换节点根据第二节点的标识,在缓存信息中查询交换节点最近一次接收到第二节点发送消息的第二时刻。其中,该缓存信息中存储有交换节点接收到的任一节点发送消息的时刻与该节点的标识之间的对应关系。如表1所示,为该缓存信息中交换节点接收到的任一节点发送消息的时刻与该节点的标识之间的对应关系,具体的,交换节点接收到任一节点发送的消息时,如步骤101所述,由于该消息中均携带有发送该消息的节点的标识,因此,交换节点便可以将接收到的任一节点发送消息的时刻与该节点的标识之间的对应关系记录到自身的存储器中,这样,在步骤104a中,当第一节点向第二节点发送的心跳请求时,交换节点便可以在缓存信息中,查询交换节点最近一次接收到第二节点发送消息的时刻,即第二时刻。表1节点的标识时间219:0:10116:30:12当然,交换节点也可以对上表所述的缓存信息进行更新和维护,例如,定时删除距离当前时间1天以上的节点发送消息的时刻与该节点的标识之间的对应关系。又或者,交换节点可以只记录距离当前时间最近的各节点发送消息的时刻与该节点的标识之间的对应关系,例如,当交换节点在19:0:59时接收到节点的标识为2的节点发送的业务消息时,可以更新上述表1中第一行节点的标识为2所对应的时间,使缓存信息中仅记录距离当前时间最近的各节点发送消息的时刻与该节点的标识之间的对应关系。这样,缓存信息内只需记录一个节点组内n个节点中每一个节点的标 识与该节点发送消息的最后时间之间的对应关系,可降低缓存信息的存储容量。另外,在步骤104a之后,还可以将第一节点的标识与上述第一时刻的对应关系存储至所述缓存信息中,说明第一节点在第一时刻时为可用状态,以便于后续交换节点接收到向第一节点发送的心跳请求时,可及时从缓存信息中获取最近一次接收到第一节点发送消息的第一时刻。105a、若第一时刻与第二时刻之间差值的绝对值小于阈值,则交换节点向第一节点发送心跳响应。在步骤105a中,若步骤103a得到的第一时刻与步骤104a得到的第二时刻之间差值的绝对值小于阈值,即|第一时刻-第二时刻|<阈值,说明第二节点在不久之前为可用状态,即“活着”状态,则交换节点此时向第一节点发送心跳响应,以使得第一节点确定第二节点此时为可用状态。需要说明的是,本领域技术人员可以根据实际经验设置该阈值的具体取值,本发明实施例对此不作任何限制。106a、若第一时刻与第二时刻之间差值的绝对值大于阈值,则交换节点将心跳请求转发至第二节点。与步骤105a相反的,若步骤103a得到的第一时刻与步骤104a得到的第二时刻之间差值的绝对值大于阈值,即|第一时刻-第二时刻|>阈值,说明第二节点已经在较长的时间段内没有与其他节点发送过消息,此时,交换节点无法确定第二节点当前是否可用,因此,交换节点将心跳请求转发至第二节点,第二节点收到该心跳请求后,若自身的状态为可用状态,即第二节点运行正常,则通过该交换节点向第一节点反馈心跳响应;若此时第二节点出现故障则无法向第一节点反馈心跳响应,而第一节点若在一定时间内未收到第二节点发送的心跳响应,或者,第一节点连续发送多次心跳请求后均未收到第二节点发送的心跳响应,第一节点则确定该第二节点出现故障。103b、若该消息不是第一节点向第二节点发送的心跳请求,则交换节点记录接收该消息的第三时刻。具体的,若步骤102中判断出步骤101中接收的消息不是第一节点向第二节点发送的心跳请求,例如,该消息为心跳响应或者业务消息,此时, 交换节点记录接收该消息的时间,即第三时刻。104b、交换节点将第一节点的标识与第三时刻的对应关系存储至缓存信息中。在步骤104b中,交换节点将第一节点的标识与上述第三时刻的对应关系存储至缓存信息中,以便于后续交换节点接收到向第一节点发送的心跳请求时,可及时从缓存信息中获取最近一次接收到第一节点发送消息的第三时刻。示例性的,如图3所示,此处以图1中的节点组1为例,阐述上述步骤101-106a以及101-104b所述的一种实现心跳机制的方法。参见图3,在节点组1内,交换节点可以具体为交换机后路由器,节点组1内的n个节点发送消息的路径都要经过该交换节点。其中,交换节点内的缓存单元中存储有缓存信息,如表1所示,该缓存信息中记录有该交换节点接收到的任一节点(即节点1至节点n中的任一节点),发送消息的时刻与该节点的标识之间的对应关系。具体的,节点1可以向交换节点发送消息,该消息内携带有节点1的标识,例如,节点1的标识为1,此处,该消息可以为任意消息类型的消息,例如,心跳请求或业务消息等,交换节点接收到该消息后,对该消息进行解析,判断出该消息是否为节点1发送的心跳请求。若该消息为节点1发送的心跳请求,则交换节点记录接收该心跳请求的第一时刻t1,该心跳请求包括节点1的标识和节点1的发送对象的标识,例如节点n的标识,进而,交换节点根据节点n的标识,在缓存单元的缓存信息中,查询交换节点最近一次接收到节点n发送消息的第二时刻t2,此时,若|t1-t2|<阈值,说明节点n在不久之前为可用状态,即“活着”状态,则交换节点向节点1发送心跳响应,相应的,若|t1-t2|>阈值,则交换节点将心跳请求转发至节点n。相应的,若该消息不是节点1发送的心跳请求,例如,该消息为节点1发送的业务消息,则交换节点记录接收该消息的第三时刻t3,并将节点1的标识与第三时刻t3的对应关系存储至该缓存信息中,以便于后续交换节点接收到向节点1发送的心跳请求时,可及时从缓存信息中获取最近一次接收到节点1发送消息的时刻。至此,本发明的实施例提供一种实现心跳机制的方法,交换节点获取第一节点向第二节点发送的心跳请求,该心跳请求包括第一节点的标识和第二节点的标识;进而,交换节点记录接收心跳请求的第一时刻;并且,根据第二节点的标识,在缓存信息中查询交换节点最近一次接收到第二节点发送消息的第二时刻,该缓存信息中存储有交换节点接收到的任一节点发送消息的时刻与该节点的标识之间的对应关系;若第一时刻与第二时刻之间差值的绝对值小于阈值,则交换节点向第一节点发送心跳响应。可以看出,由于换节点可以实时记录每个节点发送的消息经过交换节点的时间,这样,当第一节点向第二节点发送的心跳请求经过交换节点时,交换节点可以通过查询到最近一次接收到第二节点发送消息的时刻,进而确定出该第二节点可用,从而代替第二节点向第一节点发送心跳响应,因此,可以有效减少各个节点接收心跳请求和发送心跳响应的次数,从而避免接收大量的心跳请求和发送大量的心跳响应占用资源。图4为本发明实施例提供的一种交换节点的结构示意图,本发明实施例提供的交换节点可以用于实施上述图1-图3所示的本发明各实施例实现的方法,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照图1-图3所示的本发明各实施例。其中,该交换节点可以具体为具有可编程能力的交换机或路由器等,本发明对此不作任何限制,可满足运算能力需求的所有硬件产品都适用。具体的,该交换节点包括:获取单元11,用于获取所述第一节点向所述第二节点发送的心跳请求,所述心跳请求包括所述第一节点的标识和所述第二节点的标识;记录单元12,用于记录接收所述心跳请求的第一时刻;查询单元13,用于根据所述第二节点的标识,在缓存信息中查询所述交换节点最近一次接收到所述第二节点发送消息的第二时刻,所述缓存信息中存储有所述交换节点接收到的任一节点发送消息的时刻与该节点的标识之间的对应关系;发送单元14,用于若所述第一时刻与所述第二时刻之间差值的绝对值小于阈值,则向所述第一节点发送心跳响应。进一步地,如图5所示,该交换节点还包括:存储单元15,用于将所述第一节点的标识与所述第一时刻的对应关系存储至所述缓存信息中。进一步地,如图6所示,该交换节点还包括解析单元16,其中,所述获取单元11,还用于接收所述第一节点向所述第二节点发送的消息,所述消息携带有所述第一节点的标识;所述解析单元16,用于对所述消息进行解析,确定所述消息为所述第一节点向所述第二节点发送的心跳请求。进一步地,所述记录单元12,还用于若所述消息不是所述第一节点向所述第二节点发送的心跳请求,则记录接收所述消息的第三时刻;所述存储单元15,还用于将所述第一节点的标识与所述第三时刻的对应关系存储至所述缓存信息中。进一步地,所述发送单元14,还用于若所述第一时刻与所述第二时刻之间差值的绝对值大于阈值,则将所述心跳请求转发至所述第二节点。另外,图7为本发明实施例提供的一种交换节点的硬件结构示意图,其中,如图7所示,该交换节点包括处理器21、通信接口22以及存储器23,并且,该处理器21、收发器22以及存储器23通过总线24进行通信。所述存储器23用于存储计算机执行指令,所述处理器21与所述存储器23通过所述总线24连接,当该交换节点运行时,所述处理器21执行所述存储器23存储的计算机执行指令,以使该交换节点执行如图2所述的实现心跳机制的方法。具体的实现心跳机制的方法可参见上述如图2或图3所示的实施例中的相关描述,此处不再赘述。其中,处理器21,可以为中央处理器(英文:centralprocessingunit,缩写:cpu)。所述处理器21还可以为其他通用处理器、数字信号处理器(英文:digitalsignalprocessing,简称dsp)、专用集成电路(英文:applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(英文:field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。处理器21是所述交换节点的控制中心,处理器21通过对收发器22接收到的数据进行处理,并调用存储器23中的软件或程序,执行所述交 换节点的各项功能。通信接口22,可具体为接口电路,用于收发信息或请求的过程中,信号的接收和发送,通信接口22接收终端发送的信息后,给处理器21处理;另外,通信接口22可以通过无线通信与网络和其他设备通信。存储器23,可以包括易失性存储器(英文:volatilememory),例如随机存取存储器(英文:random-accessmemory,缩写:ram);所述存储器31也可以包括非易失性存储器(英文:non-volatilememory),例如只读存储器(英文:read-onlymemory,缩写:rom),快闪存储器(英文:flashmemory),硬盘(英文:harddiskdrive,缩写:hdd)或固态硬盘(英文:solid-statedrive,缩写:ssd);所述存储器31还可以包括上述种类的存储器的组合。处理器21可通过运行存储在存储器23的软件程序,从而执行所述交换节点的各种功能应用以及数据处理。具体的,在本发明的实施例中,存储器23可用于存储缓存信息,该缓存信息中存储有交换节点接收到的任一节点发送消息的时刻与该节点的标识之间的对应关系。而总线24可以包括数据总线、电源总线、控制总线和信号状态总线等。本实施例中为了清楚说明,在图7中将各种总线都示意为总线24。另外,如图8所示,本发明的实施例还提供一种实现心跳机制的系统,包括上述任一种交换节点31,以及与该交换节31点均相连的第一节点32和第二节点33,其中,交换节点与第一节点32和第二节点33进行交互的过程,可参见如图2或图3所示的实施例中实现心跳机制的方法相关描述,此处不再赘述。其中,交换节点31可以是与第一节点32和第二节点33均相连的任意节点,优选的,可以利用第一节点32和第二节点33之间本身的拓扑结构,将位于第一节点32和第二节点33之间的通信路径上的交换机或路由器作为交换节点31,这样便无需额外引入新的节点执行交换节点31的功能。至此,本发明的实施例提供一种交换节点、实现心跳机制的系统,其中,交换节点获取第一节点向第二节点发送的心跳请求,该心跳请求包括第一节点的标识和第二节点的标识;进而,交换节点记录接收心跳请求的 第一时刻;并且,根据第二节点的标识,在缓存信息中查询交换节点最近一次接收到第二节点发送消息的第二时刻,该缓存信息中存储有交换节点接收到的任一节点发送消息的时刻与该节点的标识之间的对应关系;若第一时刻与第二时刻之间差值的绝对值小于阈值,则交换节点向第一节点发送心跳响应。可以看出,由于换节点可以实时记录每个节点发送的消息经过交换节点的时间,这样,当第一节点向第二节点发送的心跳请求经过交换节点时,交换节点可以通过查询到最近一次接收到第二节点发送消息的时刻,进而确定出该第二节点可用,从而代替第二节点向第一节点发送心跳响应,因此,可以有效减少各个节点接收心跳请求和发送心跳响应的次数,从而避免接收大量的心跳请求和发送大量的心跳响应占用资源。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软 件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1