CN112527520A - 一种部署消息中间件的方法和装置 - Google Patents

一种部署消息中间件的方法和装置 Download PDF

Info

Publication number
CN112527520A
CN112527520A CN202011387672.4A CN202011387672A CN112527520A CN 112527520 A CN112527520 A CN 112527520A CN 202011387672 A CN202011387672 A CN 202011387672A CN 112527520 A CN112527520 A CN 112527520A
Authority
CN
China
Prior art keywords
message
cluster
load balancing
service
consumer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202011387672.4A
Other languages
English (en)
Inventor
吴泽君
孟朝雄
雷发林
陈新星
丁明
陶欣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Construction Bank Corp
Original Assignee
China Construction Bank Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Construction Bank Corp filed Critical China Construction Bank Corp
Priority to CN202011387672.4A priority Critical patent/CN112527520A/zh
Publication of CN112527520A publication Critical patent/CN112527520A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/547Messaging middleware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)

Abstract

本发明公开了部署消息中间件的方法和装置,涉及计算机技术领域。该方法的具体实施方式包括:在消息生产者与消息消费者之间:通过一个或多个消息中间件实例部署管理集群、服务集群和负载均衡代理;其中,所述管理集群位于消息生产者与所述服务集群之间;以及其中,所述负载均衡代理位于所述服务集群与所述消息消费者之间。该实施方式有效避免了单纯使用主备集群或者网络集群模式的缺点,实现了高可用、可扩展的消息队列。

Description

