一种通信方法、系统和装置与流程

文档序号:15751716发布日期:2018-10-26 17:52阅读:178来源:国知局
一种通信方法、系统和装置与流程

本申请涉及通信领域,尤其涉及一种通信方法、系统和装置。



背景技术:

消息队列技术在应用系统通信、消息集成、异步解耦、削峰填谷等场景下广泛应用。从最早利用单台存储服务器存储消息,到现在利用多台存储服务器组成的分布式消息队列集群(以下简称集群)存储消息,利用集群能力,大大地提高了消息的可靠性、稳定性及服务能力。

通过集群,应用系统(以下简称应用)之间无需直接建立通信链路,而是以集群为中介,需要相互通信的不同应用各自链接到相同的集群,应用可以作为消费的发布者(producer),向集群的消息队列发送消息。应用也可以作为消费者(consumer),通过监测队列中是否存在新增消息,获取队列里面的消息并处理该消息。通过这样的发布、监测模式,实现了应用之间的解耦及异步通信。

上述的不同应用间通信是依赖一个相同的集群作为中介,在实际的业务场景下,随着业务需求的复杂化,用于应用间通信的集群已由单个演变为多个。例如多个数据中心、多个云服务供应商、多个业务集群之间等都需要多个集群共同用于应用间通信。如果部署在不同的数据中心或者不同业务集群之间的应用需要相互发送、接收消息,需要选定其中一个集群做中介进行通信,此时,需要“入侵”应用代码,将远程路由信息配置在应用中。另一方面,应用也逐渐发展为分布式部署的情况。例如,同一个应用分别部署在不同的数据中心或不同的公有云环境或者不同的业务集群。在上述场景中,如果不同应用选定了一个集群作为中介,也必然带来应用之间通信跨数据中心或跨业务集群等远程访问集群的性能问题。而且应用需要同时链接到多个集群,也会给应用带来路由选择处理复杂问题。

因此,如何解决应用路由选择处理过程复杂的问题成为亟待解决的问题。



技术实现要素:

本申请提供了一种通信方法、系统和装置,可以解决传统的技术方案中应用路由选择处理过程复杂的问题。

第一方面,提供一种通信系统,该通信系统至少包括第一数据中心和第二数据中心,第一数据中心包括第一消息代理,第一路由代理,业务服务器和至少一个存储服务器,业务服务器上运行有应用,存储服务器用于存储应用发送的消息。第一消息代理,用于接收第一应用的第一消息。当确定第一消息属于第二数据中心处理时,在第一消息中添加路由信息生成第二消息,将第二消息存储至存储服务器的公共区域。其中,存储服务器包括私有区域和公共区域,私有区域用于存储属于第一数据中心处理的消息,公共区域用于存储属于第二数据中心处理的消息。第一路由代理,则用于从上述公共区域获取第二消息,根据路由信息将第二消息发送至第二数据中心。

通过上述通信系统的描述,由第一消息代理接收应用发送的消息,将需要其他数据中心处理的消息中添加路由信息并存储至存储服务器的公共区域,由第一路由代理从公共区域获取添加路由信息后的消息,并发送至其他数据中心,进而完成应用间通信。本技术方案中应用的路由选择过程由消息代理和路由代理完成,应用不需要记录作为通信中介的消息队列集群信息,直接将消息发送给同一数据中心中的消息代理,由消息代理确认路由信息,并且由路由代理转发至远端数据中心,避免了应用确定路由的复杂过程。解决了传统的技术方案中应用路由选择处理复杂的问题,提升了应用间通信的效率,减少了应用间通信的时间。另一方面,本申请中由消息代理和路由代理完成应用消息的路由信息确认过程,无需应用参与,也不需要在应用中添加配置信息,避免了对应用代码“入侵”,提高了应用安全性。

在一种可能的实现方式中,存储服务器的公共存储区域包括第一消息队列,私有区域包括第二消息队列,则第一消息代理将第二消息存储至存储服务器的公共区域,具体为将第二消息存储至第二消息队列。

当目标消息队列集群为远端消息队列集群时,利用公共区域存储待处理消息,再由路由代理将该消息发送至其他数据中心的目标消息队列集群,实现了本地消息队列集群发、本地消息队列集群收、消费者决定路由的通信过程,解决了传统的技术方案中应用路由选择处理复杂的问题,提升了应用间通信的效率,减少了应用通信的时间。

在另一种可能的实现方式中,第一消息代理还用于在第一消息中添加路由信息生成第二消息之前,根据配置信息确定路由信息,所述配置信息包括不同数据中心中消息队列的标识、发送所述第一消息的所述应用的标识和处理所述第二消息的应用的标识的对应关系。

路由信息可以由第一消息代理根据配置信息确定,无需应用获取该配置信息。当第一消息代理接收到应用发送的消息时,根据该配置信息即可确定路由信息。

在另一种可能的实现方式中,通信系统还包括配置中心;该配置中心,用于存储配置信息。第一消息代理,还用于在接收业务服务器上运行的应用发送的第一消息之前,向配置中心获取所述配置信息。第一路由代理,还用于在从公共区域中获得所述第二消息之前,向配置中心获取配置信息。

可选地,配置信息也可以由第三方服务器记录和维护,相应地,第一消息代理和第一路由代理在接收业务服务器上应用发送的消息之前,先向第三方服务器获取配置信息。

可选地,配置信息还可以由数据中心中任意一个服务器记录和维护,相应地,第一消息代理和第一路由代理在接收业务服务器上应用发送的消息之前,先向该服务器获取配置信息。

配置中心主要用于记录和维护配置信息,第一消息代理可以从配置中心获取该配置信息,当接收到应用发送的消息时,可以根据配置信息确定路由信息,快速确定该消息的路由信息,不需要应用参与确定路由的过程。并且,当配置信息发生变化时,第一消息代理和第一路由代理可以在接收应用发送的消息前更新本地存储的配置信息,保证路由信息准确性,进而提升消息处理效率。

在另一种可能的实现方式中,第二数据中心中包括管理服务器,管理服务器用于管理第二数据中心中存储服务器,路由信息中包括管理服务器的互联协议ip地址,则第一路由代理根据路由信息将第二消息发送至第二数据中心,具体为根据管理服务器的ip地址将第二消息发送至管理服务器,以便于管理服务器将第二消息存储至第二数据中心中存储服务器。

消息代理确定的路由信息中可以包括第二数据中心中管理服务器的ip地址,路由代理可以依据该ip地址将消息发送至第二数据中心,进而由第二数据中心完成该消息的处理过程。

第二方面,本申请提供一种通信方法,该方法应用于通信系统,该通信系统至少包括第一数据中心和第二数据中心,第一数据中心包括第一服务器,第一消息代理,第一路由代理,业务服务器和存储服务器,业务服务器上运行有应用,存储服务器用于保存业务服务器上的应用发送的消息。该方法包括:第一服务器接收业务服务器上运行的应用发送的第一消息;当确定所述第一消息属于第二数据中心处理时,在第一消息中添加路由信息生成第二消息,将第二消息存储至存储服务器的公共区域,其中,存储服务器包括私有区域和所述公共区域,私有区域用于存储属于第一数据中心处理的消息,公共区域用于存储属于第二数据中心处理的消息;从公共区域中获得第二消息,并根据路由信息将第二消息发送至第二数据中心。

在一种可能的实现方式中,存储服务器的公共存储区域包括第一消息队列,私有区域包括第二消息队列,则第一服务器将第二消息存储至存储服务器的公共区域,包括:将第二消息存储至第二消息队列。

在另一种可能的实现方式中,第一服务器确定第一消息代理属于第二数据中心处理,包括:在第一消息中添加路由信息生成第二消息之前,根据配置信息确定路由信息,所述配置信息包括不同数据中心中消息队列的标识、发送第一消息的应用的标识和处理第二消息的应用的标识的对应关系。

在另一种可能的实现方式中,上述系统还包括配置中心,用于存储配置信息。在接收业务服务器上运行的应用发送的第一消息之前,第一服务器向配置中心获取配置信息。

在另一种可能的实现方式中,第二数据中心中包括管理服务器,管理服务器用于管理第二数据中心中存储服务器,路由信息中包括管理服务器的互联协议ip地址;则第一服务器根据路由信息将第二消息发送至第二数据中心,包括:根据管理服务器的ip将第二消息发送至管理服务器,以便于管理服务器将第二消息存储至第二数据中心中存储服务器。

第三方面,本申请提供一种通信装置,该通信装置应用于通信系统中,该通信系统至少包括第一数据中心和第二数据中心,第一数据中心包括存储服务器,第一消息代理模块,第一路由代理模块,业务服务器和存储服务器,所述业务服务器上运行有应用,所述存储服务器用于保存业务服务器上的应用发送的消息。其中,第一消息代理模块,用于执行第一方面及第一方面的任意一种可能的实现方式中第一消息代理实现的任一功能的操作步骤。第一路由代理模块,用于执行第一方面及第一方面的任意一种可能的实现方式中第一消息代理实现的任一功能的操作步骤。

第四方面,本申请提供一种通信装置,该通信装置应用于通信系统中,该通信系统至少包括第一数据中心和第二数据中心,第一数据中心包括存储服务器,第一消息代理模块,第一路由代理模块,业务服务器和存储服务器,所述业务服务器上运行有应用,所述存储服务器用于保存业务服务器上的应用发送的消息。其中,第一消息代理模块,用于执行第二方面及第二方面的任意一种可能的实现方式中第一消息代理实现的任一功能的操作步骤。第一路由代理模块,用于执行第二方面即第二方面的任意一种可能的实现方式中第一消息代理实现的任一功能的操作步骤。

第五方面,本申请提供一种服务器,该服务器包括处理器、存储器,所述处理器和存储器之间通过总线连接并完成相互间的通信,所述存储器中用于存储计算机执行指令,所述服务器运行时,所述处理器执行所述存储器中的计算机执行指令以利用所述服务器中的硬件资源执行第一方面或第一方面任一种可能实现方式中所述第一消息代理实现功能的操作步骤。

第六方面,本申请提供一种服务器,该服务器包括处理器、存储器,所述处理器和存储器之间通过总线连接并完成相互间的通信,所述存储器中用于存储计算机执行指令,所述服务器运行时,所述处理器执行所述存储器中的计算机执行指令以利用所述服务器中的硬件资源执行第一方面或第一方面任一种可能实现方式中所述第一路由代理实现功能的操作步骤。

第七方面,本申请提供一种服务器,该服务器包括处理器、存储器,所述处理器和存储器之间通过总线连接并完成相互间的通信,所述存储器中用于存储计算机执行指令,所述服务器运行时,所述处理器执行所述存储器中的计算机执行指令以利用所述服务器中的硬件资源执行第二方面或第二方面任一种可能实现方式中所述方法的操作步骤。

第八方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行第五方面或第五方面任意一种可能的实现方式中所述的操作步骤。

第八方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行第六方面或第六方面任意一种可能的实现方式中所述的操作步骤。

第九方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行第七方面或第七方面任意一种可能的实现方式中所述的操作步骤。

本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。

附图说明

图1为本申请提供的一种传统的基于消息队列集群通信的系统的架构示意图。

图2为本申请提供的一种基于消息队列集群通信的系统的架构示意图。

图3为本申请提供的另一种基于消息队列集群通信的系统的架构示意图。

图4为本申请提供的一种基于消息队列集群通信的方法流程示意图。

图5为本申请提供的另一种基于消息队列集群通信的方法流程示意图。

图6为本申请提供的一种基于消息队列集群通信的装置的结构示意图。

图7为本申请提供的一种服务器的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚描述。

为更好的介绍本申请实施例提供的基于消息队列集群通信的方法,首先,结合图1介绍传统的应用间通信的系统和方法。

图1为一种传统的通信系统的架构示意图。如图所示,该系统中包括数据中心100和数据中心200。每个数据中心中包括至少一个业务集群和至少一个消息队列集群。业务集群用于部署不同应用系统(以下简称应用)。具体地,每个业务集群中包括至少一个服务器,每个服务器用于部署至少一个应用,业务集群中服务器也可以称为业务服务器。消息队列集群用于作为同一个数据中心不同应用,以及不同数据中心的不同应用之间通信的中介。消息队列集群中服务器也可以称为存储服务器,用于临时存储应用发送的消息。同一个消息队列集群中可以包括至少一个存储服务器,每个存储服务器中包括公共区域和私有区域。私有区域包括至少一个消息队列(可以将每个消息队列称为第一消息队列),上述至少一个消息队列用于存储属于本数据中心处理的消息。公共区域包括至少一个消息队列(可以将每个消息队列称为第二消息队列),该至少一个消息队列用于存储属于其他数据中心处理的消息,公共区域中的消息队列也可以称为公共消息队列。在本实施例中,为了描述方便,将包含一个或多个业务服务器的集群称为业务集群,将包含消息队列的一个或多个存储服务器的集群称为消息队列集群。同一个数据中心中可以包括至少一个消息队列集群。例如,可以根据具体业务需求,在同一数据中心中配置两个或两个以上消息队列集群,每个消息队列集群用于作为指定应用的通信中介。图1示出的数据中心中,以每个数据中心包括一个业务集群和一个消息队列集群为例。其中,数据中心100中包括业务集群1和消息队列集群1。业务集群1中包括服务器101和服务器102,服务器101上部署应用1,服务器102上部署应用2和应用3。数据中心200包括业务集群2和消息队列集群2。业务集群2中包括服务器201和服务器202,服务器201上部署应用4和应用1,服务器202上部署应用5。

值得说明的是,应用可以采用单点部署方式,也可以采用分布式部署方式。例如,图1中应用2、应用3、应用4和应用5采用单点部署方式,分别部署在一个服务器中。应用1采用分布式部署,分别在数据中心100的服务器101和数据中心200的服务器201。

消息队列集群用于不同应用进行消息交互,当两个应用通信时,需要选择一个公共的消息队列集群作为中介,相互通信的不同应用需要各自链接到相同的消息队列集群。一个应用可以作为消费的发布者(producer),向消息队列集群的队列发送消息,另一个应用可以作为消费者(consumer)。应用与消息队列之间存在关联关系,应用通过监测指定队列中是否存在新增消息,获取队列里面的消息。示例地,应用与消息队列集群中指定队列之间通过“长链接”形式通信,即应用始终监控指定消息队列的状态,当该消息队列中新增待处理的消息时,应用获取该消息并完成处理。

上述不同应用间通信是依赖一个相同的集群作为中介,在实际的业务场景下,随着业务需求的复杂化,用于应用间通信的集群已由单个演变为多个。例如,多个数据中心、多个云服务供应商之间等都需要多个集群共同用于应用间通信。如果部署在不同的数据中心或者不同业务集群之间的应用需要相互发送、接收消息,需要选定其中一个消息队列集群做中介进行通信。与此同时,应用也逐渐发展为分布式部署的情况。例如,同一个应用分别部署在不同的数据中心或不同的公有云环境或者不同的业务集群。在上述场景中,如果不同应用选定了一个消息队列集群作为中介,也必然带来应用之间通信跨数据中心或跨云等远程访问消息队列集群的性能问题。而且应用需要同时链接到多个集群,也会给应用带来路由选择处理复杂的问题。

值得说明的是,在应用通信过程中,对于路由代理和消息代理,与其在同一数据中心的消息队列集群称为本地消息队列集群,与其不在同一数据中心的消息队列集群称为远端消息队列集群。当处理消息的应用与发送消息的应用不在同一个数据中心时,也可以将处理该消息的应用所在数据中心称为远端数据中心或其他数据中心。

为了解决上述问题,本申请提供一种基于消息队列集群通信的方法。把多个消息队列集群进行组网,应用只需要连接到本地消息队列集群,消息可以根据消费者所链接的集群实现路由,达到本地发、本地收的目的,解决应用间通信系统远程访问远端消息队列集群所带来的性能问题,也避免了应用路由选择、代码入侵的问题。其中,图1中消息队列是一种存储消息的形式,也可以利用其他形式存储消息,例如,链表或数据库。为便于描述,本申请实施例的以下内容以消息队列存储消息为例进一步解释本申请实施例提供的技术方案。

每个路由代理和消息代理在启动时获取系统的配置信息。应用直接与同一数据中心的消息代理通信,由消息代理根据其从配置中心获取的配置信息,确定目标消息队列集群的路由信息;当目标消息队列集群包括其他数据中心的消息队列时,消息代理在消息中添加路由信息生成新的消息,并将该新的消息存储至公共消息队列。当路由代理监测到公共消息队列存在待处理的消息时,则根据该新的消息中路由信息将该新的消息发送至其他数据中心,再由该数据中心的消息队列集群存储该新的消息,最终,由目标应用获取该新的消息并进行处理,以此解决传统的技术方案中应用间远程访问效率低,路由选择处理复杂和耗时长的问题。

可选地,基于消息队列集群通信的系统中还可以包括配置中心(configurationcenter,cc)。配置中心作为全球统一的配置中心,用于记录不同数据中心中消息队列的标识、发送所述第一消息的所述应用的标识和处理所述第二消息的应用的标识的对应关系。每个路由代理和消息代理在启动时也可以从配置中心获取配置信息。

接下来,结合图2和图3进一步介绍本申请实施例提供的一种基于消息队列集群通信的方法。

图2为本申请实施例提供的一种基于消息队列集群通信的系统的架构示意图。在基于消息队列集群通信的系统中增加消息代理(messageproxy,mp)和路由代理(routingproxy,rp)。其中,消息代理可以部署在一个独立的服务器中,用于接收应用的消息,以及确定路由信息。路由代理可以部署在一个独立的服务器中,用于将其他数据中心处理的消息发送至目标数据中心。消息代理和路由代理也可以部署在同一个服务器中。在每个数据中心中配置有一个消息代理和一个路由代理。消息代理和消息队列集群为一对一的关系,即一个消息队列集群对应一个消息代理。路由代理和本地消息队列集群为一对一关系,与远端消息队列集群为一对多关系,即每个本地消息队列集群对应一个路由代理,每个路由代理对应多个远端消息队列集群。图2与图1的区别在于,图2中每个数据中心新增一个消息代理和一个路由代理。例如,数据中心1中包括第一消息代理和第一路由代理。数据中心2中包括第二消息代理和第二路由代理。图2与图1的区别还在于消息队列集群中新增公共消息队列,用于存储需要其他数据中心的消息队列集群处理的消息。

可选地,图2中新增一个记录配置信息的配置中心。配置中心可以部署在任意一个数据中心,各个数据中心的消息代理和路由代理分别与其通信,以便于消息代理和路由代理获取和更新配置信息。其中,配置中心、消息代理和路由代理可以分别由不同的服务器部署。

作为一个可能的实施例,图3为本申请实施例提供的另一种系统架构的示意图,配置中心、消息代理和路由代理可以为在服务器中增加的代理(agent),其本质上为一个软件模块,也可以制作成协处理器,并将该协处理器安装在不同服务器中。此时,第一消息代理和第一路由代理可以安装在一台服务器中,配置中心安装在另一台服务器中。可选地,配置中心、消息代理和路由代理也可以由同一个服务器部署。

可选地,除了利用图2和图3所示的系统中配置中心记录配置信息外,也可以由第三方服务器获取并记录不同数据中心中消息队列的标识、发送所述第一消息的所述应用的标识和处理所述第二消息的应用的标识的对应关系,该第三方服务器不属于任意一个数据中心,但其可以与数据中心中任意一台服务器进行通信。或者,由数据中心中任意一台服务器获取并记录不同数据中心中消息队列的标识、发送所述第一消息的所述应用的标识和处理所述第二消息的应用的标识的对应关系,该服务器可以与各数据中心的服务器进行通信。

应理解的是,图2和图3所示的系统中数据中心的数量,每个数据中心的业务集群中服务器的数量,以及每个服务器中部署应用的数量均不构成对本申请的限定。本申请的以下描述中,仅以该系统中包括两个数据中心,每个数据中心中包括一个业务集群和一个消息队列集群为例进行介绍。为便于后续描述,本申请实施例的以下描述中以图2所示系统为例进行描述。

图4为本申请实施提供的一种基于消息队列集群通信的方法的流程示意图。如图4所示,该方法包括:

s401、第一消息代理接收至少一个应用发送的第一消息。

如图2所示,第一消息代理为数据中心100中接收应用消息的消息代理。本申请实施例中,数据中心100中的应用不在与消息队列集群直接通信,而是将消息全部发送至第一消息代理,由第一消息代理负责将消息存储至消息队列集群的消息队列。第一消息为至少一个应用发送的消息。

可选地,第一消息中可以携带应用标识(identification)。

当同一数据中心包括多个消息队列集群时,每个消息队列集群会配置至少一个消息代理。应用可以按照业务需求跟一个消息代理建立关联关系,所有该应用的消息均由与之建立关联关系的消息代理处理。

s402、第一消息代理根据配置信息确定目标消息队列集群的路由信息。

具体地,目标消息队列集群的路由信息用于标识应用间预先约定的通信中介。第一消息代理可以根据配置信息中生产者和消费者的关系确定路由信息。配置中心中预置配置信息,包括不同数据中心中消息队列的标识、发送所述第一消息的所述应用的标识和处理所述第二消息的应用的标识的对应关系。该配置信息可以由维护人员预先通过接口(例如api)根据业务需求配置。

示例地,表1为一种配置信息的示例。如表所示,配置信息中记录了每个应用关联的不同数据中心消息队列的标识。各个应用在消息传输过程中角色,例如,如果假设应用1发送的第一消息,应用2、应用3、应用4和应用5需要接收该消息并处理,则应用1为生产者,应用2、应用3、应用4和应用5为消费者。

表1一种配置信息的示例

可选地,表1中消息队列集群的标识还可以是消息队列集群中管理服务器的互联网协议(internetprotocol,ip)地址。

配置信息可以由维护人员按照预置规则配置。具体地,预置规则可以为以下规则中任意一种:

规则一:按照应用的类型,将一个或多个应用绑定至一个消息队列。

例如,如表1所示,将应用1的类型生产者(producer)消息存储至消息队列1。将应用2的类型为生产者的消息存储至消息队列2。此时,若第一消息代理接收到应用1发送的消息,则会将该消息存储至消息队列集群1的消息队列1。若第一消息代理接收到应用2发送的消息,则会将该消息存储至消息队列集群1的消息队列2。

值得说明的是,配置信息中生产者类型的应用表示该应用是发送消息的应用,消费者类型的应用表示该应用是处理该消息的应用。同一个生产者角色的应用可以对应一个或多个消费者角色的应用。

可选地,配置信息中还可以包括配置组。当多个应用同时绑定一个消息队列或存在多个生产者角色的应用时,表1所示配置信息可以理解为包含多个配置组,每个配置组中包括一个应用为生产者类型时所对应的消费者类型应用的信息。

示例地,表2为另一种配置信息的示例。表2示出了将每个应用作为生产者时配置不同配置组的一种示例。例如,将应用1为生产者时的配置定义为配置组1,将应用2为生产者时的配置定义为配置组2。

表2一种配置信息的示例

规则二:按照应用的业务优先级,将一个或多个应用绑定至一个消息队列。

例如,将高优先级应用发送的消息存储至一个或多个队列,将低优先级应用发送的消息存储至其他队列。每个队列中再去区分不同类型。

第一消息代理在初始化阶段,会向配置中心获取该配置信息,并将该配置信息存储至第一消息代理的存储空间。例如,存储在第一消息代理所在服务器的内存中。当系统中不同数据中心中消息队列的标识、发送所述第一消息的所述应用的标识和处理所述第二消息的应用的标识的对应关系发送变更时,配置中心可以主动通知第一消息代理配置信息更新,第一消息代理获取更新后的配置信息,并存储在第一消息代理所在服务器的存储设备(例如,内存)中。可选地,第一消息代理也可以通过周期性监测判断配置信息是否更新,当系统中不同数据中心中消息队列的标识、发送所述第一消息的所述应用的标识和处理所述第二消息的应用的标识的对应关系发生变更时,主动获取更新更新后的配置信息,并存储在第一消息代理所在服务器的存储设备中。

与第一消息代理类似,第一路由代理在初始化阶段,会向配置中心获取该配置信息,并将该配置信息存储至第一路由代理的存储空间,例如,存储在第一路由代理所在服务器的存储设备(例如,内存)中。当系统中不同数据中心中消息队列的标识、发送所述第一消息的所述应用的标识和处理所述第二消息的应用的标识的对应关系发生变更时,配置中心可以主动通知第一路由代理配置信息更新,第一路由代理获取更新后的配置信息,并存储在第一路由代理所在服务器的存储设备中。可选地,第一路由代理也可以通过周期性监测判断配置信息是否更新,当系统中不同数据中心中消息队列的标识、发送所述第一消息的所述应用的标识和处理所述第二消息的应用的标识的对应关系发生变更时,主动获取更新更新后的配置信息,并存储在第一路由代理所在服务器的内存中。

可选地,当配置信息由第三方服务器或数据中心中任意一台服务器存储时,第一消息代理和第一路由代理会在初始化阶段获取配置信息,并在配置信息更新时,重新获取更新后的配置信息。

进一步地,消息代理可以根据配置信息确定目标消息队列集群的路由信息。具体为利用第一消息中携带的应用标识与配置信息比较分别确定消费者角色的应用,以及消费者角色应用匹配的消息队列集群。例如,如表1所示的配置信息,应用1与应用2预先协商通过消息队列集群1的消息队列1进行通信,当第一消息代理收到应用1发送的消息时,可以将第一消息存储至数据中心1的消息队列集群1的消息队列1中。当应用的消费者在其他数据中心时,需要利用远端消息队列集群作为中介时,消息代理还可以确定目标消息队列集群的标识。例如,如表1所示,第一消息代理确定接收消息的应用可以为应用2、应用3、应用4和应用5。其中,应用1与应用2、应用3通信时,可以通过数据中心1的消息队列集群1作为中介进行消息交互;应用1与应用4和应用5通信时,可以通过数据中心2的消息队列集群2作为中介进行消息交互,此时,目标消息队列集群的标识为数据中心2的消息队列集群2。第一消息代理将第一消息存储至消息队列1的过程包括:第一消息队列向目标消息队列集群的管理服务器发送第一消息,管理服务器根据第一消息中应用的标识和消息队列的对应关系确定目标消息队列为消息队列1,再将第一消息存储至消息队列1。

作为一个可能的实施例,第一消息中也可以携带目标消息队列的标识。应用中存储有应用与消息队列对应关系。当第一消息代理接收第一消息时,可以根据消息配置信息确定消费者,并将该消息发送至目标消息队列集群的目标消息队列。

s403、当目标消息队列集群为其他数据中心中的消息队列集群时,第一消息代理在第一消息中添加目标消息队列集群的标识,生成第二消息,并将第二消息存储至本地集群的公共消息队列。

两个应用之间的通信需要通过预先协商的同一个消息队列集群(即目标消息队列集群)作为中介。第一消息代理确定第一消息的路由信息时,具体包括以下三种情况中任意一种:

情况一:当目标消息队列集群与发送第一消息的应用归属同一个数据中心的时,目标消息队列集群也可以称为本地消息队列集群,第一消息被存储在本地消息队列集群的消息队列中。消息队列集群直接将待处理的消息发送给该消息的消费者类型的应用。具体可以为消息队列集群中队列管理器监测各个消息队列中待处理消息的状态,此时,消息队列管理服务器中存储有配置信息,当监测到消息队列存在待处理消息时,可以根据配置信息将消息发送给消费者角色的应用。可选地,每个应用还可以直接监控与其匹配的本地消息队列集群中消息队列,当监测到消息队列中存在新增待处理的消息时,获取并处理该消息。在上述消息的消费者获取消息的过程中,应用之间通信不涉及跨数据中心的远程消息队列集群的处理过程。

情况二:当目标消息队列集群为其他数据中心的消息队列集群时,第一消息代理根据配置信息确定目标消息队列集群的标识,此时,目标消息队列集群也可以称为远端消息队列集群。第一消息代理在第一消息中添加目标消息队列集群的标识,生成第二消息。其中,目标消息队列集群的标识包括目标消息队列集群的ip地址,具体为目标消息队列集群的管理服务器的ip。可选地,目标消息队列集群的标识还可以包括目标消息队列集群的标识(identification)。然后,第一消息代理再将第二消息存储至公共消息队列。其中,公共消息队列为本申请实施例新增的队列类型,公共消息队列主要用于存储需要其他数据中心的消息队列集群作为中介的消息。公共消息队列的消息存储至消息队列集群的服务器(也称为存储服务器)的存储空间中,该存储空间也可以称为消息队列集群中存储服务器的公共区域。该存储空间可以为服务器的内存或硬盘。其中,公共消息队列也是一个逻辑概念,公共消息队列中包括至少一个单元,每个单元对应消息队列集群的服务器的一段存储空间,该段存储空间可以是连续的存储区域,也可以是不连续的存储区域。不同单元之间可以通过地址指针连接,即当前的单元中携带地址指针,该地址指针用于指示在公共消息队列中下一个单元的存储空间的起始位置。另外,公共消息队列可以按照先进先出(firstinputfirstoutput,fifo)的方式存储消息,即按照时间先后顺序,首次收到的消息先存储至公共消息队列的队列头的单元,后面收到的消息,按照接收顺序依次存储至公共消息队列中。路由代理也可以按照fifo的方式依次取走公共消息队列中每个单元中存储的消息。当公共消息队列的一个单元中存储的消息时,该单元可以继续存储新的消息,即公共消息队列的资源也是可以循环利用。

情况三:当目标消息队列集群即包括与应用归属同一个数据中心的消息队列集群,又包括其他数据中心的消息队列集群时,第一消息代理在确定路由信息后,按照情况一的方式将第一消息存储至本地消息队里集群的目标消息队列中。然后,复制第一消息,并在复制后的第一消息中添加路由信息(指示远端消息队列集群的标识)生成第二消息,再将第二消息存储至公共消息队列。

值得说明的是,情况三中,第一消息队列将第一消息存储至本地消息队列集群到本地队列,以及生成第二消息并将第二消息存储至公共消息队列的过程无顺序要求,可以先将第一消息存储至本地消息队列集群到本地队列,再生成第二消息并将第二消息存储至公共消息队列。也可以先生成第二消息并将第二消息存储至公共消息队列,再将第一消息存储至本地消息队列集群到本地队列。

s404、当第一路由代理监测到公共消息队列存在待处理的消息时,从公共消息队列获取第二消息。

第一路由代理可以通过与消息队列集群通信,获知公共消息队列中是否存在待处理的消息,具体可以通过消息队列集群的管理器通信。

第一路由代理监控公共消息队列的方式可以采用以下方式中任意一种:

方式一:第一路由代理周期性监测公共消息队列的状态。

方式二:当公共消息队列中存在待处理的消息时,消息队列集群通知第一路由代理。

s405、第一路由代理获取第二消息中目标消息队列集群的标识,根据路由信息将第二消息发送至其他数据中心。

具体地,第一路由代理根据路由信息将第二消息发送至其他数据中心的目标消息队列集群。目标消息队列集群的队列管理器可以继续将该第二消息存储至指定消息队列。具体为目标消息队列集群的队列管理服务器根据第二消息中携带的应用标识和配置信息确定目标消息队列。并将第二消息存储至目标消息队列中。然后,再由队列管理器按照配置信息将第二消息发送至消费者角色的应用。

其中,由于不同数据中心的消息代理都获取同一份配置信息,消息队列、应用、消费者和生产者之间的对应关系是相同的。换句话说,在图2所示的系统中,数据中心100中消息队列集群1中消息队列的数量和标识,以及数据中心200中消息队列集群2中消息队列的数量和标识是相同的,而且,每个消息队列和应用的绑定关系也是相同的。目标消息队列集群的队列管理服务器中也可以存储配置信息,当目标消息队列集群接收到第二消息时,目标消息队列集群的队列管理服务器可以直接按照对应关系将第二消息存储至指定消息队列中。然后再依次按照配置信息中记录的类型将第二消息逐一发送给消费者类型的应用。

可选地,第二消息中还可以携带目标消息队列的标识。目标消息队列集群的队列管理器可以直接根据目标消息队列的标识将第二消息存储至目标消息队列。

值得说明的是,消息队列集群中如何存储消息的过程为现有技术,可以由消息队列集群中队列管理服务器控制消息存储的方式,本发明不作限制。

基于消息队列集群的消息传输方式中,生产者发送的消息中不携带消费者标识,换句话说,消息传输的目的端即为配置信息中所记录的消费者。例如,如表1所示的配置信息中,当应用1发送消息时,该消息会被传输给应用2、应用3、应用4和应用5。当应用2送消息时,该消息会被传输给应用1和应用4。可选地,应用发送的消息中也可以携带目标应用的标识,那么,消息代理只需要根据配置信息确定发送消息的应用和目的端应用通信的消息队列集群标识。当该消息队列集群为远端消息队列集群时,再按照步骤s403至s405的步骤操作即可。

接下来,作为一个示例,以图2所示系统和表1所示配置信息为例完整介绍本申请实施例提供的基于消息队列集群通信的方法。当应用1需要与其他应用通过消息1通信时,消息1会被第一消息代理接收,第一消息代理根据表1所示配置信息确定消费者为应用2,应用3,应用4和应用5,应用1与应用2,以及应用3归属于同一个数据中心,可以直接通过消息队列集群1作为通信的中介,应用1与应用4和应用5归属于不同数据中心,应用1与应用4和应用5需要通过消息队列集群2作为通信的中介。第一消息代理首先根据该配置信息将消息1存储至消息队列集群1的消息队列1中。此时,消息队列集群(具体为消息队列管理器1的队列管理器)可以将消息1发送给应用2和应用3,或者,应用2和应用3监控消息队列1存在待处理的消息时,直接获取消息2。而对于应用1与应用4和应用5之间的通信,第一消息代理需要根据配置信息确定目标消息队列集群的标识,即消息队列集群2的id或ip地址,然后,复制消息1,并将消息队列集群2的标识添加至复制后的消息1中,生成消息2,并将消息2存储至公共消息队列,再将消息2发送至消息队列集群2(具体为消息队列集群2的队列管理器),由消息队列集群2(具体为消息队列集群2的队列管理器)将消息2发送给应用4和应用5,以此,完成应用1与应用4和应用5的通信。

通过上述内容的描述,本申请实施例提供的技术方案,通过在每个数据中心增加消息代理和路由代理,应用直接与消息代理通信,由消息代理根据预置配置信息确定目标消息队列集群的路由信息。当目标消息队列集群为远端消息队列集群时,消息代理复制该消息,并在复制后的消息中添加目标消息队列集群的标识,最终由路由代理负责将该消息发送至目标消息队列集群。本技术方案不需要应用确认消息发送的路由信息,由消息代理负责确认路由信息,路由代理转发消息至目标消息队列集群。实现了本地消息队列集群发、本地消息队列集群收、消费者决定路由的通信过程,解决了传统的技术方案中应用路由选择处理过程复杂的问题,提升了应用间通信的效率,减少了应用通信的时间。另一方面,本申请实施例中由消息代理和路由代理完成应用消息的路由信息确认和转发过程,无需应用参与,也不需要在应用中添加配置信息,避免了对应用代码“入侵”,提高了应用安全性。进一步地,当用于不同应用通信的消息队列集群变更时,不需要更改应用中路由配置信息,降低了运维的复杂度和处理时长,提升了运维效率。

作为一个可能的实施例,本申请提供的基于消息队列集群通信的方法同样适用于分布式应用部署的场景。具体地,如图2中应用1采用分布式部署方式,分别部署在数据中心100的业务集群1,以及数据中心200的业务集群2,假设该应用为主备部署方式,同一时间仅有一个主用状态的应用工作。当数据中心100中应用1为主用状态的应用,且应用1需要与同一数据中心中应用2进行通信时,应用1发送的消息可以通过第一消息代理接收,由第一消息代理根据预置配置信息确定将该消息存储至消息队列集群1的消息队列2中,应用2作为消费者接收该消息,以此完成应用1和应用2的通信。当数据中心200中应用1为主用状态的应用,且应用1需要与不同数据中心中应用2进行通信时,第二消息代理接收应用1的消息,在消息中添加目的消息队列集群的标识,即在消息中添加消息队列集群1的标识生成第二消息,将第二消息存储至消息队列集群2的公共消息队列中,由第二路由代理将第二消息发送至消息队列集群1(具体为消息队列集群1的队列管理器),再由消息队列集群1的队列管理器将第二消息发送至应用2,以此,完成应用1和应用2的通信。

通过上述内容的描述,在应用动态部署的场景中,路由规则可以动态调整,主用状态的应用的位置变更不需要更改路由配置信息,也不需要“入侵”应用代码,解决了传统技术方案中运维难和安全的问题,提升系统通信效率。

值得说明的是,对于上述方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制。

上文中结合图1至图4,详细描述了根据本申请实施例所提供的通信系统和方法,下面将结合图5至图7,描述根据本申请实施例所提供的通信装置。

图5为本申请实施例提供的一种通信装置500的结构示意图。如图所示,通信装置600应用于通信系统中,所述通信系统至少包括第一数据中心和第二数据中心,所述第一数据中心包括存储服务器,第一消息代理模块501,第一路由代理模块502,业务服务器和存储服务器,所述业务服务器上运行有应用,所述存储服务器用于保存业务服务器上的应用发送的消息;

所述第一消息代理模块501,用于接收所述业务服务器上运行的应用发送的第一消息;当确定所述第一消息属于所述第二数据中心处理的消息时,在所述第一消息中添加路由信息生成第二消息,将所述第二消息存储至所述存储服务器的公共区域,所述存储服务器包括私有区域和所述公共区域,其中,所述私有区域用于存储属于所述第一数据中心处理的消息,所述公共区域用于存储属于所述第二数据中心处理的消息;

所述第一路由代理模块502,用于从所述公共区域中获得所述第二消息;根据所述路由信息将所述第二消息发送至所述第二数据中心。

可选地,所述存储服务器的所述公共区域包括第一消息队列,所述私有区域包括第二消息队列,则所述第一消息代理模块501将所述第二消息存储至存储服务器的公共区域,包括:将所述第二消息存储至第二消息队列。

可选地,所述第一消息代理模块501,还用于在所述第一消息中添加路由信息生成第二消息之前,根据配置信息确定所述路由信息,所述配置信息包括不同数据中心中消息队列的标识、发送所述第一消息的所述应用的标识和处理所述第二消息的应用的标识的对应关系。

可选地,所述通信系统还包括配置中心;所述配置中心,用于存储所述配置信息;

所述第一消息代理模块501,还用于在接收所述业务服务器上运行的应用发送的第一消息之前,向所述配置中心获取所述配置信息;

所述第一路由代理模块502,还用于在从所述公共区域中获得所述第二消息之前,向所述配置中心获取所述配置信息。

可选地,所述第二数据中心中包括管理服务器,所述管理服务器用于管理所述第二数据中心中存储服务器,所述路由信息中包括管理服务器的互联协议ip地址,则所述第一路由代理模块502根据所述路由信息将所述第二消息发送至所述其他数据中心,包括:根据所述管理服务器的ip地址将所述第二消息发送至管理服务器,以便于所述管理服务器将所述第二消息存储至所述第二数据中心中的存储服务器。

应理解的是,本申请实施例的通信装置600对应图2所示的通信系统架构中,第一消息代理和第二消息代理分别由不同的服务器实现的场景。本申请实施例的通信装置500可以通过专用集成电路(application-specificintegratedcircuit,asic)实现,或可编程逻辑器件(programmablelogicdevice,pld)实现,上述pld可以是复杂程序逻辑器件(complexprogrammablelogicaldevice,cpld),现场可编程门阵列(field-programmablegatearray,fpga),通用阵列逻辑(genericarraylogic,gal)或其任意组合。也可以通过软件实现图2至图3所示的通信方法时,通信装置500及其各个模块也可以为软件模块。

根据本申请实施例的通信装置500可对应于执行本申请实施例中描述的方法,并且通信装置500中的各个单元的上述和其它操作和/或功能分别为了实现图2至图3中的各个方法的相应流程,为了简洁,在此不再赘述。

图6为本申请实施例提供的另一种通信装置600的结构示意图。通信装置600应用于通信系统中,所述通信系统至少包括第一数据中心和第二数据中心,所述第一数据中心包括存储服务器,业务服务器和存储服务器,所述业务服务器上运行有应用,所述存储服务器用于保存业务服务器上的应用发送的消息。如图所示,通信装置600包括接收单元601,处理单元602和发送单元603;

接收单元601,用于接收所述业务服务器上运行的应用发送的第一消息;

处理单元602,用于当所述第一服务器确定所述第一消息属于所述第二数据中心处理时,在所述第一消息中添加路由信息生成第二消息,将所述第二消息存储至所述存储服务器的公共区域,所述存储服务器包括私有区域和所述公共区域,其中,所述私有区域用于存储属于所述第一数据中心处理的消息,所述公共区域用于存储属于所述第二数据中心处理的消息;

发送单元603,用于从所述公共区域中获得所述第二消息,并根据所述路由信息将所述第二消息发送至所述第二数据中心。

可选地,所述存储服务器的所述公共区域包括第一消息队列,所述私有区域包括第二消息队列,则所述处理单元602将所述第二消息存储至存储服务器的公共区域,包括:将所述第二消息存储至所述第二消息队列。

可选地,所述处理单元602确定所述第一消息代理属于所述第二数据中心处理,包括:在所述第一消息中添加路由信息生成第二消息之前,根据配置信息确定所述路由信息,所述配置信息包括不同数据中心中消息队列的标识、发送所述第一消息的所述应用的标识和处理所述第二消息的应用的标识的对应关系。

可选地,所述通信系统还包括配置中心,所述配置中心用于存储所述配置信息;在接收所述业务服务器上运行的应用发送的第一消息之前,所述处理单元602,还用于向所述配置中心获取所述配置信息。

可选地,所述第二数据中心中包括管理服务器,所述管理服务器用于管理所述第二数据中心中存储服务器,所述路由信息中包括管理服务器的互联协议ip地址;则所述发送单元603根据所述路由信息将所述第二消息发送至所述第二数据中心,包括:根据所述管理服务器的ip将所述第二消息发送至管理服务器,以便于所述管理服务器将所述第二消息存储至所述第二数据中心中的存储服务器。

应理解的是,本申请实施例的通信装置600对应图3所示的通信系统架构中,第一消息代理和第二消息代理由同一个服务器实现的场景。通信装置600可以通过专用集成电路(application-specificintegratedcircuit,asic)实现,或可编程逻辑器件(programmablelogicdevice,pld)实现,上述pld可以是复杂程序逻辑器件(complexprogrammablelogicaldevice,cpld),现场可编程门阵列(field-programmablegatearray,fpga),通用阵列逻辑(genericarraylogic,gal)或其任意组合。也可以通过软件实现图2至图3所示的通信方法时,通信装置600及其各个模块也可以为软件模块。

根据本申请实施例的通信装置600可对应于执行本申请实施例中描述的方法,并且通信装置600中的各个单元的上述和其它操作和/或功能分别为了实现图2至图3中的各个方法的相应流程,为了简洁,在此不再赘述。

图7为本申请实施例提供的一种服务器700的示意图,如图所示,所述服务器700包括处理器701、存储器702、通信接口703和总线704、存储设备705。其中,处理器701、存储器702、通信接口703、存储设备705通过总线704进行通信,也可以通过无线传输等其他手段实现通信。该存储器702用于存储指令,该处理器701用于执行该存储器702存储的指令。该存储器702存储程序代码,且处理器701可以调用存储器702中存储的程序代码执行以下操作:

接收所述业务服务器上运行的应用发送的第一消息;

当确定所述第一消息属于所述第二数据中心处理时,在所述第一消息中添加路由信息生成第二消息,将所述第二消息存储至所述存储服务器的公共区域,所述存储服务器包括私有区域和所述公共区域,其中,所述私有区域用于存储属于所述第一数据中心处理的消息,所述公共区域用于存储属于所述第二数据中心处理的消息;

从所述公共区域中获得所述第二消息,并根据所述路由信息将所述第二消息发送至所述第二数据中心。

可选地,所述存储服务器的所述公共存储区域包括第一消息队列,所述私包括第二消息队列,则所述处理器701将所述第二消息存储至存储服务器的公共区域,包括:将所述第二消息存储至第二消息队列中任意一个消息队列。

可选地,所述处理器701确定所述第一消息代理属于所述第二数据中心处理,包括:在所述第一消息中添加路由信息生成第二消息之前,根据配置信息确定所述路由信息,所述配置信息包括不同数据中心中消息队列的标识、发送所述第一消息的所述应用的标识和处理所述第二消息的应用的标识的对应关系。

可选地,所述处理器701确定所述第一消息代理属于所述第二数据中心处理,包括:在所述第一消息中添加路由信息生成第二消息之前,根据配置信息确定所述路由信息,所述配置信息包括不同数据中心中消息队列的标识、发送所述第一消息的所述应用的标识和处理所述第二消息的应用的标识的对应关系。

可选地,所述通信系统还包括配置中心,所述配置中心用于存储所述配置信息;在接收所述业务服务器上运行的应用发送的第一消息之前,所述处理器701向所述配置中心获取所述配置信息。

可选地,所述第二数据中心中包括管理服务器,所述管理服务器用于管理所述第二数据中心中存储服务器,所述路由信息中包括管理服务器的互联协议ip地址;

则所述处理器701根据所述路由信息将所述第二消息发送至所述第二数据中心,包括:根据所述管理服务器的ip将所述第二消息发送至管理服务器,以便于所述管理服务器将所述第二消息存储至所述第二数据中心中的存储服务器。

应理解,在本申请实施例中,该处理器701可以是cpu,该处理器701还可以是其他通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。

该存储器702可以包括只读存储器和随机存取存储器,并向处理器701提供指令和数据。存储器702还可以包括非易失性随机存取存储器。例如,存储器702还可以存储设备类型的信息。

该存储器702可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-onlymemory,rom)、可编程只读存储器(programmablerom,prom)、可擦除可编程只读存储器(erasableprom,eprom)、电可擦除可编程只读存储器(electricallyeprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(randomaccessmemory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(staticram,sram)、动态随机存取存储器(dram)、同步动态随机存取存储器(synchronousdram,sdram)、双倍数据速率同步动态随机存取存储器(doubledatadatesdram,ddrsdram)、增强型同步动态随机存取存储器(enhancedsdram,esdram)、同步连接动态随机存取存储器(synchlinkdram,sldram)和直接内存总线随机存取存储器(directrambusram,drram)。

该总线704除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线704。

应理解,根据本申请实施例的服务器700可对应于本申请实施例中的通信装置600,并可以对应于执行根据本申请实施例图3中第一消息代理和第一路由代理由一个服务器实现的场景,并且服务器700中的各个模块的上述和其它操作和/或功能分别为了实现图4中的方法的相应流程,为了简洁,在此不再赘述。

本申请实施例还提供一种第一代理服务器,该第一代理服务器的结构与图7相同,对应图2所示通信系统中第一代理服务器,并且第一代理服务器中的各个模块的上述和其它操作和/或功能分别为了实现图4中的方法中第一代理服务器执行的相应流程,为了简洁,在此不再赘述。

本申请实施例还提供一种第一路由服务器,该第一路由服务器的结构与图7相同,对应图2所示通信系统中第一路由服务器,并且第一路由服务器中的各个模块的上述和其它操作和/或功能分别为了实现图4中的方法中第一路由服务器执行的相应流程,为了简洁,在此不再赘述。

本申请实施例还提供一种配置中心服务器,该配置中心服务器的结构与图7相同,对应图2和图3所示通信系统中配置中心,并且配置中心服务器中的各个模块的上述和其它操作和/或功能分别为了实现图4中的方法中配置中心服务器执行的相应流程,为了简洁,在此不再赘述。

通过上述内容的描述,本申请实施例提供的技术方案,通过在每个数据中心增加消息代理和路由代理,应用直接与消息代理通信,由消息代理根据预置配置信息确定目标消息队列集群的路由信息。当目标消息队列集群为远端消息队列集群时,消息代理在消息中添加目标消息队列集群的标识,最终由路由代理负责将该消息发送至目标消息队列集群。本技术方案不需要应用确认消息发送的路由信息,由消息代理负责确认路由信息,和路由代理转发至目标消息队列集群。实现了本地消息队列集群发、本地消息队列集群收、消费者决定路由的通信过程,解决了传统的技术方案中应用路由选择处理复杂的问题,提升了应用间通信的效率,减少了应用通信的时间。另一方面,本申请实施例中由消息代理和路由代理完成应用消息的路由信息确认过程,无需应用参与,也不需要在应用中添加配置信息,避免了对应用代码“入侵”,提高了应用安全性。进一步地,当用于不同应用通信的消息队列集群变更时,不需要更改应用中路由配置信息,降低了运维的复杂度和时间,提升了运维效率。

上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质。半导体介质可以是固态硬盘(solidstatedrive,ssd)。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

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

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

以上所述,仅为本发明的具体实施方式。熟悉本技术领域的技术人员根据本发明提供的具体实施方式,可想到变化或替换,都应涵盖在本发明的保护范围之内。

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