通信通道处理方法和系统与流程

文档序号:11263698阅读:332来源:国知局
本申请涉及通信
技术领域
:,特别是涉及一种通信通道处理方法和一种通信通道处理系统。
背景技术
::在分布式系统中,程序通常运行在不同的节点上。程序间的通信一般分为两类,一、心跳通信,通过周期性的心跳信号同步对方的状态;二、数据通信,发送内容为用户逻辑相关的数据,如执行的任务指令和指令执行的结果。心跳通信的网络链路,我们称之为心跳通道;数据通信的网络链路,我们称之为数据通道。在产品的实际运维过程中,特别是在集群网络压力大的时候,会出现部分或所有数据通道不通但是心跳通道依然连通的现象。当系统处于该状态的时候,主控进程(如,master进程)发给工作进程(如,worker进程)的命令无法得到执行,或者工作进程无法告诉主控进程任务的执行结果;由于主控进程认为工作进程仍正常运行,进而导致主控进程端的执行任务长时间无法结束,任务被搁置,严重影响了系统的正常运行。技术实现要素:鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种通信通道处理方法和系统。为了解决上述问题,本申请公开了一种通信通道处理方法,其中,所述通信通道包括:主控进程与工作进程之间的心跳通道和数据通道,所述方法包括:确定与心跳通道具有关联关系的至少一个数据通道;对确定的所述至少一个数据通道进行检测;在检测到任一数据通道处于断开状态时,断开所述心跳通道,以使心跳超时;在确定心跳超时后,结束当前任务。优选地,所述在确定心跳超时后,结束当前任务,包括:若在第一预置时间内所述主控进程未接收到通过所述心跳通道发送的心跳消息,则确定心跳超时,并通过所述主控进程重调度所述当前任务;若在第二预置时间内所述工作进程未接收到通过所述心跳通道发送的心跳消息,则确定心跳超时,并退出所述工作进程,以结束所述工作进程中执行的所述当前任务。优选地,所述第二预置时间与所述心跳消息的发送间隔时间之和小于所述第一预置时间。优选地,所述在检测到任一数据通道状态为断开状态时,断开所述心跳通道,以使心跳超时,包括:在检测到任一数据通道状态为断开状态时,将工作进程的状态更新为超时状态,并控制工作进程停止向主控进程发送心跳消息,以使主控进程将所述主控进程中保存的工作进程的状态更新为超时状态。优选地,所述在检测到任一数据通道状态为断开状态时,断开所述心跳通道,以使心跳超时,包括:在检测到任一数据通道状态为断开状态时,控制主控进程停止向工作进程发送心跳消息,以使工作进程的状态更新为超时状态。优选地,所述对确定的所述至少一个数据通道进行检测,包括:通过设定检测消息判断所述数据通道是否处于断开状态;其中,所述设定检测消息为空的数据通信包。优选地,所述通过设定检测消息判断所述数据通道是否处于断开状态,包括:在检测到所述数据通道中的数据消息发送失败时,在所述数据通道中周期性地发送所述设定检测消息;若在第一设定时间阈值内,所述设定检测消息持续发送失败,则确定所述数据通道处于断开状态;否则,确定所述数据通道处于连接状态。优选地,所述方法还包括:在检测到所述数据通道中的数据消息发送失败时,将所述数据通道对应的状态机由连通状态置为不确定状态;以及,在所述设定检测消息持续发送失败时,将所述数据通道对应的状态机由不确定状态置为断开状态。优选地,所述数据通道中的数据消息与所述设定检测消息通过不同的进程进行分发和传输。优选地,所述心跳通道基于用户数据报udp协议实现通信:由所述工作进程通过所述心跳通道上报至所述主控进程的第一心跳消息中包括所述工作进程的udp心跳地址;其中,所述udp心跳地址用于使所述主控进程根据所述udp心跳地址向所述工作进程发送第二心跳消息。优选地,在所述确定与心跳通道具有关联关系的至少一个数据通道之前,所述方法还包括:建立所述心跳通道与所述至少一个数据通道之间的关联关系;其中,所述心跳通道与所述至少一个数据通道是相互独立的通信通道。优选地,所述建立所述心跳通道与至少一个数据通道之间的关联关系,包括:判断当前数据通道中是否携带设定标识;若所述当前数据通道中携带有所述设定标识,则将所述心跳通道的地址信息发送至所述当前数据通道,以根据所述地址信息建立所述当前数据通道与所述心跳通道之间的关联关系。本申请还公开了一种通信通道处理系统,其中,所述通信通道包括:主控进程与工作进程之间的心跳通道和数据通道,所述系统包括:确定模块,用于确定与心跳通道具有关联关系的至少一个数据通道;检测模块,用于对确定的所述至少一个数据通道进行检测;断开模块,用于在检测到任一数据通道处于断开状态时,断开所述心跳通道,以使心跳超时;结束模块,用于在确定心跳超时后,结束当前任务。优选地,所述结束模块,用于若在第一预置时间内所述主控进程未接收到通过所述心跳通道发送的心跳消息,则确定心跳超时,并通过所述主控进程重调度所述当前任务;以及,若在第二预置时间内所述工作进程未接收到通过所述心跳通道发送的心跳消息,则确定心跳超时,并退出所述工作进程,以结束所述工作进程中执行的上述当前任务。优选地,所述第二预置时间与所述心跳消息的发送间隔时间之和小于所述第一预置时间。优选地,所述断开模块,用于在检测到任一数据通道状态为断开状态时,将工作进程的状态更新为超时状态,并控制工作进程停止向主控进程发送心跳消息,以使主控进程将所述主控进程中保存的所述工作进程的状态更新为超时状态。优选地,所述断开模块,用于在检测到任一数据通道状态为断开状态时,控制主控进程停止向工作进程发送心跳消息,以使工作进程的状态更新为超时状态。优选地,所述检测模块,用于通过设定检测消息判断所述数据通道是否处于断开状态;其中,所述设定检测消息为空的数据通信包。优选地,所述检测模块,用于在检测到所述数据通道中的数据消息发送失败时,在所述数据通道中周期性地发送所述设定检测消息;以及,若在第一设定时间阈值内,所述设定检测消息持续发送失败,则确定所述数据通道处于断开状态;否则,确定所述数据通道处于连接状态。优选地,所述系统还包括:状态配置模块,用于在检测到所述数据通道中的数据消息发送失败时,将所述数据通道对应的状态机由连通状态置为不确定状态;以及,在所述设定检测消息持续发送失败时,将所述数据通道对应的状态机由不确定状态置为断开状态。优选地,所述数据通道中的数据消息与所述设定检测消息通过不同的进程进行分发和传输。优选地,所述心跳通道基于用户数据报udp协议实现通信:由所述工 作通过所述心跳通道上报至所述主控进程的第一心跳消息中包括所述工作进程的udp心跳地址;其中,所述udp心跳地址用于使所述主控进程根据所述udp心跳地址向所述工作进程发送第二心跳消息。优选地,所述系统包括:关系建立模块,用于在所述确定模块确定与心跳通道具有关联关系的至少一个数据通道之前,建立所述心跳通道与所述至少一个数据通道之间的关联关系;其中,所述心跳通道与所述至少一个数据通道是相互独立的通信通道。优选地,所述关系建立模块,用于判断当前数据通道中是否携带设定标识;以及,在所述当前数据通道中携带有所述设定标识时,将所述心跳通道的地址信息发送至所述当前数据通道,以根据所述地址信息建立所述当前数据通道与所述心跳通道之间的关联关系。本申请实施例包括以下优点:本申请实施例所述的通信通道处理方案可以先确定与心跳通道具有关联关系的至少一个数据通道,然后对与心跳通道关联的至少一个数据通道进行检测;在检测到任一数据通道处于断开状态时,断开所述心跳通道,以使心跳超时,在确定心跳超时后,结束当前任务。可见,在本申请实施例中,实现了心跳通道与数据通道的关联,使得在数据通道不通时,心跳通道也会随之主动断开,保证了双通道的状态一致性。也即,当数据通道异常时,通信通道也主动断开,使得数据通道和通信通道均处于异常状态,进而可以及时结束当前任务,避免了当前任务的长时间、始终无法执行的问题,降低了系统资源的占用。附图说明图1是本申请实施例一中一种通信通道处理方法的步骤流程图;图2是本申请实施例二中一种通信通道处理方法的步骤流程图;图3是本申请实施例三中一种master进程与worker进程的通信架构图;图4是本申请实施例三中一种心跳机制的原理图;图5是本申请实施例三中一种设定检测消息的发送和处理流程图;图6是本申请实施例三中一种数据通道状态机的转换示意图;图7是本申请实施例三中一种关联模块的示意图;图8是本申请实施例三中一种worker进程的心跳状态机的转换示意图;图9是本申请实施例三中一种master进程的心跳状态机的转换示意图;图10是本申请实施例四中一种通信通道处理系统的结构框图;图11是本申请实施例四中一种优选的通信通道处理系统的结构框图。具体实施方式为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。实施例一在分布式系统中,程序通常运行在不同的节点上,进程或程序间的通信一般分为两类:一、心跳通信,通过周期性的心跳消息来同步对方的状态;二、数据通信,发送与用户逻辑相关的数据内容,如执行的任务指令、指令执行的结果等。其中,心跳通信的网络链路可以称之为心跳通道,数据通信的网络链路可以称之为数据通道。在本实施例中,所述通信通道包括但不仅限于:主控进程与工作进程之间的心跳通道和数据通道。参照图1,示出了本申请实施例一中一种通信通道处理方法的步骤流程图。在本实施例种,所述通信通道处理方法包括:步骤102,确定与心跳通道具有关联关系的至少一个数据通道。如前所述,主控进程和工作进程间可以包括心跳通道和数据通道。一般地,心跳通道可以有一条,数据通道则可以有多条。在本实施例中,心跳通道与部分数据通道可以不完全关联,具体的关联情况可以根据实际需求进行配置。例如,根据数据通道的作用和/或重要程度,可以配置部分数据通道与心跳通道关联,另一部分数据通道则与心跳通道独立,在保证了必要数据通道与心跳通道关联的同时避免了不必要数据通道对心跳通道的影响,降低了资源占用。需要说明的是,所述与心跳通道具有关联关系的至少一个数据通道与所述心跳通道间可以是逻辑关系上的关联,通道的网络链路本身仍是相互独立的。步骤104,对确定的所述至少一个数据通道进行检测。在本实施例中,可以采用任意一种适当的方式对确定的所述至少一个数据通道进行检测。所述检测具体可以是指检测所述与心跳通道具有关联关系的各个数据通道的网络链路是否畅通。例如,可以但不限于通过在数据通道中周期性的发送检测消息的方式来检测各个数据通道的网络链路是否畅通。步骤106,在检测到任一数据通道处于断开状态时,断开所述心跳通道,以使心跳超时。在本实施例中,在检测到任一数据通道处于断开状态时,可以通过任意一种适当的方式来断开心跳通道,以使心跳超时。例如,可以以发送通知消息的方式触发所述心跳通道的断开;或者直接控制所述心跳通道的断开,本实施例对此不作限制。步骤108,在确定心跳超时后,结束当前任务。如前所述,在实际应用中,经常会出现数据通道的网络链路不通(断开)而心跳通道依然畅通的问题。当系统处于数据通道断开、心跳通道畅通的状态时,数据通道的断开会造成发送端(如,主控进程)发给接收端(如,工作进程)的命令无法得到执行,和/或,接收端无法将任务的执行结果发送给发送端的问题。然而,心跳通道的畅通,却使得心跳信号仍然可以正常发送和传输,发送端始终认为接收端处于正常运行状态,进而导致发送端的执行任务被长时间搁置无法结束,任务一直被保留(hang)。在本实施例中,在心跳通道断开后,心跳信号将无法通过所述心跳通道继续正常发送和传递,心跳超时,接收端和发送端也就无法继续保持同步,发送端和接收端相互之间会认为对方都处于异常状态,在发送端和接收端异常状态时,当前任务可以被正常的结束和/或重调度,避免了当前任务的长期搁置,当前任务始终无法完成的问题。综上所述,本实施例所述的通信通道处理方法可以先确定与心跳通道具有关联关系的至少一个数据通道,然后对与心跳通道关联的至少一个数据通道进行检测;在检测到任一数据通道处于断开状态时,断开所述心跳通道,以使心跳超时,在确定心跳超时后,结束当前任务。可见,在本实施例中,实现了心跳通道与数据通道的关联,使 得在数据通道不通时,心跳通道也会随之主动断开,保证了双通道的状态一致性。也即,当数据通道异常时,通信通道也主动断开,使得数据通道和通信通道均处于异常状态,进而可以及时结束当前任务,避免了当前任务的长时间搁置、始终无法执行的问题,降低了系统资源的占用。实施例二在分布式系统中,master-worker模式是常用的并行模式之一,master-worker模式的核心思想是:系统中的master进程和worker进程协作工作。其中,master进程负责接收和分配任务;worker进程负责处理任务。worker进程在任务处理完成后,可以将任务的处理结果返回给master进程,master进程可以对worker进程返回的处理结果进行归纳汇总。在本实施例中,主控进程和工作进程分别可以分别是对应master进程和worker进程。主控进程与工作进程之间的通信通道可以包括:心跳通道和数据通道。参照图2,示出了本申请实施例二中一种通信通道处理方法的步骤流程图。在本实施例中,所述通信通道处理方法包括:步骤202,建立心跳通道与至少一个数据通道之间的关联关系。在本实施例中,可以根据实际情况建立心跳通道与数据通道之间的关联关系,例如,可以将所述至少一个数据通道关联到同一个心跳通道上,以提高系统的可扩展性。需要说明的是,所述心跳通道与所述至少一个数据通道只是具有关联关系,通道本身仍是相互独立的。一种可行的建立所述心跳通道与至少一个数据通道之间的关联关系的方式可以如下:判断当前数据通道中是否携带设定标识;若所述当前数据通道中携带有所述设定标识,则将所述心跳通道的地址信息发送至所述当前数据通道,以根据所述地址信息建立所述当前数据通道与所述心跳通道之间的关联关系。换而言之,若当前数据通道中携带有设定标识,则说明该当前数据通道是与心跳通道相关联的:该当前数据通道不通,即认为网络是不通的,进而让心跳也超时,使得心跳通道也断开。而不携带设定标识的数据通道(也即,不与心跳通道关联的数据通道)不通,不会影响心跳通道的状态。其中,在实际应用中,可以根据数据通道在通信过程中的重要程度或者根据业务需 求来配置设定标识,如,在重要程度较高的数据通道中配置设定标识;或者,在频繁被使用的数据通道中配置设定标识。需要说明的是,所述通信通道可以基于过任意一种适当的协议进行通信。例如,master进程与worker进程之间的心跳通道可以基于udp协议实现通信:由所述worker进程通过所述心跳通道上报至所述主控进程的第一心跳消息中包括所述worker进程的udp心跳地址;其中,所述udp心跳地址可以用于使所述master进程根据所述udp心跳地址向所述worker进程发送第二心跳消息。其中,一种具体实现方式可以如下:worker进程:worker进程启动后,可以对本地的udp端口进行动态监听,并主动与master进程建立起网络连接,上报第一条心跳消息。其中,worker进程上报的每条心跳消息中都包括通过监听确定的所述worker进程的udp心跳地址。master进程:master进程接收worker进程上报的第一心跳消息,获取所述第一心跳消息中携带的所述worker进程的udp心跳地址,根据获取的所述worker进程的udp心跳地址向所述worker进程发送第二心跳消息,进而实现master进程与worker进程之间的心跳通信。可见,在本实施例中,使用简单的udp协议承载心跳通信,使得心跳协议非常简单,无论通信引起的网络负载还是收发方的处理逻辑都降低到最小,可以适应大规模并发的分布式应用。步骤204,确定与心跳通道具有关联关系的至少一个数据通道。在本实施例中,可以根据上述步骤202中预先建立的数据通道与心跳通道之间的关联关系来确定与心跳通道具有关联关系的至少一个数据通道。步骤206,对确定的所述至少一个数据通道进行检测。在本实施例中,一种可行的检测数据通道状态的方式可以如下:通过设定检测消息,判断所述数据通道是否处于断开状态。其中,所述设定检测消息为空的数据通信包。具体地,在检测到所述数据通道中的数据消息发送失败时,在所述数据通道中周期性地发送所述设定检测消息;若在第一设定时间阈值内,所述设定检测消息持续发送失败,则确定所述数据通道处于断开状态;否则,确定 所述数据通道处于连接状态。在本实施例中,优选地,在检测到所述数据通道中的数据消息发送失败时,还可以将所述数据通道对应的状态机由连通状态置为不确定状态;以及,在所述设定检测消息持续发送失败时,将所述数据通道对应的状态机由不确定状态置为断开状态。需要说明的是,所述数据通道中的数据消息与所述设定检测消息可以通过不同的进程进行分发和传输。从而减少所述设定检测消息对master进程和/或worker进程的影响。步骤208,在检测到任一数据通道处于断开状态时,断开所述心跳通道,以使心跳超时。在本实施例中,优选地,可以在检测到任一数据通道状态为断开状态时,将worker进程的状态更新为超时状态,并控制worker进程停止向master进程发送心跳消息,以使master进程将所述master进程中保存的所述worker进程的状态更新为超时状态。优选地,可以在检测到任一数据通道状态为断开状态时,控制master进程停止向worker进程发送心跳消息,以使worker进程的状态更新为超时状态。步骤210,在确定心跳超时后,结束当前任务。在本实施例中,心跳超时至少可以包括如下两种情况:针对master进程:若在第一预置时间内所述master进程未接收到通过所述心跳通道发送的心跳消息,则确定心跳超时,并通过所述master进程重调度所述当前任务。针对worker进程:若在第二预置时间内所述worker进程未接收到通过所述心跳通道发送的心跳消息,则确定心跳超时,并退出所述worker进程,以结束所述worker进程中执行的所述当前任务。可见,本实施例所述的通信通道处理方法实现了心跳通道与数据通道的状态关联,使得在数据通道不通时,心跳通道也会随之主动断开,保证了双通道的状态一致性。也即,当数据通道异常时,通信通道也主动 断开,使得数据通道和通信通道均处于异常状态,进而可以及时结束当前任务,避免了当前任务的长时间搁置、始终无法执行的问题,降低了系统资源的占用。其次,心跳通道与数据通道之间的网络链路仍是相互独立的,心跳通道可以基于简单的udp协议实现通信,协议非常简单,无论通信引起的网络负载还是收发方的处理逻辑都降低到最小,使得本实施例所述的通信通道处理方法可以适应大规模并发的分布式应用。此外,本实施例所述的通信通道处理方法允许多条数据通道关联到同一条心跳通道上,进一步提高了系统的扩展性。实施例三结合上述实施例,本实施例通过一个具体实例对所述通信通道处理方法进行详细说明。参照图3,示出了本申请实施例三中一种master进程与worker进程的通信架构图。在本实施例中,分布式系统中的worker进程端与master进程端各自包含心跳通道模块(hb模块)和数据通道模块(pm模块)。其中,hb模块,用于维护心跳通道,如,图3中的通道1,所述通道1用于传递心跳消息(hb消息)。pm模块,用于建立和维护数据通道,如,图3中的通道2和通道3,所述通道2和通道3用于收发数据消息(pb消息)。在本实施例中,可以在通信双方之间(worker进程端与master进程端之间)可以通过hb模块维护一个心跳通道,以及通过pm模块维护多个数据通道。进一步地,在本申请中,可以建立一个心跳通道与至少一个数据通道之间的关联关系。具体地,可以判断当前数据通道中是否携带设定标识;若所述当前数据通道中携带有所述设定标识,则将所述心跳通道的地址信息发送至所述当前数据通道,然后根据所述地址信息建立所述当前数据通道与所述心跳通道之间的关联关系。例如,在当前数据通道不通时,可以根据当前数据通道中携带的、用于指示与所述当前数据通道关联的心跳通道的地址信息确定所述心 跳通道,然后,将指示当前数据通道不通的消息发送至确定的心跳通道,进而实现信息的交互和共享。其中,当前数据通道(pm模块)和心跳通道(hb模块)之间的消息的交互和共享可以但不仅限于基于notify()方法的调用来实现。具体地,可以通过如下几个方面对所述master进程与worker进程的通信架构进行说明。一、心跳机制在本实施例中,心跳机制有两种功能:一、让对方知道自己的状态(是否处于live);二、master进程主动停心跳让worker进程超时,简称等死。下面结合图4,对心跳机制的第二中功能进行说明。参照图4,示出了本申请实施例三中一种心跳机制的原理图。如图4,在t0时刻,worker进程启动。在t1时刻,master进程收到worker第一次心跳,将master进程中的worker进程状态置为hbs_live状态(活动状态,也即,第一状态),并开始向worker进程发送心跳消息(实线表示)。在t2时刻,worker进程第一次收到master进程的心跳,进入hbs_live状态(第一状态)。在t3时刻,发生了断网,此后master进程和worker进程依然会发送心跳消息,但是master进程和worker进程相互之间都无法收到对方的发送心跳消息(虚线表示)。worker进程在workerterminatedinterval时间(工作进程终止时间,也即,第二预置时间)内依然没有收到心跳消息后,在t5时刻,worker进程进入hbs_terminated状态(终止状态,也即第二状态),此时,worker进程可以直接结束并退出。master进程在mastertimeoutinterval(主控进程超时时间)之后,也即,在t4时刻,将worker进程在master进程中置为hbs_timeout状态(超时状态)。t4刻开始,master进程不再给worker进程发送心跳消息,在持续masterterminatedinterval时间(主控进程终止时间,也即,第一预置时间)之后,在t6时刻,master进程中的worker进程状态被置为hbs_terminated状态(终止状态,也即第二状态)。优选地,在设置masterterminatedinterval时间(第一预置时间)和 workerterminatedinterval时间(第二预置时间)时,可以使第一预置时间=第二预置时间+心跳消息的发送间隔时间(hbloopinterval),以确保master进程中的worker进程状态为hbs_terminated的时候,worker进程一定进入了hbs_timeout状态,经过这一阶段后,master进程可以确定worker进程已经超时,从而可以进行相应的清理动作。二、数据通道如图3所示,master进程与worker进程之间通过pm模块建立有一路或者多路的数据通道。在本实施例中,在建立的每条数据通道中都可以添加有一设定检测消息(如,ping消息),以实现对数据通道的检测。通过ping消息可以探测数据通道的连通性,并反馈到自身的状态机以确定数据通道是否处于连通的状态。参照图5,示出了本申请实施例三中一种设定检测消息的发送和处理流程图。在本实施例中,当pm模块给对方发送数据消息(pb消息)不通的时候,pm模块会周期性地通过相同的网络链路发送空包,即ping消息。例如,pm模块可以将ping消息打包以messagepack(信息包)的形式发送给rpchandler(rpc处理程序,remoteprocedurecallprotocol,rpc,远程过程调用协议)。其中,pb消息和ping消息的接收端口可以是一样的,但是它们的处理线程可以是分开的,从而减少ping消息对于接收端的影响。进一步地,参照图6,示出了本申请实施例三中一种数据通道状态机的转换示意图。在本实施例中,在网络正常时,数据通道状态为channel_connected状态时,发送pb消息,不发送ping消息。当第一个pb消息发送失败的时候,状态机转入channel_unstable状态,发送pb消息,并周期性地发送ping消息。在channel_unstable状态下,若pb消息或ping消息发送成功,则重新切换至channel_connected状态;若,pb消息或ping消息发送失败,且,waittime≥channel_unstable_maxtime(信道不稳定的最大时限),则状态机转入channel_disconnected状态,发送pb消息,并周期性地发送ping消息。换而言之,如果pb消息和ping消息一直发送失败,且持续时 间大于等于channel_unstable_maxduration时间,状态机转入channel_disconnected状态,即数据通道不通状态。其中,waittime是指:pb消息或ping消息持续发送失败的时长。三、心跳通道与数据通道的关联因为心跳无论从通信协议还是处理逻辑上都比用户数据要简单,所以假定如果心跳不通那么双方的网络也是不通的,在实际的分布式系统应用过程中也仅遇到过心跳通而数据通道不通的问题。为了让心跳通道更真实地反映通信双方的网络状态,可以将数据通道的状态关联到心跳通道上,即数据通道不通时,心跳通道也应该断开。1、模块关联参照图7,示出了本申请实施例三中一种关联模块的示意图。在本实施例中,数据通道和心跳通道之间的关系可以是n:1的关系。其中,n≥1。可以将n个数据通道的状态汇总到一起,只要有一个数据通道不通,即认为网络是不通的,通过触发heartbeat模块的timeout事件,让心跳也超时,使得心跳通道也断开。如图7所示,数据通道1、数据通道2···数据通道n的通道状态(如,event_pb_connect,pb数据通道连接畅通;event_pb_disconnect,pb数据通道连接断开)可以汇总到remote1中,对remote1进行监控,若任一数据通道不通,则可以控制心跳超时(heartbeattimeout),使得心跳通道也断开。2、worker进程的心跳状态机转换参照图8,示出了本申请实施例三中一种worker进程的心跳状态机的转换示意图。在本实施例中,当数据通道不通(pb不通)时,worker进程进入hbs_timeout状态(超时状态)。在超时状态下,worker停止向master进程发送心跳消息,以使master进程在接收不到worker进程发送的心跳消息时,将master进程中保留的worker进程的状态置为超时状态,重新调度任务。其中,workerterminatedinterval时间、mastertimeoutinterval(master超时时间)和hbloopinterval可以根据实际集群环境需要进行配置,本实施例对此不作限制。。3、master进程的心跳状态机转换参照图9,示出了本申请实施例三中一种master进程的心跳状态机的转换示意图。在本实施例中,master进程的状态并没有任何增减,但是触发条件增加了一个:数据通道不通(pb不通)事件,当pb不通时,master进程可以把对应的worker进程的状态置为hbs_timeout,master进程可以通过停发心跳消息,使得worker进程也进入hbs_timeout状态。可见,在本实施例中,实现了心跳通道与数据通道的关联,使得在数据通道不通时,心跳通道也会随之主动断开,保证了双通道的状态一致性。当数据通道异常时,通信通道也主动断开,可以对任务进行重配置,以重新启动任务,避免了任务被长时间搁置无法执行、占用系统资源的问题。其次,心跳通道与数据通道之间是相对独立的,心跳通道使用简单的udp协议承载心跳通信,使得心跳协议非常简单,无论通信引起的网络负载还是收发方的处理逻辑都降低到最小,适应大规模并发的分布式应用。此外,在本实施例中,允许多条数据通道关联到同一条心跳通道上,因此,大大提高了系统的扩展性。实施例四在上述实施例的基础上,本实施例还提供了一种通信通道处理系统。所述通信通道包括:主控进程与工作进程之间的心跳通道和数据通道。参照图10,示出了本申请实施例四中一种通信通道处理系统的结构框图。在本实施例中,所述通信通道处理系统可以包括:确定模块1002,用于确定与心跳通道具有关联关系的至少一个数据通道。检测模块1004,用于对确定的所述至少一个数据通道进行检测。断开模块1006,用于在检测到任一数据通道处于断开状态时,断开所述心跳通道,以使心跳超时。结束模块1008,用于在确定心跳超时后,结束当前任务。可见,本实施例所述的述的通信通道处理系统实现了心跳通道与数据 通道的状态关联,使得在数据通道不通时,心跳通道也会随之主动断开,保证了双通道的状态一致性。也即,当数据通道异常时,通信通道也主动断开,使得数据通道和通信通道均处于异常状态,进而可以及时结束,避免了当前任务的长时间搁置、始终无法执行的问题,降低了系统资源的占用。参照图11,示出了本申请实施例四中一种优选的通信通道处理系统的结构框图。在本实施例中,优选地,所述系统还可以包括:状态配置模块10010,用于在检测到所述数据通道中的数据消息发送失败时,将所述数据通道对应的状态机由连通状态置为不确定状态;以及,在所述设定检测消息持续发送失败时,将所述数据通道对应的状态机由不确定状态置为断开状态。优选地,所述系统还可以包括:关系建立模块10012,用于在所述确定模块确定1002确定与心跳通道具有关联关系的至少一个数据通道之前,建立所述心跳通道与所述至少一个数据通道之间的关联关系;其中,所述心跳通道与所述至少一个数据通道是相互独立的通信通道。进一步优选地,所述关系建立模块10012,具体用于可以判断当前数据通道中是否携带设定标识;以及,在所述当前数据通道中携带有所述设定标识时,将所述心跳通道的地址信息发送至所述当前数据通道,以根据所述地址信息建立所述当前数据通道与所述心跳通道之间的关联关系。在本实施例中,一优选地,所述结束模块1008,具体可以用于若在第一预置时间内所述主控进程未接收到通过所述心跳通道发送的心跳消息,则确定心跳超时,并通过所述主控进程重调度所述当前任务;以及,若在第二预置时间内所述工作进程未接收到通过所述心跳通道发送的心跳消息,则确定心跳超时,并退出所述工作进程,以结束所述工作进程中执行的上述当前任务。其中,所述第二预置时间与所述心跳消息的发送间隔时间之和小于所述第一预置时间。在本实施例中,一优选地,所述断开模块1006,具体可以用于在检测到任一数据通道状态为断开状态时,将工作进程的状态更新为超时状态,并控 制工作进程停止向主控进程发送心跳消息,以使主控进程将所述主控进程中保存的所述工作进程的状态更新为超时状态。另一优选地,所述断开模块1006,具体可以用于在检测到任一数据通道状态为断开状态时,控制主控进程停止向工作进程发送心跳消息,以使工作进程的状态更新为超时状态。优选地,所述检测模块1004,具体可以用于通过设定检测消息判断所述数据通道是否处于断开状态;其中,所述设定检测消息为空的数据通信包。进一步优选地,所述检测模块1002,具体可以用于在检测到所述数据通道中的数据消息发送失败时,在所述数据通道中周期性地发送所述设定检测消息;以及,若在第一设定时间阈值内,所述设定检测消息持续发送失败,则确定所述数据通道处于断开状态;否则,确定所述数据通道处于连接状态。在本实施例中,所述数据通道中的数据消息与所述设定检测消息可以通过不同的进程进行分发和传输。所述心跳通道可以基于用户数据报udp协议实现通信:由所述工作通过所述心跳通道上报至所述主控进程的第一心跳消息中包括所述工作进程的udp心跳地址;其中,所述udp心跳地址用于使所述主控进程根据所述udp心跳地址向所述工作进程发送第二心跳消息。综上,本实施例所述的通信通道处理系统实现了心跳通道与数据通道的状态关联,使得在数据通道不通时,心跳通道也会随之主动断开,保证了双通道的状态一致性。也即,当数据通道异常时,通信通道也主动断开,使得数据通道和通信通道均处于异常状态,进而可以及时结束当前任务,避免了当前任务的长时间搁置、始终无法执行的问题,降低了系统资源的占用。其次,心跳通道与数据通道之间的网络链路仍是相互独立的,心跳通道可以基于简单的udp协议实现通信,协议非常简单,无论通信引起的网络负载还是收发方的处理逻辑都降低到最小,使得本实施例所述的通信通道处理方法可以适应大规模并发的分布式应用。此外,本实施例所述的通信通道处理方法允许多条数据通道关联到同一条心跳通道上,进一步提高了系统的扩展性。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较 简单,相关之处参见方法实施例的部分说明即可。本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。在一个典型的配置中,所述计算机设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非持续性的电脑可读媒体(transitorymedia),如调制的数据信号和载波。本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框 图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。以上对本申请所提供的一种通信通道处理方法和一种通信通道处理系 统进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1