一种部署消息中间件的方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种部署消息中间件的方法和装置。
背景技术
当前,随着虚拟化、云计算等新技术的广泛应用,企业数据中心内部IT基础设施规模成倍增长,企业普遍利用自动化运维的手段来提升运维效率,支撑数据中心的高效运营。在构建运维自动化平台的过程中,往往会利用消息队列去管理数以万计的IT设备,如虚拟机、物理机等,使用场景的简单示意如图1。在此应用场景下,生产者对应是自动化运维平台,消费者对应的是安装在IT设备上的代理程序。代理程序通过话题(Topic)接收自动化运维平台下发的指令,代理程序执行完指令后将结果返回到队列(Queue)中,然后自动化运维平台通过Queue获取指令执行结果。在实际的应用中,消息队列往往是集群模式,消费者会通过一定的算法随机连接到其中一个消息队列。同时,生产者即自动化运维平台是相对稳定的,而消费者即代理程序的数量是动态增加的,且数量会成千上万的增长。如何构建一个能够支撑大规模消费者的消息队列集群,同时消息队列集群随着消费者规模的增加能够容易进行扩展是使用过程中经常面临的问题。
发明内容
有鉴于此,本发明实施例提供一种部署消息中间件的方法和装置,能够基于消息中间件构建分层、组合模式的消息队列集群;支持集群的大规模平滑扩展和大规模消费者应用;同时集群扩展不影响生产者和消费者应用程序。从而支撑大规模的消费者应用,且在集群扩展时不需要对生产者和消费者应用程序进行改动。
为实现上述目的,根据本发明实施例的一个方面,提供了一种部署消息中间件的方法。
根据本发明实施例的部署消息中间件的方法,包括:
在消息生产者与消息消费者之间:
通过一个或多个消息中间件实例部署管理集群、服务集群和负载均衡代理;
其中,所述管理集群位于消息生产者与所述服务集群之间;以及
其中,所述负载均衡代理位于所述服务集群与所述消息消费者之间。
根据本发明实施例的部署消息中间件的方法,其中,
所述消息生产者向所述管理集群写入消息;
所述管理集群与所述服务集群网络连接;
所述服务集群与所述负载均衡代理网络连接;
所述消息消费者从所述负载均衡代理读取消息。
根据本发明实施例的部署消息中间件的方法,其中,所述管理集群是主备模式集群。
根据本发明实施例的部署消息中间件的方法,其中,所述服务集群中的每个消息中间件实例与所述管理集群通过网络连接,所述管理集群和所述服务集群中的每个消息中间件实例之间具有双向消息拷贝同步。
根据本发明实施例的部署消息中间件的方法,其中,所述服务集群中的消息中间件实例的数量是能够扩展的。
根据本发明实施例的部署消息中间件的方法,其中,在所述服务集群中的消息中间件实例的数量变化时,所述方法还包括:
修改所述负载均衡代理的配置,为所述消息消费者提供统一地址。
根据本发明实施例的部署消息中间件的方法,其中,所述消息生产者和消息消费者之间的消息传输方式可以是点对点模式和/或发布订阅模式。
根据本发明实施例的部署消息中间件的方法,其中,
在所述消息生产者和消息消费者之间的消息传输方式是点对点模式时:
来自所述消息生产者的消息,只用于一个消息消费者消费;
其中,消息的存储方式是队列。
在所述消息生产者和消息消费者之间的消息传输方式是发布订阅模式时:
来自所述消息生产者的消息,用于一个或多个消息消费者消费;
其中,消息的存储方式是主题。
根据本发明实施例的部署消息中间件的方法,其中,在所述服务集群中增加消息中间件实例时,所述方法还包括:
部署新的消息中间件实例;
将所述新的消息中间件实例加入到所述服务集群中并配置所述新的消息中间件实例与所述管理集群的网络连接;
将所述新的消息中间件实例的服务地址和端口加入到负载均衡代理配置中。
为实现上述目的,根据本发明实施例的一个方面,提供了一种部署消息中间件的装置。
根据本发明实施例的一个方面的部署消息中间件的装置,包括:
管理集群模块,用于在消息生产者与消息消费者之间通过一个或多个消息中间件实例部署管理集群;
服务集群模块,用于在消息生产者与消息消费者之间通过一个或多个消息中间件实例部署管理集群;
负载均衡代理模块,用于在消息生产者与消息消费者之间部署负载均衡代理;
其中,所述管理集群位于消息生产者与所述服务集群之间;以及其中,所述负载均衡代理位于所述服务集群与所述消息消费者之间。
根据本发明实施例的一个方面的部署消息中间件的装置,其中,
所述消息生产者向所述管理集群写入消息;
所述管理集群与所述服务集群网络连接;
所述服务集群与所述负载均衡代理网络连接;
所述消息消费者从所述负载均衡代理读取消息。
根据本发明实施例的一个方面的部署消息中间件的装置,其中,所述管理集群是主备模式集群。
根据本发明实施例的一个方面的部署消息中间件的装置,其中,所述服务集群中的每个消息中间件实例与所述管理集群通过网络连接,所述管理集群和所述服务集群中的每个消息中间件实例之间具有双向消息拷贝同步。
根据本发明实施例的一个方面的部署消息中间件的装置,其中,所述服务集群中的消息中间件实例的数量是能够扩展的。
根据本发明实施例的一个方面的部署消息中间件的装置,其中,在所述服务集群中的消息中间件实例的数量变化时,所述负载均衡代理模块还用于:
修改所述负载均衡代理的配置,为所述消息消费者提供统一地址。
根据本发明实施例的一个方面的部署消息中间件的装置,其中,在所述服务集群中增加消息中间件实例时,
所述服务集群模块还用于:
部署新的消息中间件实例;
将所述新的消息中间件实例加入到所述服务集群中并配置所述新的消息中间件实例与所述管理集群的网络连接;
所述负载均衡代理模块还用于:
将所述新的消息中间件实例的服务地址和端口加入到负载均衡代理配置中。
为实现上述目的,根据本发明实施例的一个方面,提供了一种部署消息中间件的电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述方法中任一所述的方法。
为实现上述目的,根据本发明实施例的一个方面,提供了一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现上述方法中任一所述的方法。
上述发明中的一个实施例具有如下优点或有益效果:因为采用分层、不同集群模式的组合应用,结合负载均衡代理的引入,既融合了主备集群和网络集群的优点,又有效避免了单纯使用主备集群或者网络集群模式的缺点。真正实现了一种高可用、可扩展的消息队列集群。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的消息队列的示意图;
图2是根据本发明实施例的消息中间件主备集群模式的示意图;
图3是根据本发明实施例的消息中间件网络集群模式的示意图;
图4是根据本发明实施例的多节点网络集群的示意图;
图5是根据本发明实施例的部署消息中间件的方法的主要流程的示意图;
图6是根据本发明实施例的部署消息中间件的架构的示意图;
图7是根据本发明实施例的增加服务集群中消息中间件示例的方法的流程图;
图8是根据本发明实施例的部署消息中间件的装置的主要模块的示意图;
图9是本发明实施例可以应用于其中的示例性***架构图;
图10是适于用来实现本发明实施例的终端设备或服务器的计算机***的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本文涉及的术语:
消息中间件:是一种进程间通信或同一进程的不同线程间的通信方式,利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式***的集成。
ActiveMQ:一种基于JMS(Java Message Servie)规范的开放源代码的消息中间件实现。本文以ActiveMQ为例对消息中间件进行说明。
Broker:ActiveMQ的一个实例,代表着ActiveMQ的服务。
消息生产者:消息的发起方,一般为向消息中间件写入数据的应用程序。
消息消费者:消息的处理方,一般为从消息中间件中获取数据的应用程序。
点对点模式(Point To Point):生产者发送消息发送到消息中间件,然后消费者从消息中间件中取出并且消费消息,在点对点模式下,一个消息只能被一个消费者消费。
发布订阅模式(Publish/Subscribe):生产者将消息发布到消息中间件中,同时有多个消费者(订阅)消费该消息。和点对点方式不同,发布订阅模式下,发布的消息会被所有订阅者消费。
队列(Queue):点对点模式下,消息的存储方式。
主题(Topic):发布订阅模式下,消息的存储方式。
相关技术中,以ActiveMQ消息中间件实现消息队列为例,ActiveMQ目前支持两种集群架构模式:主备模式和网络集群模式。主备模式如图2所示。主备模式是双机热备机制,消息从主Broker复制到从Broker,当主Broker遇到故障后,生产者或者消费者可以从主Broker立即切换到从Broker,保证集群的高可用性。
然而,主备集群无法实现分布式的Topic、Queue,当消费者的数量过多时,单个Broker无法支撑,存在性能问题。但是实际的应用中消费者的数量往往以万计,主备模式集群根本无法支撑如此大的规模。
网络集群模式如图3所示,一个Broker会同等对待所有的订阅者,不管是普通的消费者还是远程的Broker,都会将生产者发送的消息拷贝给每个订阅者。远程Broker得到消息拷贝后,会依次把它递送到其内部的本地消费者。
网络集群模式可以实现分布式Topic、Queue,支持较大规模的消费者数量,但是当网络集群的数量变多之后,网络集群的配置就会变得非常复杂,如图4所示,当只有BrokerA、Broker B两个集群时,只需要要配置(Broker A-Broker B)一组网络关系,当增加一个Broker C节点时,需要配置(Broker A-Broker B)、(Broker A-Broker C)、(Broker B-Broker C)三组网络关系。随着集群规模的扩大,这个复杂关系会成倍增长。
另外当集群Broker数量增加后,生产者、消费者应用程序需要修改程序代码适应Broker数量的变化,无法实现业务无感的平滑扩展。如下代码所示,当Broker数量变化后,ActiveMQ的连接参数(tcp://BrokerA-IP:61616,tcp://BrokerB-IP:61616;tcp://BrokerB-IP:61616)需要对应的调整。
ConnectionFactory connectionFactory=new ActiveMQConnectionFactory("failover:(tcp://BrokerA-IP:61616,tcp://Bro kerB-IP:61616;tcp://BrokerB-IP:61616)");
为了解决以上问题,本发明的集群架构核心由管理集群、服务集群以及负载均衡代理三部分组成,见图5。
图5是根据本发明实施例的部署消息中间件的方法的主要流程,如图5所示,包括步骤S501、S502、S503。
步骤S501:在消息生产者与消息消费者之间通过一个或多个消息中间件实例部署管理集群。
参考图6,通过一个或多个消息中间件实例部署管理集群和服务集群。相对于相关技术中单纯的主备模式和网络集群模式,管理集群和服务集群构成分层结构,并通过不同的模式分别完成相应的工作。
其中,管理集群的作用是连接生产者应用程序服务和服务集群组件。在实际的应用场景中生产者的数量是相对固定的,而服务集群的数量也是有限的,同时管理集群不用直接对接消费者应用程序,所以本发明中管理者集群使用主备模式进行构建,能够有效的规避主备模式集群的缺点,又能满足高可用和实际的需求。如图6所示,在ActiveMQ消息中间件的示例中,管理集群可以构建为主Broker和从Broker的主备模式。
步骤S502:在消息生产者与消息消费者之间通过一个或多个消息中间件实例部署服务集群。
服务集群的作用是连接管理集群和消费者应用程序,服务集群和管理集群间通过网络连接模式进行连接。如图6所示,服务集群中的Broker实例可以通过网络连接与管理集群通信。管理集群和服务集群可以进行双向的消息拷贝同步。服务集群Broker的数量可以根据实际业务需求进行扩展。增加服务集群Broker实例的方法参考图7描述。
步骤S503:在所述服务集群与所述消息消费者之间部署负载均衡代理。
负载均衡代理的作用是屏蔽服务集群数量的变化对消费者的影响,通过负载均衡代理对消费者提供统一的服务地址,服务集群Broker数量变化后,只需要修改负载均衡代理配置,而不需要修改所有消费者应用程序。本发明中以HAProxy为参照实现,实际应用中也可以采用其它负载均衡代理技术。HAProxy提供基于TCP和HTTP应用的代理转发的能力,本发明中主要使用其TCP负载转发能力。
通过分层、两种集群模式的组合应用,结合负载均衡代理的引入,既融合了主备集群和网络集群的优点,又有效避免了单纯使用主备集群或者网络集群模式的缺点。真正实现了一种高可用、可扩展的消息队列集群。
需要说明的是,图5所示步骤不一定按照图中顺序来实现,可以以其他顺序来实现图5所示的全部或部分步骤。
在ActiveMQ中间件的示例中,Broker作为消息中间件实例,管理集群和服务集群的核心配置示例如下:
1、Broker实例之间连接。
所有Broker实例都配置使用stomp协议的传输连接器,用于Broker之间的连接。
<transportConnectors>
<transportConnector name="stomp"uri="stomp://0.0.0.0:61614"/>
</transportConnectors>
2、管理集群配置。
ActiveMQ主备模式主要是通过共享存储目录来实现主备热备,集群中的多个Broker哪个先抢到了控制权,它就成为主Broker,其它的Broker就成为备Broker。ActiveMQ主备配置支持共享文件***(Shared File System Master Slave)、数据库(JDBC MasterSlave)和LevelDB(Replicated LevelDB Store)三种模式。本示例中,采用共享文件***作为参考实现,相关的配置示例如下:
主Broker配置:
<persistenceAdapter>
<kahaDB directory="/home/ap/activemq/data/kahadb"/>
</persistenceAdapter>
备Broker配置:
<persistenceAdapter>
<kahaDB directory="/home/ap/activemq/data/kahadb"/>
</persistenceAdapter>
在上述配置中/home/ap/activemq/data/kahadb地址需要挂载同一个共享文件***,比如使用网络附加存储(NAS)实现,分别将主Broker、备Broker对应的ActiveMQ持久化存储目录挂载到NAS目录上,参考命令如下:
mount//nas-ip/share/kahadb/home/ap/activemq/data/kahadb
生产者应用程序使用failover://协议来连接主Broker和备Broker,当主Broker出问题时,生产者应用程序自动连接到备Broker上,示例代码如下:
ActiveMQConnectionFactory connectionFactory=newActiveMQConnectionFactory(failover:("tcp://主Broker-IP:61616,tcp://备Broker-IP:61616)")
3、服务集群配置,服务集群中的每个Broker和管理集群Broker之间通过网络连接构建成集群。服务集群内部Broker之间是独立的,分别与管理集群网络连接。参考配置示例如下:
Figure BDA0002810165530000101
上述示例中,brokerA-ip表示管理集群主broker的ip,brokerB-ip表示管理集群备broker的ip。
图6是根据本发明实施例的部署消息中间件的架构示意图。
结合图5方法流程的描述,图6所示架构以分层、多模式来部署消息中间件。如图所示,管理集群位于消息生产者与服务集群之间,消息生产者将消息发送至管理集群中的Broker。管理集群与服务集群网络连接,服务集群中的每个Broker分别网络连接至管理集群。负载均衡代理位于服务集群与消息消费者之间。负载均衡代理用于消费者以统一地址获取消息,在一种实施方式中,负载均衡代理也可以是可选组件。
管理集群通过主备模式实现高可用,当主Broker失效后,备Broker可以继续提供服务。根据实际需要可以配置一主一备或者一主多备的高可用集群配置。服务集群里每个Broker都是独立的,互相不影响,任何一个Broker失效不影响整体集群的可用性。当某个Broker失效后,连接到该Broker的消费者应用程序可以通过重连机制重新连接到其它Broker上。
综上所述,本发明的管理集群和服务集群都具备高可用特性,集群内任何一个Broker失效都不影响整个集群的有效性,本发明的集群构建模式具备高可用性。
图7是根据本发明实施例的增加服务集群中消息中间件实例的方法的主要流程图。
在一种实施方式中,当消息消费者数量增加而导致整个集群出现容量性能问题时,只需要扩展服务集群中消息中间件实例的数量即可,管理集群中消息中间件实例的数量可以保持稳定。
步骤S701:在以ActiveMQ实现消息中间件的示例中,部署新的ActiveMQ实例,例如命名为Broker N。
步骤S702:将Broker N实例加入到服务集群中,配置与管理集群间的网络连接,具体配置参考上文服务集群配置。
步骤S702:将Broker N的服务地址和端口加入到负载均衡代理配置中,配置示例如下:
Figure BDA0002810165530000111
Figure BDA0002810165530000121
在实际应用中,加入新的Broker实例后,为了让所有消息更加均衡的分配到服务集群的Broker上,可以重启负载均衡代理软件,消费者应用通过自动重连机制会重新连接到Broker实例上。重启过程可能短暂影响业务,在不追求消费者应用程序平均分布到每个服务集群Broker的场景下,也可以不重启负载均衡代理软件,只是将新增的消费者均衡分布到服务集群Broker上,通过增加服务集群Broker数量,降低单个Broker连接的消费者数量,实现集群的扩展
通过以上的步骤可以实现服务集群的扩展,而生产者消费应用程序和消费者应用程序不需要修改代码或者配置,实现了集群的平滑扩展,对业务的影响可以降到最低。
图8是根据本发明实施例的部署消息中间件的装置的模块示意图。
管理集群模块801,用于在消息生产者与消息消费者之间通过一个或多个消息中间件实例部署管理集群;
服务集群模块802,用于在消息生产者与消息消费者之间通过一个或多个消息中间件实例部署管理集群;
负载均衡代理模块803,用于在消息生产者与消息消费者之间部署负载均衡代理;
其中,所述管理集群801位于消息生产者与所述服务集群802之间;以及其中,所述负载均衡代理803位于所述服务集群802与所述消息消费者之间。
其中,
所述消息生产者向所述管理集群写入消息;
所述管理集群与所述服务集群网络连接;
所述服务集群与所述负载均衡代理网络连接;
所述消息消费者从所述负载均衡代理读取消息。
其中,所述管理集群是主备模式集群。
其中,所述服务集群中的每个消息中间件实例与所述管理集群通过网络连接,所述管理集群和所述服务集群中的每个消息中间件实例之间具有双向消息拷贝同步。
其中,所述服务集群中的消息中间件实例的数量是能够扩展的。
其中,在所述服务集群中的消息中间件实例的数量变化时,所述负载均衡模块803还用于:
修改所述负载均衡代理的配置,为所述消息消费者提供统一地址。
其中,所述消息生产者和消息消费者之间的消息传输方式可以是点对点模式和/或发布订阅模式。
其中,在所述消息生产者和消息消费者之间的消息传输方式是点对点模式时:
来自所述消息生产者的消息,只用于一个消息消费者消费;
其中,消息的存储方式是队列。
在所述消息生产者和消息消费者之间的消息传输方式是发布订阅模式时:
来自所述消息生产者的消息,用于一个或多个消息消费者消费;
其中,消息的存储方式是主题。
在所述服务集群中增加消息中间件实例时,
所述服务集群模块802还用于:
部署新的消息中间件实例;
将所述新的消息中间件实例加入到所述服务集群中并配置所述新的消息中间件实例与所述管理集群的网络连接;
所述负载均衡代理模块803还用于:
将所述新的消息中间件实例的服务地址和端口加入到负载均衡代理配置中。
图9示出了可以应用本发明实施例的部署消息中间件的方法或部署消息中间件的装置的示例性***架构900。
如图9所示,***架构900可以包括终端设备901、902、903,网络904和服务器905。网络904用以在终端设备901、902、903和服务器905之间提供通信链路的介质。网络904可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备901、902、903通过网络904与服务器905交互,以接收或发送消息等。终端设备901、902、903上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备901、902、903可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器905可以是提供各种服务的服务器,例如对消息队列提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的查询请求等数据进行分析等处理,并将处理结果反馈给终端设备。
需要说明的是,本发明实施例所提供的部署消息中间件的方法一般由服务器905执行,相应地,部署消息中间件的装置一般设置于服务器905中。
应该理解,图9中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图10,其示出了适于用来实现本发明实施例的终端设备的计算机***1000的结构示意图。图10示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图10所示,计算机***1000包括中央处理单元(CPU)1001,其可以根据存储在只读存储器(ROM)1002中的程序或者从存储部分1008加载到随机访问存储器(RAM)1003中的程序而执行各种适当的动作和处理。在RAM 1003中,还存储有***1000操作所需的各种程序和数据。CPU 1001、ROM 1002以及RAM 1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
以下部件连接至I/O接口1005:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至I/O接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。在该计算机程序被中央处理单元(CPU)1001执行时,执行本发明的***中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括管理集群模块、服务集群模块、负载均衡代理模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,管理集群模块还可以被描述为“用于在消息生产者与消息消费者之间通过一个或多个消息中间件实例部署管理集群的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备能够:
在消息生产者与消息消费者之间:
通过一个或多个消息中间件实例部署管理集群、服务集群和负载均衡代理;
其中,所述管理集群位于消息生产者与所述服务集群之间;以及
其中,所述负载均衡代理位于所述服务集群与所述消息消费者之间。
其中,所述消息生产者向所述管理集群写入消息;
所述管理集群与所述服务集群网络连接;
所述服务集群与所述负载均衡代理网络连接;
所述消息消费者从所述负载均衡代理读取消息。
其中,所述管理集群是主备模式集群。
其中,所述服务集群中的每个消息中间件实例与所述管理集群通过网络连接,所述管理集群和所述服务集群中的每个消息中间件实例之间具有双向消息拷贝同步。
其中,所述服务集群中的消息中间件实例的数量是能够扩展的。
在所述服务集群中的消息中间件实例的数量变化时,所述设备还能够:
修改所述负载均衡代理的配置,为所述消息消费者提供统一地址。
所述消息生产者和消息消费者之间的消息传输方式可以是点对点模式和/或发布订阅模式。
在所述消息生产者和消息消费者之间的消息传输方式是点对点模式时:
来自所述消息生产者的消息,只用于一个消息消费者消费;
其中,消息的存储方式是队列。
在所述消息生产者和消息消费者之间的消息传输方式是发布订阅模式时:
来自所述消息生产者的消息,用于一个或多个消息消费者消费;
其中,消息的存储方式是主题。
在所述服务集群中增加消息中间件实例时,所述设备还能够:
部署新的消息中间件实例;
将所述新的消息中间件实例加入到所述服务集群中并配置所述新的消息中间件实例与所述管理集群的网络连接;
将所述新的消息中间件实例的服务地址和端口加入到负载均衡代理配置中。
根据本发明实施例的技术方案,因为采用分层、不同集群模式的组合应用,结合负载均衡代理的引入,既融合了主备集群和网络集群的优点,又有效避免了单纯使用主备集群或者网络集群模式的缺点。真正实现了一种高可用、可扩展的消息队列集群。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (18)

1.一种部署消息中间件的方法,其特征在于,包括:
在消息生产者与消息消费者之间:
通过一个或多个消息中间件实例部署管理集群、服务集群和负载均衡代理;
其中,所述管理集群位于消息生产者与所述服务集群之间;
其中,所述负载均衡代理位于所述服务集群与所述消息消费者之间。
2.根据权利要求1所述的方法,其特征在于,
所述消息生产者向所述管理集群写入消息;
所述管理集群与所述服务集群网络连接;
所述服务集群与所述负载均衡代理网络连接;
所述消息消费者从所述负载均衡代理读取消息。
3.根据权利要求1所述的方法,其特征在于,所述管理集群是主备模式集群。
4.根据权利要求1所述的方法,其特征在于,所述服务集群中的每个消息中间件实例与所述管理集群通过网络连接,所述管理集群和所述服务集群中的每个消息中间件实例之间具有双向消息拷贝同步。
5.根据权利要求1所述的方法,其特征在于,所述服务集群中的消息中间件实例的数量是能够扩展的。
6.根据权利要求5所述的方法,其特征在于,在所述服务集群中的消息中间件实例的数量变化时,所述方法还包括:
修改所述负载均衡代理的配置,为所述消息消费者提供统一地址。
7.根据权利要求1所述的方法,其特征在于,所述消息生产者和消息消费者之间的消息传输方式可以是点对点模式和/或发布订阅模式。
8.根据权利要求7所述的方法,其特征在于,
在所述消息生产者和消息消费者之间的消息传输方式是点对点模式时:
来自所述消息生产者的消息,只用于一个消息消费者消费;
其中,消息的存储方式是队列。
在所述消息生产者和消息消费者之间的消息传输方式是发布订阅模式时:
来自所述消息生产者的消息,用于一个或多个消息消费者消费;
其中,消息的存储方式是主题。
9.根据权利要求1所述的方法,其特征在于,在所述服务集群中增加消息中间件实例时,所述方法还包括:
部署新的消息中间件实例;
将所述新的消息中间件实例加入到所述服务集群中并配置所述新的消息中间件实例与所述管理集群的网络连接;
将所述新的消息中间件实例的服务地址和端口加入到负载均衡代理配置中。
10.一种部署消息中间件的装置,其特征在于,包括:
管理集群模块,用于在消息生产者与消息消费者之间通过一个或多个消息中间件实例部署管理集群;
服务集群模块,用于在消息生产者与消息消费者之间通过一个或多个消息中间件实例部署管理集群;
负载均衡代理模块,用于在消息生产者与消息消费者之间部署负载均衡代理;
其中,所述管理集群位于消息生产者与所述服务集群之间;以及其中,所述负载均衡代理位于所述服务集群与所述消息消费者之间。
11.根据权利要求10所述的装置,其特征在于,
所述消息生产者向所述管理集群写入消息;
所述管理集群与所述服务集群网络连接;
所述服务集群与所述负载均衡代理网络连接;
所述消息消费者从所述负载均衡代理读取消息。
12.根据权利要求10所述的装置,其特征在于,所述管理集群是主备模式集群。
13.根据权利要求10所述的装置,其特征在于,所述服务集群中的每个消息中间件实例与所述管理集群通过网络连接,所述管理集群和所述服务集群中的每个消息中间件实例之间具有双向消息拷贝同步。
14.根据权利要求10所述的装置,其特征在于,所述服务集群中的消息中间件实例的数量是能够扩展的。
15.根据权利要求14所述的装置,其特征在于,在所述服务集群中的消息中间件实例的数量变化时,所述负载均衡代理模块还用于:
修改所述负载均衡代理的配置,为所述消息消费者提供统一地址。
16.根据权利要求10所述的装置,其特征在于,在所述服务集群中增加消息中间件实例时,
所述服务集群模块还用于:
部署新的消息中间件实例;
将所述新的消息中间件实例加入到所述服务集群中并配置所述新的消息中间件实例与所述管理集群的网络连接;
所述负载均衡代理模块还用于:
将所述新的消息中间件实例的服务地址和端口加入到负载均衡代理配置中。
17.一种部署消息中间件的电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-9中任一所述的方法。
18.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-9中任一所述的方法。
CN202011387672.4A 2020-12-01 2020-12-01 一种部署消息中间件的方法和装置 Pending CN112527520A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011387672.4A CN112527520A (zh) 2020-12-01 2020-12-01 一种部署消息中间件的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011387672.4A CN112527520A (zh) 2020-12-01 2020-12-01 一种部署消息中间件的方法和装置

Publications (1)

Publication Number Publication Date
CN112527520A true CN112527520A (zh) 2021-03-19

Family

ID=74996059

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011387672.4A Pending CN112527520A (zh) 2020-12-01 2020-12-01 一种部署消息中间件的方法和装置

Country Status (1)

Country Link
CN (1) CN112527520A (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113641511A (zh) * 2021-07-09 2021-11-12 阿里云计算有限公司 一种消息通信方法和装置
CN113986601A (zh) * 2021-12-27 2022-01-28 飞狐信息技术(天津)有限公司 消费信息查询方法及装置、存储介质及电子设备
CN114116258A (zh) * 2021-11-12 2022-03-01 苏州浪潮智能科技有限公司 队列管理器热备方法、***、终端及存储介质
CN114422591A (zh) * 2021-12-22 2022-04-29 广州市玄武无线科技股份有限公司 点对点通信方法、数据通信***、计算机设备、存储介质
CN114513513A (zh) * 2022-02-15 2022-05-17 湖南快乐阳光互动娱乐传媒有限公司 基于消息中间件的数据处理方法及装置
CN115080152A (zh) * 2022-08-19 2022-09-20 飞狐信息技术(天津)有限公司 消息中间件的Broker配置方法、装置、计算机设备及介质
CN115277695A (zh) * 2022-07-13 2022-11-01 浪潮云信息技术股份公司 一种实现跨区域生产和消费事件的方法
CN116893914A (zh) * 2023-09-11 2023-10-17 中移(苏州)软件技术有限公司 消息处理的方法、消息队列***、客户端和电子设备

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020120717A1 (en) * 2000-12-27 2002-08-29 Paul Giotta Scaleable message system
US20120324000A1 (en) * 2011-06-17 2012-12-20 Oracle International Corporation System and method for flow control in a messaging subsystem based on message-in/out rates
US20130007767A1 (en) * 2011-06-29 2013-01-03 International Business Machines Corporation Automated generation of service definitions for message queue application clients
CN102904746A (zh) * 2012-09-13 2013-01-30 曙光信息产业(北京)有限公司 基于消息机制的集群任务自调度***与方法
CN107465735A (zh) * 2017-07-31 2017-12-12 杭州多麦电子商务股份有限公司 分布式消息***
CN110113420A (zh) * 2019-05-08 2019-08-09 重庆大学 基于nvm的分布式消息队列管理***
CN110557381A (zh) * 2019-08-08 2019-12-10 武汉兴图新科电子股份有限公司 基于媒体流热迁移机制的媒体高可用***
CN110601903A (zh) * 2019-09-25 2019-12-20 广州荔支网络技术有限公司 一种基于消息队列中间件的数据处理方法及装置
CN110661871A (zh) * 2019-09-27 2020-01-07 宁波和利时智能科技有限公司 一种数据传输方法及mqtt服务器
CN111459689A (zh) * 2020-04-07 2020-07-28 中国建设银行股份有限公司 基于分布式队列的消息处理***及方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020120717A1 (en) * 2000-12-27 2002-08-29 Paul Giotta Scaleable message system
US20120324000A1 (en) * 2011-06-17 2012-12-20 Oracle International Corporation System and method for flow control in a messaging subsystem based on message-in/out rates
US20130007767A1 (en) * 2011-06-29 2013-01-03 International Business Machines Corporation Automated generation of service definitions for message queue application clients
CN102904746A (zh) * 2012-09-13 2013-01-30 曙光信息产业(北京)有限公司 基于消息机制的集群任务自调度***与方法
CN107465735A (zh) * 2017-07-31 2017-12-12 杭州多麦电子商务股份有限公司 分布式消息***
CN110113420A (zh) * 2019-05-08 2019-08-09 重庆大学 基于nvm的分布式消息队列管理***
CN110557381A (zh) * 2019-08-08 2019-12-10 武汉兴图新科电子股份有限公司 基于媒体流热迁移机制的媒体高可用***
CN110601903A (zh) * 2019-09-25 2019-12-20 广州荔支网络技术有限公司 一种基于消息队列中间件的数据处理方法及装置
CN110661871A (zh) * 2019-09-27 2020-01-07 宁波和利时智能科技有限公司 一种数据传输方法及mqtt服务器
CN111459689A (zh) * 2020-04-07 2020-07-28 中国建设银行股份有限公司 基于分布式队列的消息处理***及方法

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113641511A (zh) * 2021-07-09 2021-11-12 阿里云计算有限公司 一种消息通信方法和装置
CN113641511B (zh) * 2021-07-09 2024-06-04 阿里云计算有限公司 一种消息通信方法和装置
CN114116258A (zh) * 2021-11-12 2022-03-01 苏州浪潮智能科技有限公司 队列管理器热备方法、***、终端及存储介质
CN114116258B (zh) * 2021-11-12 2024-05-07 苏州浪潮智能科技有限公司 队列管理器热备方法、***、终端及存储介质
CN114422591A (zh) * 2021-12-22 2022-04-29 广州市玄武无线科技股份有限公司 点对点通信方法、数据通信***、计算机设备、存储介质
CN113986601A (zh) * 2021-12-27 2022-01-28 飞狐信息技术(天津)有限公司 消费信息查询方法及装置、存储介质及电子设备
CN113986601B (zh) * 2021-12-27 2022-04-26 飞狐信息技术(天津)有限公司 消费信息查询方法及装置、存储介质及电子设备
CN114513513A (zh) * 2022-02-15 2022-05-17 湖南快乐阳光互动娱乐传媒有限公司 基于消息中间件的数据处理方法及装置
CN115277695A (zh) * 2022-07-13 2022-11-01 浪潮云信息技术股份公司 一种实现跨区域生产和消费事件的方法
CN115080152A (zh) * 2022-08-19 2022-09-20 飞狐信息技术(天津)有限公司 消息中间件的Broker配置方法、装置、计算机设备及介质
CN115080152B (zh) * 2022-08-19 2022-12-27 飞狐信息技术(天津)有限公司 消息中间件的Broker配置方法、装置、计算机设备及介质
CN116893914A (zh) * 2023-09-11 2023-10-17 中移(苏州)软件技术有限公司 消息处理的方法、消息队列***、客户端和电子设备

Similar Documents

Publication Publication Date Title
CN112527520A (zh) 一种部署消息中间件的方法和装置
US10127077B2 (en) Event distribution pattern for use with a distributed data grid
US9886260B2 (en) Managing software version upgrades in a multiple computer system environment
CN106657314B (zh) 跨数据中心数据同步***及方法
US20100287280A1 (en) System and method for cloud computing based on multiple providers
CN113742031B (zh) 节点状态信息获取方法、装置、电子设备及可读存储介质
CN110262902B (zh) 信息处理方法及***、介质和计算设备
CN109245908B (zh) 一种主从集群切换的方法和装置
CN110120961B (zh) 一种分布式服务集群及其路由同步的方法
US9143394B2 (en) System and method for graph based K-redundant resiliency for IT cloud
CN112069265A (zh) 配置数据的同步方法、业务数据***、计算机***和介质
CN109783151B (zh) 规则变更的方法和装置
CN111753166A (zh) 用于传送动态***状态的查询代理
JP7083416B2 (ja) Rpcメンバー情報取得方法、装置、電子機器、記憶媒体及びコンピュータプログラム製品
WO2020024978A1 (zh) 一种虚拟机迁移装置、方法、设备及可读存储介质
EP3304304B1 (en) Cloud computing infrastructure
CN113079098B (zh) 路由更新的方法、装置、设备和计算机可读介质
CN113971098A (zh) 一种RabbitMQ消费管理方法及***
CN112231399A (zh) 一种应用于图数据库的方法和装置
CN116155978A (zh) 多注册中心适配方法、装置、电子设备及存储介质
CN108701035B (zh) 应用属性的管理
CN113472886B (zh) 分布式集群***及其控制方法
CN115454666A (zh) 消息队列集群间的数据同步方法和装置
CN111858260A (zh) 信息显示方法、装置、设备及介质
CN111277632B (zh) ***集群中应用管理的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination