异步调用处理方法、设备及分布式系统与流程

文档序号:12278947阅读:214来源:国知局
异步调用处理方法、设备及分布式系统与流程

本发明实施例涉及通信技术领域,尤其涉及一种异步调用处理方法、设备及分布式系统。



背景技术:

随着计算机技术的不断发展,分布式系统得到了广泛应用。在分布式系统中设置有多个节点,具有不同功能的节点之间可以进行相互调用以完成预设功能。

在现有技术中,为了提高分布式系统的处理效率,通常采用多线程实现节点之间进行异步调用,以使多个节点可以并行运行。具体的,在一个节点需要对其它多个节点进行调用时,可以同时启动多个线程分别对其它多个节点进行调用。但是,当一个节点对其它多个节点的调用之间存在依赖关系时,该多个线程之间也只能进行串行处理。例如,假设节点1需要调用节点2和节点3,且节点1调用节点3时,节点1需要将节点2的处理结果作为参数传递给节点3,这样,只有在节点2得到处理结果之后,节点1才能对节点3进行调用。

由上可知,在现有技术中,当一个节点对其它多个节点的调用之间存在依赖关系时,只能对该多个调用进行串行处理,导致分布式系统的处理效率较低。



技术实现要素:

本发明实施例提供一种异步调用处理方法、设备及分布式系统,用于提高分布式系统的处理效率。

第一方面,本发明实施例提供一种异步调用处理方法,该方法可以应用于包括协调器和至少两个服务节点的分布式系统。其中,被客户端请求提供服务的服务节点为主节点,被主节点调用来完成服务的服务节点为从节点。

在主节点接收到客户端请求的服务之后,主节点向协调器发送包括要调用的从节点的节点标识的异步调用请求。协调器根据异步调用请求创建本次调用的调用记录,并调用与节点标识对应的从节点对异步调用请求进行处理。在从节点对异步调用请求处理完成后,从节点向协调器发送处理结果,以使协调器将处理结果记录在调用记录中。当主节点在服务内调用的其它从节点需要使用处理结果时,向协调器发送处理结果获取请求,以从协调器中获取处理结果。

在上述过程中,在分布式系统中设置有协调器,以使各个服务节点可以通过该协调器进行相互调用。协调器还可以缓存一个服务内各个服务节点对异步调用请求的处理结果。这样,当主节点对第二从节点的调用依赖于主节点对第一从节点的调用结果时,主节点在对第二从节点进行调用时,主节点无需等待对第一从节点的调用结果。在主节点对第二从节点进行调用时,主节点将第一从节点的处理结果对应标识信息发送给第二从节点,以使第二从节点可以根据处理结果对应的标识信息在协调器中获取处理结果,进而实现主节点可以对多个相互依赖的从节点进行并行调用,进而提高分布式系统的处理效率。

在一种可能的实施方式中,在协调器创建完调用记录之后,协调器还可以构造用于查找该调用记录的标识信息,向主节点发送标识信息,并通过主节点向主节点在服务内调用的、需要使用处理结果的从节点发送标识信息。这样,可以保证需要使用处理结果的从节点可以根据该标识信息在协调器中获取处理结果。

在另一种可能的实施方式中,需要使用处理结果的节点向协调器发送的处理结果获取请求中还可以携带标识信息。相应的,协调器可以通过如下可行的实现方式从调用记录中获取处理结果:协调器根据标识信息查找调用记录,并判断调用记录中是否存在处理结果;

若是,则协调器获取处理结果。若否,则协调器将需要使用处理结果的节点的标识加入等待列表,并在调用记录中存在处理结果时,获取处理结果,并将需要使用处理结果的节点的标识移出等待列表。

在该种实施方式中,当需要使用处理结果的服务节点需要获取处理结果,且调用记录中还不存在该处理结果时,协调器将需要使用处理结果的服务节点的标识加入到等待列表。这样,当调用记录中存在该处理结果时,协调器可以第一时间向需要使用处理结果的服务节点发送该处理结果,使得协调器可以快速向需要使用处理结果的服务节点反馈处理结果,进而使得分布式系统的处理效率较高。

在另一种可能的实施方式中,协调器创建的调用记录还可以包括用于标识本次调用的调用标识。相应的,协调器可以根据如下两种可行的实现方式构造用于查找调用记录的标识信息:

一种可行的实现方式:协调器直接以调用标识作为查找调用记录的标识信息。另一种可行的实现方式:构造基于调用标识的句柄对象作为查找调用记录的标识信息。

在另一种可能的实施方式中,在协调器接收主节点基于客户端请求的服务发送的服务创建请求之后,可以根据服务创建请求,创建本次服务的、包括用于查找服务记录的服务记录,并向主节点发送服务标识。这样,主节点发起的异步调用请求中可以携带服务标识,以使协调器在创建调用记录时,可以根据服务标识将调用记录创建在服务记录下。

在该种实施方式中,通过服务标识指示一个服务,并将一个服务内的所有调用记录创建在该服务下。这样,便于分布式系统对服务中的调用记录进行监控管理。

可选的,协调器可以通过如下两种可行的实现方式构造用于查找调用记录的标识信息:

一种可行的实现方式:协调器将服务标识和调用标识结合作为查找调用记录的标识信息。这样,在根据标识信息查找调用记录时,可以先根据服务标识确定出服务记录,再根据调用标识在服务记录中确定调用记录,可以使得获取调用记录的效率较高。

另一种可行的实现方式:协调器构造基于服务标识和调用标识的句柄对象作为查找调用记录的标识信息。由于句柄对象占用空间通常较小,这样在传递调用标识时,可以提高传输效率。

在另一种可能的实施方式中,服务记录和调用记录可以为树型结构。其中,树形结构以服务记录为根节点,调用记录为挂接在根节点下的子节点。通过树形结构的形式对一个服务内的调用记录进行存储,便于分布式系统对各服务内的各个调用记录进行监控管理,进而提高了对服务的管理效率。

第二方面,本发明实施例提供一种异步调用处理方法,该方法应用于包括协调器和至少两个服务节点的分布式系统。其中,被客户端请求提供服务的服务节点为主节点,被主节点调用来完成服务的服务节点为从节点。

当客户端向主节点请求服务时,主节点根据客户端请求的服务,确定需要调用的从节点,并向协调器发送调用第一从节点的异步调用请求。协调器根据异步调用请求调用第一从节点来处理异步调用请求、并记录第一从节点对异步调用请求的处理结果;第一从节点为确定出的需要调用的从节点中的一个。主节点还根据需要调用的各从节点之间的依赖关系,识别出需要调用的从节点中需要使用第一从节点对异步调用请求的处理结果的第二从节点,主节点调用第二从节点,并在调用第二从节点的过程中指示第二从节点从协调器获取第一从节点对异步调用请求的处理结果。

在上述过程中,在分布式系统中设置有协调器,以使各个服务节点可以通过该协调器进行相互调用。同时,协调器还可以缓存一个服务内各个服务节点对异步调用请求的处理结果。这样,当主节点对第二从节点的调用依赖于主节点对第一从节点的调用结果时,主节点在对第二从节点进行调用时,主节点无需等待对第一从节点的调用结果。在主节点对第二从节点进行调用时,主节点将第一从节点的处理结果对应标识信息发送给第二从节点,以使第二从节点可以根据处理结果对应的标识信息在协调器中获取处理结果,进而实现主节点可以对多个相互依赖的从节点进行并行调用,进而提高分布式系统的处理效率。

在一种可能的实施方式中,在主节点根据客户端发起的服务,确定需要调用的节点之前,主节点还基于客户端请求的服务,向协调器发送服务创建请求,以使所述协调器根据所述服务创建请求,创建本次服务的服务记录,服务记录中包括用于查找所述服务记录的服务标识,在协调器创建服务记录之后,协调器向主节点发送服务标识。这样,在主节点向协调器发送的异步调用请求中可以包括服务标识和第一从节点的标识。

可选的,在主节点向协调器发送调用第一从节点的异步调用请求之后,主节点接收协调器发送的、用于查找异步调用请求对应的调用记录的标识信息。相应的,主节点可以向第二从节点发送标识信息,以使第二从节点根据标识信息在协调器中获取第一从节点对异步调用请求的处理结果。

在该过程中,通过服务标识指示一个服务,并将一个服务内的所有调用记录创建在该服务下。这样,便于分布式系统对服务中的调用记录进行监控管理。同时,协调器通过标识信息可以快速查找到调用记录,并在调用记录中快速获取处理结果。

第三方面,本发明实施例提供一种协调器,该协调器可以执行第一方面任一项所述的方法。该协调器可以通过软件和/或硬件实现。可选的,该协调器可以包括接收模块、处理模块和发送模块,并通过各模块执行第一方面任一项所述的方法。

第四方面,本发明实施例提供一种服务节点,该服务节点可以执行第二方面任一项所述的方法。该服务节点可以通过软件和/或硬件实现。可选的,该服务节点可以包括接收模块、处理模块和发送模块,并通过各模块执行第二方面任一项所述的方法。

第五方面,本发明实施例提供一种协调器,该协调器可以执行第一方面任一项所述的方法。该协调器可以包括接收器、处理器、发送器和用于存储应用程序的存储器,处理器可以读取并执行存储器中的应用程序。

第六方面,本发明实施例提供一种服务节点,该服务节点可以执行第一方面任一项所述的方法。该服务节点可以包括接收器、处理器、发送器和用于存储应用程序的存储器,处理器可以读取并执行存储器中的应用程序。

第七方面,本发明实施例提供一种分布式系统,该分布式系统中包括上述第五方面所述的协调器和第六方面所述的服务节点。

本发明实施例提供的异步调用处理方法、设备及分布式系统,本发明实施例提供的异步调用处理方法,在分布式系统中设置有协调器,以使各个服务节点可以通过该协调器进行相互调用。协调器还可以缓存一个服务内各个服务节点对异步调用请求的处理结果。这样,当主节点对第二从节点的调用依赖于主节点对第一从节点的调用结果时,主节点在对第二从节点进行调用时,主节点无需等待对第一从节点的调用结果。在主节点对第二从节点进行调用时,主节点将第一从节点的处理结果对应标识信息发送给第二从节点,以使第二从节点可以根据处理结果对应的标识信息在协调器中获取处理结果,进而实现主节点可以对多个相互依赖的从节点进行并行调用,进而提高分布式系统的处理效率。

附图说明

图1为本发明提供的异步调用方法的应用场景示意图;

图2为本发明提供的异步调用处理方法的流程示意图一;

图3为本发明提供的协调器获取处理结果方法的流程示意图;

图4为本发明提供的异步调用处理方法的流程示意图二;

图5为本发明提供的树形结构示意图;

图6为本发明提供的协调器的结构示意图;

图7为本发明提供的服务节点的结构示意图一;

图8为本发明提供的服务节点的结构示意图二;

图9为本发明提供的协调器的硬件结构示意;

图10为本发明提供的服务节点的硬件结构示意图一;

图11为本发明提供的服务节点的硬件结构示意图二。

具体实施方式

图1为本发明提供的异步调用方法的应用场景示意图,请参见图1,包括分布式系统101和客户端102,其中,分布式系统101中包括协调器1011和多个服务节点(分别记为1012-1至1012-2)。每一个服务节点可以单独向客户端102提供服务,也可以与其它服务节点共同向客户端102提供服务。在本申请中,在一个服务节点(主节点)向客户端102提供服务的过程中,该服务节点可以通过协调器1011对其它服务节点(从节点)进行调用,并由协调器1011缓存处理结果,一方面,当主节点对第二从节点的调用依赖于主节点对第一从节点的调用结果时,主节点在对第二从节点进行调用时,无需等待对第一从节点的调用结果,在主节点对第二从节点进行调用时,只需将第一从节点的处理结果对应标识信息发送给第二从节点,以使第二从节点可以根据处理结果对应的标识信息在协调器中获取处理结果,进而实现主节点可以对多个相互依赖的从节点进行并行调用,进而提高分布式系统的处理效率。

需要说明的是,在本申请中,将被客户端请求提供服务的服务节点称为主节点,将被主节点调用来完成服务的服务节点称为从节点,其中,主节点和从节点为相对概念,一个服务节点可以为主节点,也可以为其它服务节点的从服务节点。

下面,通过具体实施例对本申请所示的技术方案进行详细说明。需要说明的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。

图2为本发明提供的异步调用处理方法的流程示意图一,请参见图2,该方法可以包括:

S201、主节点根据客户端请求的服务,确定需要调用的从节点。

在实际应用过程中,当客户端需要在分布式系统中获取服务时,客户端请求分布式系统中、与该服务对应的主节点提供服务,在主节点对客户端请求的服务进行处理的过程中,该主节点可能需要对分布式系统中的其它节点(从节点)进行调用,才能完成客户端请求的服务。

当主节点需要对分布式系统中其它节点进行调用时,主节点根据客户端请求的服务,确定需要调用的从节点。可选的,主节点可以根据服务中包括的子服务的类型,确定需要调用的从节点,例如,在主节点中可以存储子服务的类型与从节点的对应关系,这样,主节点可以根据该对应关系、及子服务的类型确定需要调用的从节点。

S202、主节点向协调器发送异步调用请求,异步调用请求包括要调用的从节点的节点标识。

S203、协调器根据异步调用请求创建本次调用的调用记录。

在一次服务内,每一个异步调用请求对应一个调用记录,调用记录中可以存储该异步调用请求对应的处理结果,可选的,在调用记录中还可以存储异步调用请求对应的请求节点(主节点)的标识、被请求节点(从节点)的标识,在实际应用过程中,可以根据实际需要确定调用记录中包括的内容。

S204、协调器构造用于查找该调用记录的标识信息。

可选的,协调器创建的调用记录中可以包括用于标识本次调用的调用标识,相应的,协调器可以直接以调用标识作为查找调用记录的标识信息,或者,构造基于调用标识的句柄对象作为查找调用记录的标识信息。

S205、协调器向主节点发送该标识信息。

S206、协调器调用从节点对异步调用请求进行处理。

在协调器接收到主节点的异步调用请求之后,协调器在异步调用请求中获取需要调用的从节点的标识,并根据需要调用的从节点的标识,调用从节点的标识对应的从节点对异步调用请求进行处理。可选的,协调器可以根据异步调用请求生成对从节点的调用指令,并在调用指令中携带异步调用请求中的内容信息,协调器向从节点发送该调用指令,以使从节点根据该调用指令对异步调用请求进行处理。

需要说明的是,S203-S205与S206可以同时执行,也可以顺序执行,在实际应用过程中,可以根据实际需要设置S203-S205与S206的执行顺序,本发明对此不作具体限定。

S207、从节点向协调器发送处理结果。

在协调器对从节点进行调用之后,从节点对异步调用请求进行处理,以获取异步调用请求对应的处理结果,并向协调器发送获取得到的处理结果。

S208、协调器将处理结果记录在调用记录中。

S209、在主节点在当前服务内对其它从节点进行调用的过程中,当主节点调用的其它从节点需要使用处理结果时,主节点向该从节点发送标识信息。

S210、需要使用处理结果的从节点向协调器发送处理结果获取请求。

S211、协调器根据处理结果获取请求,在标识信息对应的调用记录中获取处理结果。

可选的,协调器在获取到处理结果获取请求之后,协调器可以在处理结果获取请求中获取用于查找调用记录的标识信息,根据该标识信息查找调用记录,并在查找到的调用记录中获取处理结果。

S212、协调器向需要使用处理结果的从节点发送该处理结果。

需要说明的是,S206-S208和S209-S210可以并行执行。

还需要说明的是,在主节点对客户端请求的服务进行处理的过程中,主节点可能也需要使用S207中从节点向协调器发送的处理结果。当主节点需要使用该处理结果时,主节点向协调器发送处理结果获取请求,并在处理结果获取请求中携带用于查找调用记录的标识信息。协调器根据处理结果获取请求,在标识信息对应的调用记录中获取处理结果,并向主节点发送该处理结果。需要说明的是,协调器获取处理结果的过程可以参见S211,此处不再进行赘述。

下面,通过具体示例,对图2实施例所示的方法进行详细说明。

示例性的,假设分布式系统中包括5个节点,分别记为节点1-节点5。

当客户端需要在分布式系统中获取服务1时,客户端在分布式系统的5个节点中确定用于提供服务1的主节点为节点1,则客户端请求节点1对服务1进行处理。

在节点1对客户端请求的服务1进行处理的过程中,节点1确定需要调用的从节点。假设节点1在对服务1进行处理的过程中,节点1需要对节点2和节点3调用。当节点1需要对节点2进行调用,则节点1向协调器发送异步调用请求,且在异步调用请求中携带节点2的标识。

协调器根据节点1发送的异步调用请求创建本次调用的调用记录,该调用记录对应的调用标识为“001”,并调用节点2对该异步调用请求进行处理。在协调器创建调用记录1之后,协调器构建用于查找该调用记录的标识信息,例如,协调器可以直接将“001”确定为该调用记录的标识信息,协调器将该标识信息发送至节点1。

节点2对异步调用请求进行处理得到处理结果,并将处理结果发送给协调器,由协调器将该处理结果记录在本次调用记录中。

在节点1对服务1的处理过程中,节点1还需要通过协调器调用节点3,由于节点3对异步调用请求处理的过程中需要使用调用记录1中的处理结果。在本申请中,节点1无需在节点2确定得到处理结果之后再对节点3进行调用,当节点1需要对节点3进行调用时,节点1便对节点3进行调用,并向节点3发送标识信息“001”,以使节点3在需要使用节点2的处理结果时,向协调器发送处理结果获取请求,并在处理结果获取请求中携带用于查找该调用记录1的标识信息(“001”),协调器根据处理结果获取请求中的标识信息,查找本次调用记录,在本次调用记录中获取处理结果,并向节点3发送该处理结果。

在上述过程中,在节点1对节点2的调用之后,当节点1需要对节点3调用,且对节点3的调用依赖于节点2的处理结果时,节点1也无需等待节点2的处理结果,以使节点1可以对节点2和节点3进行并行调用,进而提高分布式系统的处理效率。

本发明实施例提供的异步调用处理方法,在分布式系统中设置有协调器,以使各个服务节点可以通过该协调器进行相互调用。协调器还可以缓存一个服务内各个服务节点对异步调用请求的处理结果。这样,当主节点对第二从节点的调用依赖于主节点对第一从节点的调用结果时,主节点在对第二从节点进行调用时,无需等待对第一从节点的调用结果。在主节点对第二从节点进行调用时,主节点将第一从节点的处理结果对应标识信息发送给第二从节点,以使第二从节点可以根据处理结果对应的标识信息在协调器中获取处理结果,进而实现主节点可以对多个相互依赖的从节点进行并行调用,进而提高分布式系统的处理效率。

在图2所示实施例的基础上,可选的,需要使用处理结果的服务节点向协调器发送处理结果获取请求中可以携带用于查找调用记录的标识信息。相应的,协调器可以根据如下可行的实现方式在标识信息对应的调用记录中获取处理结果(图2所示实施例中的S211)。该获取过程的具体实现,请参见图3所示的实施例。

图3为本发明提供的协调器获取处理结果方法的流程示意图,请参见图3,该方法可以包括:

S301、协调器根据标识信息查找调用记录。

在协调器接收到需要使用处理结果的服务节点发送的处理结果获取请求之后,协调器可以在处理结果获取请求中获取标识信息,并根据该标识信息查找获取调用记录。

S302、协调器判断调用记录中是否存在处理结果。

若是,则执行S303。

若否,则执行S304-S306。

S303、协调器在调用记录中获取处理结果。

S304、协调器将需要使用处理结果的节点的标识加入等待列表。

若判断调用记录中不存在处理结果,说明相应的从节点还未处理得到该调用记录对应的处理结果,则协调器将需要使用处理结果的节点加入等待列表,此时,需要使用处理结果的节点可以先执行其它不依赖该处理结果的事件。

S305、在调用记录中存在处理结果时,协调器获取处理结果。

S306、协调器将需要使用处理结果的节点的标识移出等待列表。

在上述过程中,当需要使用处理结果的服务节点需要获取处理结果,且调用记录中还不存在该处理结果时,协调器将需要使用处理结果的服务节点的标识加入到等待列表。这样,当调用记录中存在该处理结果时,协调器可以第一时间向需要使用处理结果的服务节点发送该处理结果,使得协调器可以快速向需要使用处理结果的服务节点反馈处理结果,使得分布式系统的处理效率较高。

在上述任意一个实施例的基础上,下面,通过图4所示的实施例对上述异步调用处理方法进行进一步的详细说明。

图4为本发明提供的异步调用处理方法的流程示意图二,请参见图4,该方法可以包括:

S401、主节点根据客户端请求的服务,向协调器发送服务创建请求。

可选的,该服务创建请求中可以包括服务的标识。在实际应用过程中,可以根据实际需要确定服务创建请求中包括的内容。

S402、协调器根据服务创建请求创建本次服务的服务记录,服务记录中包括用于查找服务记录的服务标识。

可选的,在协调器创建服务记录时,可以以一个树形结构的形式创建该服务记录,且该服务记录为树形结构的根节点。在协调器创建服务记录的同时,协调器还生成用于查找该服务标识的服务标识,可选的,该服务标识可以通过字符串表示,例如,服务标识可以为“001”、“abc1”等。

S403、协调器向主节点发送服务标识。

S404、主节点根据客户端请求的服务,确定需要调用第一从节点。

S405、主节点向协调器发送异步调用请求,异步调用请求包括第一从节点的节点标识和服务标识。

S406、协调器根据异步调用请求,在服务标识对应的服务记录下创建调用记录,调用记录中包括用于标识本次调用的调用标识。

其中,调用记录可以创建在该调用所在服务的服务记录下。具体的,该调用记录可创建在代表所述服务的根节点下,作为该根节点的子节点。

可选的,S402中创建的服务记录和S406中创建的调用记录的格式可以如图5所示。图5为本发明提供的树形结构示意图,请参见图5,该树形结构的根节点为服务记录,该树形结构的子节点为调用记录,调用记录挂在服务记录的根节点上。在调用记录中可以包括处理结果和等待列表,等待列表用于存储等待该处理结果的节点的标识,可选的,在调用记录中还可以包括嵌套调用记录。当然,在树形结构中还可以包括其它内容,本发明对此不作具体限定。

通过树形结构的形式对一个服务内的调用记录进行存储,便于分布式系统对该服务内的各个调用记录进行监控管理,例如,分布式系统可以根据该树形结构监控各个调用记录是否正常完成(是否得到处理结果),进而提高了对服务的管理效率。

需要说明的是,S404-S406的执行过程可以参见图2所示实施例中的S201-S203,此处不再进行赘述。

S407、协调器根据服务标识和调用标识,构造查找调用记录的标识信息。

可选的,协调器可以通过如下两种可行的实现方式构造查找调用记录的标识信息:

一种可行的实现方式:协调器将服务标识和调用标识结合作为查找调用记录的标识信息。可选的,协调器可以将服务标识和调用标识按照预设组合顺序进行组合,得到该标识信息。例如,假设服务标识为“001”,调用标识为“abc”,则根据该服务标识和调用标识确定得到的标识信息可以为“001-abc”。

另一种可行的实现方式:协调器构造基于服务标识和调用标识的句柄对象作为查找调用记录的标识信息。可选的,可以设置句柄对象、与服务标识和调用标识之间对应关系,以使得到根据句柄对象可以唯一的确定得到一个服务标识和一个调用标识。例如,可以设置句柄对象“A”、与服务标识“001”和调用标识“abc”对应,则根据句柄对象“A”即可确定服务标识为“001”,调用标识为“abc”。

S408、协调器向主节点发送标识信息。

S409、协调器调用第一从节点对异步调用请求进行处理。

S410、第一从节点向协调器发送处理结果。

S411、协调器将处理结果记录在调用记录中。

需要说明的是,S409-S411的执行过程可以参见图2所示实施例中的S206-S208,此处不再进行赘述。

需要说明的是,S407-S408和S409-S411可以顺序执行,也可以同时执行,本发明实施例对S407-S408和S409-S411的执行顺序不作具体限定。

S412、主节点根据需要调用的各从节点之间的依赖关系,识别出需要使用第一从节点对异步调用请求的处理结果的第二从节点。

各从节点之间的依赖关系用于指示一个从节点需要使用哪些从节点的处理结果,或者,一个从节点的处理结果需要被哪些从节点使用,例如,该依赖关系可以为服务节点C依赖(需要使用)节点B对节点A的调用的处理结果。

S413、在主节点调用第二从节点时,向第二从节点发送标识信息以指示第二从节点从协调器根据标识信息获取第一从节点对异步调用请求的处理结果。

S414、第二从节点向协调器发送包括标识信息的处理结果获取请求。

S415、协调器根据标识信息查找调用记录,并判断调用记录中是否存在处理结果;

若是,则执行S416-S417;

若否,则执行S418-S420。

S416、协调器在调用记录中获取处理结果。

S417、协调器向第二从节点发送处理结果。

S418、协调器将第二从节点的标识加入等待列表,在调用记录中存在处理结果时,协调器获取处理结果;

S419、协调器向第二从节点发送处理结果。

S420、协调器将第二从节点的标识移出等待列表。

需要说明的是,S415-S420的执行过程可以参见图3所示的实施例,此处不再进行赘述。

下面,通过具体示例,对图4实施例所示的方法进行详细说明。

示例性的,假设分布式系统中包括5个节点,分别记为节点1-节点5,再假设节点1的标识为“a”,节点2的标识为“b”,节点3的标识为“c”。

当客户端需要在分布式系统中获取服务1时,客户端在分布式系统的5个节点中确定用于提供服务1的主节点为节点1,则客户端请求节点1对服务1进行处理。

节点1根据客户端请求的服务,向协调器发送服务创建请求,协调根据该服务创建请求,创建本次服务的服务记录,服务记录中包括用于查找该服务记录的服务标识,协调器还向节点1发送该服务标识,假设本次服务的服务记录为服务记录1,服务标识为“001”。可选的,在协调器创建服务记录1时,可以创建一树形结构,且该服务记录1为该树形结构的根节点。

在节点1对客户端请求的服务1进行处理的过程中,节点1确定需要调用节点2(第一从节点),并向协调器发送异步调用请求,该异步调用请求中包括“b”(节点2的节点标识)和“001”(服务1的标识)。

协调器根据该异步调用请求,在服务记录1下创建调用记录1,该调用记录1中包括调用标识“ab”,可选的,调用记录1可以挂在以服务记录1为根节点的树形结构的节点中。

协调器调用节点2对异步调用请求进行处理,在节点2确定得到处理结果之后,节点2向协调器发送该处理结果,以使协调器将该处理结果记录在调用记录1中。同时,协调器还将“001-ab”确定为用于查找该调用记录1的标识信息,并向节点1发送该标识信息。

在节点1对客户端请求的服务1进行处理的过程中,节点1确定需要调用的从节点包括节点2和节点3,且节点1调用节点3时,节点1需要将节点2的处理结果作为参数传递给节点3(节点3需要使用节点2的处理结果),则协调器根据该依赖关系,将节点3确定为第二从节点。

当节点1需要调用节点3时,节点1无需等待节点2的处理结果,节点1向节点3发送标识信息“001-ab”,以使节点3可以根据该标识信息“001-ab”从协调器中获取处理结果。

当节点3需要使用节点2的处理结果时,节点3向协调器发送处理结果获取请求,并在处理结果获取请求中携带标识信息“001-ab”,协调器根据该标识信息,在服务标识“001”对应的服务记录1中查找调用标识“ab”对应的调用记录1,并判断调用记录1中是否存在处理结果。

若存在,则协调器直接在调用记录1中获取处理结果,并向节点3发送处理结果。

若不存在,则协调器将节点3的标识“c”加入等待列表,在调用记录1中存在处理结果时,协调器获取处理结果,并向节点3发送处理结果,同时,协调器还将节点3的标识“c”移出等待列表。

在上述过程中,在节点1对节点2调用之后,当节点1需要对节点3进行调用时,节点1无需等待节点2的处理结果,进而使得节点1可以对节点2和节点3进行并行调用,进而提高了异步处理的效率。

图6为本发明提供的协调器的结构示意图,该协调器位于分布式系统中,该分布式系统中还包括至少两个服务节点。其中,被客户端请求提供服务的服务节点为主节点,被所述主节点调用来完成所述服务的服务节点为从节点。请参见图6,所述协调器包括接收模块11、处理模块12和发送模块13,其中,

所述接收模块11用于,接收所述主节点基于客户端请求的服务发起的异步调用请求,所述异步调用请求包括要调用的从节点的节点标识。

所述处理模块12用于,根据所述异步调用请求创建本次调用的调用记录,调用与所述节点标识对应的从节点对所述异步调用请求进行处理。

所述接收模块11还用于,接收所述从节点发送的处理结果。

所述处理模块12还用于,将所述处理结果记录在所述调用记录中。

所述接收模块11还用于,接收所述客户端请求的服务内、需要使用所述处理结果的服务节点发送的处理结果获取请求,所述需要使用所述处理结果的服务节点为所述主节点在所述服务内调用的其它从节点。

所述处理模块12还用于,从所述调用记录中获取所述处理结果。

所述发送模块13用于,向所述需要使用所述处理结果的服务节点发送所述处理结果。

本发明实施例提供的协调器可以执行图2实施例所示的技术方案,其实现原理以及有益效果可以具体参见图2所示的实施例,此处不再进行赘述。

在一种可能的实施方式中,所述处理模块12还可以根据图2所示实施例中的S204构造用于查找所述调用记录的标识信息,其实现原理以及有益效果类似,此处不再进行赘述。相应的,所述发送模块13可以向所述主节点发送所述标识信息,并通过所述主节点向所述主节点在所述服务内调用的、需要使用所述处理结果的从节点发送所述标识信息。

可选的,所述调用记录还包括用于标识本次调用的调用标识,相应的,所述处理模块12可以根据图2所示实施例中的S204所示的方法构造用于查找所述调用记录的标识信息,其实现原理以及有益效果类似,此处不再进行赘述。

在另一种可能的实施方式中,所述处理结果获取请求中携带所述标识信息;相应的,所述处理模块12可以根据图3所示实施例从所述调用记录中获取所述处理结果,其实现原理以及有益效果类似,此处不再进行赘述。

在另一种可能的实施方式中,所述处理模块12还可以根据图4所示实施例中的S402创建包括用于查找服务记录的服务标识的服务记录,其实现原理以及有益效果类似,此处不再进行赘述。相应的,所述发送模块13可以向所述主节点发送所述服务标识;以使所述主节点发起的所述异步调用请求中携带所述服务标识,这样,所述处理模块12在创建所述调用记录时,可以根据所述服务标识将所述调用记录创建在所述服务记录下。

在另一种可能的实施方式中,所述接收模块11还用于,接收所述主节点基于所述客户端请求的服务发送的服务创建请求,以使处理模块12可以图4实施例中S402所示的方法创建本次服务的服务记录,其实现原理以及有益效果类似,此处不再进行赘述。

在另一种可能的实施方式中,所述处理模块12可以根据图4所示实施例中S410所示的方法构造用于查找所述调用记录的标识信息,其实现原理以及有益效果类似,此处不再进行赘述。

在另一种可能的实施方式中,所述服务记录和所述调用记录为树型结构;所述树形结构以所述服务记录为根节点,所述调用记录为挂接在所述根节点下的子节点。该种实施方式中的服务记录和调用记录的格式可以参见如图5,此处不再进行赘述。

图7为本发明提供的服务节点的结构示意图一,所述服务节点为分布式系统中的主节点,所述分布式系统包括协调器和至少两个服务节点。其中,被客户端请求提供服务的服务节点为所述主节点,被所述主节点调用来完成所述服务的服务节点为从节点。请参见图7,所述主节点包括处理模块21和发送模块22,其中,

所述处理模块21用于,根据客户端请求的服务,确定需要调用的从节点。

所述发送模块22用于,向所述协调器发送调用第一从节点的异步调用请求,通过所述协调器调用所述第一从节点来处理所述异步调用请求以及记录所述第一从节点对所述异步调用请求的处理结果;所述第一从节点为确定出的需要调用的所述从节点中的一个。

所述处理模块21还用于,根据需要调用的各从节点之间的依赖关系,识别出所述需要调用的从节点中需要使用所述第一从节点对所述异步调用请求的处理结果的第二从节点。

所述处理模块21还用于,调用所述第二从节点,并在调用所述第二从节点的过程中指示所述第二从节点从所述协调器获取所述第一从节点对所述异步调用请求的处理结果。

本发明实施例提供的服务节点可以执行图2实施例所示的技术方案,其实现原理以及有益效果可以参见图2所示的实施例,此处不再进行赘述。

图8为本发明提供的服务节点的结构示意图二,在图7所示实施例的基础上,请参见图8,所述主节点还包括接收模块23,其中,

所述发送模块22还用于,在所述处理模块21根据客户端发起的服务,确定需要调用的节点之前,根据图4实施例中的S401向所述协调器发送服务创建请求,以使所述协调器根据所述服务创建请求,创建本次服务的服务记录,其实现原理以及有益效果类似,此处不再进行赘述。相应的,所述接收模块23用于接收所述协调器发送的所述服务的标识。相应的,所述异步调用请求中包括所述服务标识和所述第一从节点的标识。

可选的,在所述发送模块22向所述协调器发送调用第一从节点的异步调用请求之后,所述接收模块23还用于接收所述协调器发送的、用于查找所述异步调用请求对应的调用记录的标识信息。相应的,所述发送模块22还用于,向所述第二从节点发送所述标识信息,以使所述第二从节点根据所述标识信息在所述协调器中获取所述第一从节点对所述异步调用请求的处理结果。

图9为本发明提供的协调器的硬件结构示意,该协调器位于分布式系统中,所述分布式系统中还包括至少两个服务节点。其中,被客户端请求提供服务的服务节点为主节点,被所述主节点调用来完成所述服务的服务节点为从节点。所述协调器包括接收器31、处理器32、发送器33、用于存储应用程序的存储器34、及通信总线35,所述处理器32用于根据所述存储器34中的应用程序执行相应操作,通信总线35用于实现元件之间的通信连接,其中,

所述接收器31用于,接收所述主节点基于客户端请求的服务发起的异步调用请求,所述异步调用请求包括要调用的从节点的节点标识。

所述处理器32用于,根据所述异步调用请求创建本次调用的调用记录,调用与所述节点标识对应的从节点对所述异步调用请求进行处理。

所述接收器31还用于,接收所述从节点发送的处理结果。

所述处理器32还用于,将所述处理结果记录在所述调用记录中。

所述接收器31还用于,接收所述客户端请求的服务内、需要使用所述处理结果的服务节点发送的处理结果获取请求,所述需要使用所述处理结果的服务节点为所述主节点在所述服务内调用的其它从节点。

所述处理器32还用于,从所述调用记录中获取所述处理结果。

所述发送器33用于,向所述需要使用所述处理结果的服务节点发送所述处理结果。

可选的,所述处理器32还用于,构造用于查找所述调用记录的标识信息。所述发送器33还用于,向所述主节点发送所述标识信息,并通过所述主节点向所述主节点在所述服务内调用的、需要使用所述处理结果的从节点发送所述标识信息。

可选的,所述处理器32创建的所述调用记录还包括用于标识本次调用的调用标识,所述处理器32构造用于查找所述调用记录的标识信息具体包括:直接以所述调用标识作为查找所述调用记录的标识信息,或者,构造基于所述调用标识的句柄对象作为查找所述调用记录的标识信息。

本发明实施例提供的协调器可以执行图2实施例所示的技术方案,其实现原理以及有益效果可以具体参见图2所示的实施例,此处不再进行赘述。

在一种可能的实施方式中,所述处理结果获取请求中携带所述标识信息。

相应的,所述处理器32从所述调用记录中获取所述处理结果具体包括:

根据所述标识信息查找所述调用记录,并判断所述调用记录中是否存在所述处理结果。

若是,则所述处理器32用于获取所述处理结果。

若否,则所述处理器32将所述需要使用所述处理结果的节点的标识加入等待列表,并在所述调用记录中存在所述处理结果时,获取所述处理结果,并将所述需要使用所述处理结果的节点的标识移出所述等待列表。

在该种可能的实施方式中,协调器的实现原理以及有益效果可以具体参见图3所示的实施例,此处不再进行赘述。

在另一种可能的实施方式中,所述处理器32还用于,基于所述客户端请求的服务创建本次服务的服务记录,所述服务记录中包括用于查找所述服务记录的服务标识。

所述发送器33还用于,向所述主节点发送所述服务标识。

所述主节点发起的所述异步调用请求中携带所述服务标识,所述处理器32在创建所述调用记录时,根据所述服务标识将所述调用记录创建在所述服务记录下。

可选的,所述接收器31还用于,接收所述主节点基于所述客户端请求的服务发送的服务创建请求。

所述处理器32根据所述服务创建请求创建本次服务的服务记录具体包括:根据所述服务创建请求,创建本次服务的服务记录。

在该种可能的实施方式中,协调器的实现原理以及有益效果可以具体参见图4所示实施例中的S401-S402,此处不再进行赘述。

在另一种可能的实施方式中,所述处理器32构造用于查找所述调用记录的标识信息具体包括:

将所述服务标识和所述调用标识结合作为查找所述调用记录的标识信息,或者,构造基于所述服务标识和所述调用标识的句柄对象作为查找所述调用记录的标识信息。

在该种可能的实施方式中,协调器的实现原理以及有益效果可以具体参见图4所示实施例中的S410,此处不再进行赘述。

在另一种可能的实施方式中,所述服务记录和所述调用记录为树型结构;所述树形结构以所述服务记录为根节点,所述调用记录为挂接在所述根节点下的子节点。

在该种可能的实施方式中,协调器的实现原理以及有益效果可以具体参见图4所示实施例中的S402-S406,此处不再进行赘述。

图10为本发明提供的服务节点的硬件结构示意图一,所述服务节点为分布式系统中的主节点,所述分布式系统包括协调器和至少两个服务节点,其中,被客户端请求提供服务的服务节点为所述主节点,被所述主节点调用来完成所述服务的服务节点为从节点。请参见图10,所述主节点包括处理器41、发送器42、用于存储应用程序的存储器43、及通信总线44,所述处理器41用于根据所述存储器43中的应用程序执行相应操作,通信总线44用于实现元件之间的通信连接,其中,

所述处理器41用于,根据客户端请求的服务,确定需要调用的从节点。

所述发送器42用于,向所述协调器发送调用第一从节点的异步调用请求,通过所述协调器调用所述第一从节点来处理所述异步调用请求以及记录所述第一从节点对所述异步调用请求的处理结果;所述第一从节点为确定出的需要调用的所述从节点中的一个。

所述处理器41还用于,根据需要调用的各从节点之间的依赖关系,识别出所述需要调用的从节点中需要使用所述第一从节点对所述异步调用请求的处理结果的第二从节点。

所述处理器41还用于,调用所述第二从节点,并在调用所述第二从节点的过程中指示所述第二从节点从所述协调器获取所述第一从节点对所述异步调用请求的处理结果。

本发明实施例提供的服务节点可以执行图2实施例所示的技术方案,其实现原理以及有益效果可以参见图2所示的实施例,此处不再进行赘述。

图11为本发明提供的服务节点的硬件结构示意图二,在图10所示实施例的基础上,请参见图11,所述主节点还包括接收器45,其中,

所述发送器42还用于,在所述处理器41根据客户端发起的服务,确定需要调用的节点之前,基于所述客户端请求的服务,向所述协调器发送服务创建请求,以使所述协调器根据所述服务创建请求,创建本次服务的服务记录,所述服务记录中包括用于查找所述服务记录的服务标识。

所述接收器45用于,接收所述协调器发送的所述服务的标识。

相应的,所述异步调用请求中包括所述服务标识和所述第一从节点的标识。

在该种可能的实施方式中,服务节点的实现原理以及有益效果可以具体参见图4所示实施例中的S401-S402,此处不再进行赘述。

可选的,在所述发送器42向所述协调器发送调用第一从节点的异步调用请求之后,所述接收器45还用于接收所述协调器发送的、用于查找所述异步调用请求对应的调用记录的标识信息。

相应的,所述发送器42还用于,向所述第二从节点发送所述标识信息,以使所述第二从节点根据所述标识信息在所述协调器中获取所述第一从节点对所述异步调用请求的处理结果。

在该种可能的实施方式中,服务节点的实现原理以及有益效果可以具体参见图4所示实施例中的S411、S413,此处不再进行赘述。

本发明实施例还提供一种分布式系统,包括图9实施例所示的协调器、图10或图11所示的服务节点、和至少一个所述服务节点调用来完成服务的从服务节点,其中,

所述协调器用于存储所述服务内各异步调用对应的处理结果,以使所述服务节点和各所述从服务节点在需要使用所述处理结果时,从所述协调器中获取所述处理结果。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1