消息传输方法和装置与流程

文档序号:12789365阅读:155来源:国知局
消息传输方法和装置与流程

本发明涉及计算机领域,具体而言,涉及一种消息传输方法和装置。



背景技术:

目前,分布式系统中存在关键路径和非关键路径,且关键路径和非关键路径紧密耦合在一起,非关键路径的可用性能不够好,经常会出现问题。例如在关键路径购买流程中还耦合了代用费用中心写涨到的非关键路径。再例如在任务串行处理时,一个任务执行完之后才能继续执行下一个任务,而且每个任务的耗时比较久,比如发货任务。

上述举例存在以下问题:

非关键路径可用性和稳定性不够,一出问题就影响到关键路径。比如购买流程在支付之后,需要调用费用中心接口将账单明细写入,而费用中心是一个不太稳定的模块,经常会调用失败,导致账单明细没有写入费用中心,并且调用费用中心失败,会导致整个购买请求的失败,影响购买接口的稳定性。

任务串行处理以及任务执行耗时大,造成后面的任务的堵塞,影响用户的体验。比如发货流程,所有用户的发货任务是由同一个后台脚本进行处理的,而这个后台脚本是串行处理的,性能比较差,当发货任务多的时候,容易造成堆积,用户可能需要等待好几分钟才能看到自己购买的资源被生产出来,体验非常不好。

针对上述的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种消息传输方法和装置,以至少解决相关技术采用任务串行处理方式处理任务时,由于单个任务执行耗时较大,而造成后续任务堵塞的技术问题。

根据本发明实施例的一个方面,提供了一种消息传输方法,包括:接收第一节点发送的待处理消息,并响应待处理消息向第一节点发送响应消息,其中,待处理消息用于指示待执行的任务,响应消息用于在任务尚未被执行时指示第一节点任务已完成;将待处理消息发送给对应的第二节点,其中,第二节点用于执行任务;接收第二节点发送的任务处理结果,其中,任务处理结果用于指示任务已成功执行。

根据本发明实施例的另一方面,还提供了一种消息传输装置,包括:第一接收单元,用于接收第一节点发送的待处理消息,并响应待处理消息向第一节点发送响应消息,其中,待处理消息用于指示待执行的任务,响应消息用于在任务尚未被执行时指示第一节点任务已完成;发送单元,用于将待处理消息发送给对应的第二节点,其中,第二节点用于执行任务;第二接收单元,用于接收第二节点发送的任务处理结果,其中,任务处理结果用于指示任务已成功执行。

在本发明实施例中,采用接收第一节点发送的待处理消息,并响应待处理消息向第一节点发送响应消息,其中,待处理消息用于指示待执行的任务,响应消息用于在任务尚未被执行时指示第一节点任务已完成;将待处理消息发送给对应的第二节点,其中,第二节点用于执行任务;接收第二节点发送的任务处理结果,其中,任务处理结果用于指示任务已成功执行的方式,通过在接收到第一节点发送的待处理消息时首先向第一节点返回用于指示待执行的任务已完成,然后可以将待处理消息发送给第二节点以通知第二节点执行该任务,并在第二节点成功执行完该任务之后接收第二节点返回的任务处理结果,达到了异步处理任务的目的,进而解决了相关技术采用任务串行处理方式处理任务时,由于单个任务执行耗时较大,而造成后续任务堵塞的技术问题,从而实现了缩短执行任务的耗时,提高任务执行效率的技术效果。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的消息传输方法的硬件环境的示意图;

图2是根据本发明实施例的一种可选的消息传输方法的流程图;

图3是根据本发明实施例的消息转发系统的架构示意图;

图4是根据本发明优选实施例的消息转发系统的结构示意图;

图5是根据本发明优选实施例的购买流程的示意图;

图6是根据本发明优选实施例的发货流程的示意图;

图7是根据本发明实施例的一种可选的消息传输装置的示意图;

图8是根据本发明实施例的另一种可选的消息传输装置的示意图;

图9是根据本发明实施例的另一种可选的消息传输装置的示意图;

图10是根据本发明实施例的另一种可选的消息传输装置的示意图;

图11是根据本发明实施例的另一种可选的消息传输装置的示意图;

图12是根据本发明实施例的另一种可选的消息传输装置的示意图;

图13是根据本发明实施例的另一种可选的消息传输装置的示意图;

图14是根据本发明实施例的另一种可选的消息传输装置的示意图;

图15是根据本发明实施例的另一种可选的消息传输装置的示意图;以及

图16是根据本发明实施例的一种终端的结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

实施例1

根据本发明实施例,提供了一种消息传输方法的方法实施例。

可选地,在本实施例中,上述消息传输方法可以应用于如图1所示的由服务器102和终端104所构成的硬件环境中。如图1所示,服务器102通过网络与终端104进行连接,上述网络包括但不限于:广域网、城域网或局域网,终端104并不限定于PC、手机、平板电脑等。本发明实施例的消息传输方法可以由服务器102来执行,此处需要说明的是,服务器102可以为单个服务器,也可以为由多个服务器组成的服务器集群,且该服务器集群可以为分布式系统。

图2是根据本发明实施例的一种可选的消息传输方法的流程图,如图2所示,该方法可以包括以下步骤:

步骤S202,接收第一节点发送的待处理消息,并响应待处理消息向第一节点发送响应消息,其中,待处理消息用于指示待执行的任务,响应消息用于在任务尚未被执行时指示第一节点任务已完成;

步骤S204,将待处理消息发送给对应的第二节点,其中,第二节点用于执行任务;

步骤S206,接收第二节点发送的任务处理结果,其中,任务处理结果用于指示任务已成功执行。

通过上述步骤S202至步骤S206,通过在接收到第一节点发送的待处理消息时首先向第一节点返回用于指示待执行的任务已完成,然后可以将待处理消息发送给第二节点以通知第二节点执行该任务,并在第二节点成功执行完该任务之后接收第二节点返回的任务处理结果,达到了异步处理任务的目的,进而解决了相关技术采用任务串行处理方式处理任务时,由于单个任务执行耗时较大,而造成后续任务堵塞的技术问题,从而实现了缩短执行任务的耗时,提高任务执行效率的技术效果。

需要说明的是,本发明实施例的消息传输方法可以由分布式消息转发系统执行,下面将结合消息转发系统的架构对本发明实施例的消息传输方法进行详细介绍,具体地:

图3是根据本发明实施例的消息转发系统的架构示意图,如图3所示,该消息转发系统中可以包括:第一接口模块10、第二接口模块20、第三接口模块30、第四接口模块40以及数据库50,下面给将结合消息传输方法的执行流程对消息转发系统中的各个接口模块以及数据库进行具体说明。

该消息转发系统可以接收第一节点发送的待处理消息,并将该待处理消息转发至第二节点执行,并接收第二节点返回的任务处理结果,其中,待处理消息可以用于指示待执行的任务,任务处理结果可以用于指示任务已成功执行。第一节点可以为待执行的任务的发起者,第二节点可以为待执行的任务的执行者。第一节点和第二节点均可以为服务器或者由多个服务器组成的服务器集群。第一节点可以在接收到用户触发的任务执行流程之后触发生成待处理消息,此处需要说明的是,本发明实施例对待执行的任务的类型不做具体限定,例如待执行的任务可以是购买流程中的写账单明细的任务,也可以是物流流程中的发货任务。

如图3所示,本发明实施例中可以通过消息转发系统中的第三接口模块30接收第一节点发送的待处理消息,并响应该待处理消息向第一节点发送响应消息,也即实现步骤S202所示的执行流程。需要说明的是,第三接口模块30可以是服务器或者由多个服务器组成的服务器集群,第三接口模块30也可以是服务器中的一个常驻进程。第三接口模块30可以包括多个分布式部署在不同设备上的接口模块,本发明实施例在通过消息转发系统中的第三接口模块30接收第一节点发送的待处理消息,并响应该待处理消息向第一节点发送响应消息时,可以通过上述多个分布式部署在不同设备上的接口模块中的处于正常工作状态的一个接口模块来接收第一节点发送的待处理消息,并响应该待处理消息向第一节点发送响应消息,其中,该被选中的处于正常工作状态的接口模块可以为第三接口模块。本发明实施例通过设置第三接口模块30为多个分布式部署在不同设备上的接口模块,可以保证其中一个接口模块工作状态异常时仍然可以利用其它工作状态正常的接口模块接收第一节点发送的待处理消息,并响应该待处理消息向第一节点发送响应消息,进而达到提高消息转发系统的高可用性和稳定性的效果。还需要说明的是,消息转发系统中的第三接口模块30在接收到第一节点发送的待处理消息之后,可以响应该待处理消息向第一节点发送响应消息,其中,该响应消息可以用于在待处理消息所指示的待执行的任务尚未执行时指示第一节点该任务已完成,此处需要说明的是,第三接口模块30在接收到待处理消息之后,还并未将该待处理消息发送至第二节点,也即第二节点还尚未开始执行待处理消息所指示的待执行的任务,但是此时第三接口模块30向第一节点返回响应消息通知第一节点该任务已完成,是为了可以在第一节点中释放该任务所占用的资源,以便于第一节点能够继续发起其他任务,这样能够使得多个任务可以异步执行,进而达到提高任务执行效率的效果。

如图3所示,消息转发系统中的第三接口模块30在接收到第一节点发送的待处理消息之后,可以将该待处理消息存储在数据库50中,其中,数据库50可以为单个数据库,也可以为多个分布式部署在不同设备上的数据库。待处理消息存储至数据库50中之后其状态可以被标识为待推送,状态为待推送状态的待处理消息将会被发送至第二节点。此处需要说明的是,数据库50中可以存储有一个或者多个待处理消息,这些待处理消息的状态可以相同,也可以不同。数据库50中存储的待处理消息的状态除了包括“待推送”之外,还可以包括“已推送”,对于“待推送”的待处理消息说明其还未被发送至第二节点,需要将其发送至第二节点;而对于“已推送”的待处理消息说明其已经被发送至第二节点。还需要说明的是,该实施例通过设置多个分布式部署在不同设备上的数据库,可以保证其中一个数据库工作状态异常时仍然可以利用其它工作状态正常的数据库存储待处理消息,进而达到提高消息转发系统的高可用性和稳定性的效果。多个分布式部署在不同设备上的数据库中的其中一个数据库在接收并存储第三接口模块30发送的待处理消息之后,该实施例可以立刻在多个分布式部署在不同设备上的数据库之间进行数据同步,也即使得分布式部署在不同设备上的数据库中存储的待处理消息及其状态保证一致,这样能够使得在消息传输流程中任意数据库工作异常之后,可以利用其它工作状态正常的数据库进行替换,而不会造成数据丢失,进而达到提高消息转发系统的高可用性和稳定性的效果。

如图3所示,本发明实施例可以将数据库50中的“待推送”的待处理消息通过消息转发系统中的第一接口模块10发送给与待处理消息的消息类型相对应的第二节点,也即实现步骤S204所示的执行流程,其中,第一接口模块10可以与第二节点之间预先建立有连接,利用该预先建立的连接第一接口模块10可以将数据库50中的“待推送”的待处理消息发送给对应的第二节点。需要说明的是,第二节点可以为多个分布式的服务器,每个服务器可以用于处理一种类型的待处理消息,第一接口模块10可以根据待处理消息的消息类型将其发送给与其消息类型对应的第二节点中。还需要说明的是,第一接口模块10可以包括多个分布式部署在不同设备上的接口模块,本发明实施例在通过消息转发系统中的第一接口模块10将待处理消息发送给第二节点时,可以通过多个分布式部署在不同设备上的接口模块中处于正常工作状态的一个接口模块,将待处理消息发送给第二节点,其中,该被选中的处于正常工作状态的接口模块可以为第一接口模块。本发明实施例通过设置第一接口模块10为多个分布式部署在不同设备上的接口模块,可以保证其中一个接口模块工作状态异常时仍然可以利用其它工作状态正常的接口模块将待处理消息发送给对应的第二节点,进而达到提高消息转发系统的高可用性和稳定性的效果。还需要说明的是,第二节点在接收到第一接口模块10发送的待处理消息之后,可以响应该待处理消息向第一接口模块10发送响应消息,其中,该响应消息可以用于指示成功接收到待处理消息。第二节点还可以在第一接口模块10接收到第二节点发送的响应消息之后断开与第一接口模块10之间的连接,以使得第一接口模块10可以释放发送该待处理消息所占用的资源,以便于第一接口模块10可以继续处理其他待处理消息的发送流程,进而达到提高待处理消息的发送效率的效果。

如图3所示,第二节点在断开与第一接口模块10的连接之后,可以执行待处理消息所指示的待执行的任务,并在执行完任务之后将任务处理结果发送给消息转发系统中的第二接口模块20,也即步骤S206所指示的执行流程,其中,任务处理结果可以用于指示任务已成功完成。需要说明的是,第二接口模块20可以包括多个分布式部署在不同设备上的接口模块,本发明实施例在通过消息转发系统中的第二接口模块20接收第二节点发送的任务处理结果时,可以通过多个分布式部署在不同设备上的接口模块中处于正常工作状态的一个接口模块,接收第二节点发送的任务处理结果,其中,该被选中的处于正常工作状态的接口模块可以为第二接口模块。本发明实施例通过设置第二接口模块20为多个分布式部署在不同设备上的接口模块,可以保证其中一个接口模块工作状态异常时仍然可以利用其它工作状态正常的接口模块接收第二节点发送的任务处理结果,进而达到提高消息转发系统的高可用性和稳定性的效果。

如图3所示,消息转发系统中的第一接口模块10在将待处理消息发送给对应的第二接口之后,如果消息转发系统中的第二接口模块20在预定时间段(该预定时间段可以根据实际需求设定或调整)内接收到了第二节点发送的任务处理结果,则第二接口模块20将该任务处理结果通知给数据库50,以便于将该待处理消息在数据库50中的状态修改为“已推送”,则该待处理消息以后便不会被第一接口模块10发送给对应的第二节点。如果在预定时间段内未接收到第二节点发送的任务处理结果,则消息转发系统中的第四接口模块40可以将该待处理消息的状态继续标记为“待推送”,并将该“待推送”的待处理消息重新激活,以便于第一接口模块10重新将其发送给对应的第二节点。该实施例根据任务处理结果修改数据库50中的待处理消息的状态,能够使得第一接口模块10可以根据待处理消息的状态选择发送哪些待处理消息给第二节点,进而达到了提高向第二节点发送的待处理消息的准确度的效果。而且,该实施例在第二接口模块20在预定时间段内未接收到第二节点发送的任务处理结果的情况下,可以利用第四接口模块40重新激活该处于“待推送”的待处理消息,以便于第一接口模块10可以重新向第二节点发送该待处理消息,能够使得待处理消息所指示的待执行的任务能够被第二节点成功执行,进而达到了提高任务执行成功率的效果。

本发明实施例中通过消息转发系统中的各个接口模块以及数据库执行本发明实施例中的消息传输方法,能够达到异步处理任务的目的,进而解决了相关技术采用任务串行处理方式处理任务时,由于单个任务执行耗时较大,而造成后续任务堵塞的技术问题,从而实现了缩短执行任务的耗时,提高任务执行效率的技术效果。

本发明还提供了一种优选实施例,该优选实施例提供了一种基于消息转发系统提升分布式系统可用性的方案。

该方案在Linux操作系统环境下,使用Nginx服务器,PHP以及CDB,实现了一套高可用的分布式消息转发系统,为分布式部署的不同应用之间或者一个应用的不同组件之间,提供基于消息的可靠的异步通信机制。将整个系统的关键路径作为消息转发系统的生产者,而系统的非关键路径则作为消息转发系统的消费者。保证当消费者出现问题(升级停服、宕机、不可用等)时,生产者不会受到其影响。

该方案中的消息转发系统可以在以下的几个方面提高系统的整体可用性和稳定性:

1、将关键路径与非关键路径解耦,非关键路径的执行异步化,保证即使非关键路径出现问题(升级停服、宕机、不可用等),也不会影响关键路径的执行。

2、对于突增流量,数据可先堆积在消息转发系统里,消费者按照实际能力来消费,防止雪崩效应和消息丢失,实现削峰填谷,降低后台压力。

3、保证消息的传递,如果发送消息时消费者不可用,消息队列会保留消息,直到成功地传递它。

4、将串行的任务异步化,提高执行效率,提升用户体验。

图4是根据本发明优选实施例的消息转发系统的结构示意图,如图4所示,消息转发系统可以包括以下模块:

Saver:负责接收来自生产者的消息并将消息落地持久化存储在CDB中,其中,CDB可以是云数据库,也即基于开源的关系型数据库设计的分布式数据库存储服务。

Pusher:负责将消息推送给消费者。

Reactivator:负责将超时仍然没有消费成功的消息重新激活,以供Pusher重新进行推送。

Confirmer:提供一个接口确认消息成功消费。

需要说明的是,该优选实施例中的生产者相当于本发明上述实施例中的第一节点;消费者相当于本发明上述实施例中的第二节点;消息转发系统与本发明上述实施例中的消息转发系统相同;消息转发系统中的Pusher相当于本发明上述实施例中的第一接口模块;消息转发系统中的Confirmer相当于本发明上述实施例中的第二接口模块;消息转发系统中的Saver相当于本发明上述实施例中的第三接口模块;消息转发系统中的Reactivator相当于本发明上述实施例中的第四接口模块;消息转发系统中的CDB相当于本发明上述实施例中的数据库。

如图4所示,生产者可以将非关键路径需要执行的任务,以消息的形式发送到消息转发系统的Saver。Saver收到消息后,根据消息类型,将消息存储到对应的CDB中,并返回给生产者一个消息的ID。

消息转发系统中的Pusher,可以遍历每一个CDB,从中取出待推送的消息,包括仍未推送或者推送失败的消息,并将消息的状态修改为推送中,然后根据消息类型,推送到对应的消费者,如果消费者显式返回成功,则将消息的状态修改为推送成功。

消息由Pusher推送给消费者之后,消费者可能会执行很长的时间才能消费完这条消息。此时,消费者可以先返回响应给Pusher,断开与Pusher的连接,然后再继续完成消费。在完成消费后,调用Confirmer接口告诉消息转发系统,这条消息消费成功。

Pusher在推送消息给消费者时,难免遇到消费者出了问题的情况(升级停服、宕机、不可用等),在过了超时时间之后,如果消息仍然没有被消费成功,则会被Reactivator置为推送失败的状态,从而让Pusher重新进行推送。

需要说明的是,首先Saver是分布式的,可以部署在多台机器上,即使有一台机器挂了,也还有别的机器提供服务,而消息的存储使用的是CDB,CDB本身是高可用的,但是谨慎起见,对每一个消息类型,都配备了几个CDB作为对应的存储,即使其中一个挂了,也还有别的CDB可以提供存储。这样可以保证,传递给消息转发系统的消息能够成功落地。Pusher、Reactivator和Confirmer也都是分布式的,即使其中一个挂了,也还有别的能够顶上完成对应的任务,保证消息成功被推送到消费者并成功消费。

该优选实施例中还介绍了两个具体实例:

第一个实例,如图5所示,将关键路径与非关键路径解耦,写账单明细(非关键路径)异步完成,不影响购买流程(关键路径)。具体地,在购买流程(关键路径)中,有一步操作是写账单明细(非关键路径),将购买流程作为消息转发系统的生产者,在付款之后,调用消息转发系统的Saver,将写入账单明细以消息的形式先存到消息转发系统中,然后由消息转发系统将消息投递给消费者,即费用中心,如果短时间内费用中心由于出现问题导致消息无法被消费,那么消息转发系统会在之后进行重试,保证消息最终能到达费用中心并被成功消费,即成功写入账单明细。需要说明的是,生产者在将写账单明细作为消息发送给消息转发系统之后,消息转发系统可以响应该消息向生产者发送响应消息,以指示该写账单明细已成功完成,以便于生产者可以释放该写账单明细所占用的资源,继续处理其他流程。还需要说明的是,费用中心在接收到消息转发系统发送的写账单明细消息之后,可以响应该消息向消息转发系统发送响应消息,以通知消息转发系统成功接收到写账单明细消息,同时费用中心可以执行写账单明细,并将执行结果发送给消息转发系统。

第二个实例,如图6所示,可以将串行任务通过消息转发系统实现发货任务异步并行执行。在发货流程中,所有的发货任务是由发货发起方依次串行发起的,而每一个发货任务的耗时都比较长,导致需要等一个发货任务执行完了才能再发起另外一个任务。这里将发货任务的发起方作为消息转发系统的生产者,而发货任务的执行方则作为消费者,这样,生产者将发货需要的信息以消息的形式通过消息转发系统传递给消费者,消息转发系统在接收到生产者发送的消息之后,立即响应该消息向生产者发送响应消息,通知生产者该发货任务已完成,这样可以使得生产者无需等待发货任务完成就可以发起别的发货任务,间接地将发货任务并行化,实现效率的提升。

需要说明的是,该方案是通过消息转发系统,提升系统的可能性和稳定性,提升系统的整体性能和效率,其中用到的消息转发系统,作为一个部件,也可以有别的替代方案,比如通过消息队列也可以实现消息转发系统的能力。

该优选实施例能够将关键路径与非关键路径解耦,关键路径的可用性和稳定性得到了较高的提升,即使消费者出现问题,也能保证关键路径的成功执行,而非关键路径最终也能成功执行,提高了整个系统的可用性和稳定性。该实施例还可以将任务的串行通过消息转发系统实行了并行,提高了任务的整体执行效率,提升了用户体验。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

实施例2

根据本发明实施例,还提供了一种用于实施上述消息传输方法的消息传输装置。图7是根据本发明实施例的一种可选的消息传输装置的示意图,如图7所示,该装置可以包括:

第一接收单元22,用于接收第一节点发送的待处理消息,并响应待处理消息向第一节点发送响应消息,其中,待处理消息用于指示待执行的任务,响应消息用于在任务尚未被执行时指示第一节点任务已完成;发送单元24,用于将待处理消息发送给对应的第二节点,其中,第二节点用于执行任务;第二接收单元26,用于接收第二节点发送的任务处理结果,其中,任务处理结果用于指示任务已成功执行。

需要说明的是,该实施例中的第一接收单元22可以用于执行本申请实施例1中的步骤S202,该实施例中的发送单元24可以用于执行本申请实施例1中的步骤S204,该实施例中的第二接收单元26可以用于执行本申请实施例1中的步骤S206。

此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。

作为一种可选的实施例,如图8所示,发送单元24可以包括:第一发送模块242,用于通过消息转发系统中的第一接口模块将待处理消息发送给第二节点,其中,第一接口模块与第二节点之间预先建立有连接;第一接收模块244,用于通过第一接口模块接收第二节点响应于待处理消息发送的响应消息;断开连接模块246,用于断开第一接口模块与第二节点之间的连接。

作为一种可选的实施例,如图9所示,第二接收单元26可以包括:第二接收模块262,用于在断开第一接口模块与第二节点之间的连接之后,通过消息转发系统中的第二接口模块接收第二节点在执行完任务之后发送的任务处理结果。

作为一种可选的实施例,第二接口模块可以包括:多个分布式部署在不同设备上的接口模块,其中,如图10所示,第二接收模块262可以包括:第一接收子模块2622,用于通过多个分布式部署在不同设备上的接口模块中处于正常工作状态的一个接口模块,接收第二节点在执行完任务之后发送的任务处理结果,其中,第二接口模块为一个接口模块。

作为一种可选的实施例,第一接口模块可以包括:多个分布式部署在不同设备上的接口模块,其中,如图11所示,第一发送模块242可以包括:第一发送子模块2422,用于通过多个分布式部署在不同设备上的接口模块中处于正常工作状态的一个接口模块,将待处理消息发送给第二节点,其中,第一接口模块为一个接口模块。

作为一种可选的实施例,如图12所示,发送单元24可以包括:存储模块241,用于将待处理消息存储在数据库中;获取模块243,用于从数据库中获取待处理消息,其中,待处理消息的状态被标记为待推送;第二发送模块245,用于将待处理消息发送给与待处理消息的消息类型对应的第二节点。

作为一种可选的实施例,如图13所示,该实施例还可以包括:标记单元28,用于在将待处理消息发送给与待处理消息的消息类型对应的第二节点之后,当在预定时间段内未接收到第二节点发送的任务处理结果时,将数据库中的待处理消息的状态继续标记为待推送,以便重新将待处理消息发送给第二节点。

作为一种可选的实施例,数据库可以包括:多个分布式部署在不同设备上的数据库。

作为一种可选的实施例,如图14所示,第一接收单元22可以包括:第三接收模块222,用于通过消息转发系统中的第三接口模块接收第一节点发送的待处理消息,并响应待处理消息向第一节点发送响应消息。

作为一种可选的实施例,第三接口模块可以包括:多个分布式部署在不同设备上的接口模块,其中,如图15所示,第三接收模块222可以包括:第二接收子模块2222,用于通过多个分布式部署在不同设备上的接口模块中处于正常工作状态的一个接口模块,接收第一节点发送的待处理消息,并响应待处理消息向第一节点发送响应消息,其中,第三接口模块为一个接口模块。

此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。

通过上述模块,达到了异步处理任务的目的,进而解决了相关技术采用任务串行处理方式处理任务时,由于单个任务执行耗时较大,而造成后续任务堵塞的技术问题,从而实现了缩短执行任务的耗时,提高任务执行效率的技术效果。

实施例3

根据本发明实施例,还提供了一种用于实施上述消息传输方法的终端。

图16是根据本发明实施例的一种终端的结构框图,如图16所示,该终端可以包括:一个或多个(图中仅示出一个)处理器201、存储器203、以及传输装置205,如图16所示,该终端还可以包括输入输出设备207。

其中,存储器203可用于存储软件程序以及模块,如本发明实施例中的消息传输方法和装置对应的程序指令/模块,处理器201通过运行存储在存储器203内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的消息传输方法。存储器203可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器203可进一步包括相对于处理器201远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

上述的传输装置205用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置205包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置205为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。

其中,具体地,存储器203用于存储应用程序。

处理器201可以调用存储器203存储的应用程序,以执行下述步骤:接收第一节点发送的待处理消息,并响应待处理消息向第一节点发送响应消息,其中,待处理消息用于指示待执行的任务,响应消息用于在任务尚未被执行时指示第一节点任务已完成;将待处理消息发送给对应的第二节点,其中,第二节点用于执行任务;接收第二节点发送的任务处理结果,其中,任务处理结果用于指示任务已成功执行。

处理器201还用于执行下述步骤:通过消息转发系统中的第一接口模块将待处理消息发送给第二节点,其中,第一接口模块与第二节点之间预先建立有连接;通过第一接口模块接收第二节点响应于待处理消息发送的响应消息;断开第一接口模块与第二节点之间的连接。

处理器201还用于执行下述步骤:在断开第一接口模块与第二节点之间的连接之后,通过消息转发系统中的第二接口模块接收第二节点在执行完任务之后发送的任务处理结果。

处理器201还用于执行下述步骤:通过多个分布式部署在不同设备上的接口模块中处于正常工作状态的一个接口模块,接收第二节点在执行完任务之后发送的任务处理结果,其中,第二接口模块为一个接口模块。

处理器201还用于执行下述步骤:通过多个分布式部署在不同设备上的接口模块中处于正常工作状态的一个接口模块,将待处理消息发送给第二节点,其中,第一接口模块为一个接口模块。

处理器201还用于执行下述步骤:将待处理消息存储在数据库中;从数据库中获取待处理消息,其中,待处理消息的状态被标记为待推送;将待处理消息发送给与待处理消息的消息类型对应的第二节点。

处理器201还用于执行下述步骤:在将待处理消息发送给与待处理消息的消息类型对应的第二节点之后,当在预定时间段内未接收到第二节点发送的任务处理结果时,将数据库中的待处理消息的状态继续标记为待推送,以便重新将待处理消息发送给第二节点。

处理器201还用于执行下述步骤:通过消息转发系统中的第三接口模块接收第一节点发送的待处理消息,并响应待处理消息向第一节点发送响应消息。

处理器201还用于执行下述步骤:通过多个分布式部署在不同设备上的接口模块中处于正常工作状态的一个接口模块,接收第一节点发送的待处理消息,并响应待处理消息向第一节点发送响应消息,其中,第三接口模块为一个接口模块。

采用本发明实施例,提供了一种消息传输方案。通过在接收到第一节点发送的待处理消息时首先向第一节点返回用于指示待执行的任务已完成,然后可以将待处理消息发送给第二节点以通知第二节点执行该任务,并在第二节点成功执行完该任务之后接收第二节点返回的任务处理结果,达到了异步处理任务的目的,进而解决了相关技术采用任务串行处理方式处理任务时,由于单个任务执行耗时较大,而造成后续任务堵塞的技术问题,从而实现了缩短执行任务的耗时,提高任务执行效率的技术效果。

可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。

本领域普通技术人员可以理解,图16所示的结构仅为示意,终端可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图16其并不对上述电子装置的结构造成限定。例如,终端还可包括比图16中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图16所示不同的配置。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。

实施例4

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行消息传输方法的程序代码。

可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:

S1,接收第一节点发送的待处理消息,并响应待处理消息向第一节点发送响应消息,其中,待处理消息用于指示待执行的任务,响应消息用于在任务尚未被执行时指示第一节点任务已完成;

S2,将待处理消息发送给对应的第二节点,其中,第二节点用于执行任务;

S3,接收第二节点发送的任务处理结果,其中,任务处理结果用于指示任务已成功执行。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:通过消息转发系统中的第一接口模块将待处理消息发送给第二节点,其中,第一接口模块与第二节点之间预先建立有连接;通过第一接口模块接收第二节点响应于待处理消息发送的响应消息;断开第一接口模块与第二节点之间的连接。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在断开第一接口模块与第二节点之间的连接之后,通过消息转发系统中的第二接口模块接收第二节点在执行完任务之后发送的任务处理结果。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:通过多个分布式部署在不同设备上的接口模块中处于正常工作状态的一个接口模块,接收第二节点在执行完任务之后发送的任务处理结果,其中,第二接口模块为一个接口模块。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:通过多个分布式部署在不同设备上的接口模块中处于正常工作状态的一个接口模块,将待处理消息发送给第二节点,其中,第一接口模块为一个接口模块。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:将待处理消息存储在数据库中;从数据库中获取待处理消息,其中,待处理消息的状态被标记为待推送;将待处理消息发送给与待处理消息的消息类型对应的第二节点。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在将待处理消息发送给与待处理消息的消息类型对应的第二节点之后,当在预定时间段内未接收到第二节点发送的任务处理结果时,将数据库中的待处理消息的状态继续标记为待推送,以便重新将待处理消息发送给第二节点。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:通过消息转发系统中的第三接口模块接收第一节点发送的待处理消息,并响应待处理消息向第一节点发送响应消息。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:通过多个分布式部署在不同设备上的接口模块中处于正常工作状态的一个接口模块,接收第一节点发送的待处理消息,并响应待处理消息向第一节点发送响应消息,其中,第三接口模块为一个接口模块。

可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。

可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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