CN112346892A - 一种mq负载均衡方法、装置、设备及存储介质 - Google Patents
一种mq负载均衡方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112346892A CN112346892A CN202110010909.5A CN202110010909A CN112346892A CN 112346892 A CN112346892 A CN 112346892A CN 202110010909 A CN202110010909 A CN 202110010909A CN 112346892 A CN112346892 A CN 112346892A
- Authority
- CN
- China
- Prior art keywords
- load balancing
- message
- message queue
- service
- service servers
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/109—Time management, e.g. calendars, reminders, meetings or time accounting
- G06Q10/1093—Calendar-based scheduling for persons or groups
- G06Q10/1095—Meeting or appointment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Abstract
本发明提供一种MQ负载均衡方法、装置、设备及存储介质,属于通信技术领域。该方法包括:根据业务需要建立消息队列,所述消息队列包括同一会议的消息;根据业务服务器的数量和多个所述消息队列构成的集合的大小进行负载均衡,将所述消息队列存储于所述业务服务器中。本发明提供的方法,根据业务需要建立消息队列,以保障消息的有序性,所设置的负载均衡算法,能充分保障业务服务器的可用性。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种MQ负载均衡方法、装置、设备及存储介质。
背景技术
云会议平台是一个分布式软件系统,使用系统中的各个业务组件向客户提供业务服务,如音频服务器,视频服务器等,各个服务组件主要通过消息引擎(RocketMQ)进行消息通讯。目前,通过在rocketMQ 的设置一个前端代理(mq-proxy),用于将云会议系统中的c/c++服务接入消息引擎系统。但存在以下缺陷:多个业务服务器作为消息消费者实例通过代理服务器接入消息引擎时,消息的负载均衡效果不佳,不能保证业务服务器的可用性、并发性能、及消息在业务范围内的有序性。
发明内容
针对上述技术问题,本发明提供了一种MQ(消息队列)负载均衡方法、装置、设备及存储介质,以提高负载均衡的效果,实现业务服务器的可用性,以及消息在业务范围内的有序性。
为了实现上述目的,本发明提供了一种MQ负载均衡方法,包括:
根据业务需要建立消息队列,所述消息队列包括同一会议的消息;
根据业务服务器的数量和所述消息队列的集合大小进行负载均衡,将所述消息队列存储于所述业务服务器中。
进一步地,所述负载均衡的方式包括:
比较所述业务服务器的数量和所述消息队列的集合大小:
其中,多个消息队列构成消息队列的集合;
若相等,则为每一个所述消息队列分配一个所述业务服务器;
若大于,则为每一个所述消息队列分配一个所述业务服务器,其余的所述业务服务器空闲。
进一步地,所述负载均衡的方式还包括:
若所述业务服务器的数量小于所述消息队列的集合大小,则判断所述业务服务器的数量能否被所述消息队列的集合大小整除,能整除的情况下,平均分配;不能整除的情况下,至少有一个所述业务服务器多分配一个所述消息队列,其余平均分配。
进一步地,所述根据业务需要建立消息队列,其中,每个业务建立至少一个消息队列,所述消息队列的个数按需配置。
进一步地,所述方法还包括:根据使用消息所属会议的会议ID与消息队列集合中元素的个数取模运算,将消息分配至消息队列中,用于实现将属于同一会议ID的消息分配至同一消息队列中。
进一步地,还包括:重新负载平衡机制,所述重新负载平衡机制用于按照负载均衡算法重新给所述业务服务器分配所述消息队列。
进一步地,所述重新负载平衡机制的条件包括:
前端代理模块与新的业务服务器建立长链接;
还包括:
前端代理模块发现任一已链接的所述业务服务器失效。
本发明还提供了一种MQ负载均衡装置,用于实现上述方法,所述装置包括:
前端代理模块,用于根据业务需要建立消息队列,所述消息队列包括同一会议的消息;
业务服务器模块,用于存储所述消息队列;
所述前端代理模块还用于根据业务服务器的数量和所述消息队列的集合的大小进行负载均衡;
所述前端代理模块与所述业务服务器模块保持长链接。
本发明还提供了一种MQ负载均衡设备,包括:
存储器、处理器,所述存储器中存储有在所述处理上运行的计算机程序,所述处理器执行所述计算机程序时,实现上述MQ负载均衡方法的步骤。
本发明还提供了一种存储介质,所述存储介质上存储有计算机程序,该计算机程序被执行时,实现上述MQ负载均衡方法的步骤。
本发明技术方案,具有如下优点:
1.本发明提供的负载均衡方法,通过业务类型建立消息队列,以保证同一会议的消息归属于同一类型的消息队列,从而保证消息的有序性。
2.本发明提供的负载均衡方法,通过对比业务服务器数量与消息队列的个数,将消息队列分配至业务服务器中,从而实现业务服务器的可用性,实现负载均衡。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例的一种MQ负载均衡方法的流程示意图;
图2是本发明一个实施例的一种MQ负载均衡方法中消息队列和业务类型的关系示意图;
图3是本发明一个实施例的一种MQ负载均衡方法中负载均衡方式示意图A;
图4是本发明一个实施例的一种MQ负载均衡方法中负载均衡方式示意图B;
图5是本发明一个实施例的一种MQ负载均衡方法中负载均衡方式示意图C;
图6是本发明一个实施例的一种MQ负载均衡方法中消息队列的建立方式示意图;
图7是本发明一个实施例的一种MQ负载均衡装置的结构示意图,其中,201-前端代理模块,202-业务服务器模块;
图8是本发明一个实施例的一种MQ负载均衡设备的结构示意图,其中,301-存储器,302-处理器;
图9为本发明中一个实施例中提供的一种mq-proxy与平台业务组件和消息引擎系统的关系示意图;
图10为本发明一个实施例中提供的一种mq-proxy架构示意图;
图11为本发明中一个实施例中提供的一种mq-proxy 初始化和消费消息流程示意图;
图12为本发明中一个实施例中提供的一种mq-proxy 发送业务流程示意图。
具体实施方式
图1为本发明一个实施例提供的一种MQ负载均衡方法的流程示意图,如图1所示,该方法包括:
S101、根据业务需要建立消息队列,其中,消息队列包括同一会议的消息;
其中,如图2所示,前端代理模块(mq-proxy )在初始化时根据业务的需要,针对每一种类型的业务创建消息队列。每种类型的业务创建多个消息队列,每种类型的业务的消息队列个数可以按需配置。
具体地,mq-proxy 作为消息的消费者从消息引擎中消费发送给每种业务类型的消息,并且按消息所属的业务不同,将消息放入mq-proxy初始化时创建的消息队列中。保证同一个会议的消息可以放入相同的消息队列之中。这样同一会议的消息将被相同的业务服务器接收并处理,保证同一会议的消息在业务范围内的有序性。
S102、根据业务服务器的数量和所述消息队列的集合大小进行负载均衡,将所述消息队列存储于所述业务服务器中。
具体地,mq-proxy 根据某业务连接的业务服务器实例的数量和某业务消息队列的集合的大小做负载均衡。
进一步地,负载均衡的方式包括:
如图3所示,业务服务器的数量等于消息队列的集合的大小则为每一个消息队列分配一个业务服务器;
如图4所示,业务服务器的数量大于消息队列集合的大小则将每一个消息队列分配一个业务服务器,多余的业务服务器空闲。
进一步地,负载均衡的方式还包括:
如图5所示,业务服务器的数量小于消息队列的大小,判断业务服务器的数量能否被消息队列的集合的大小整除,能整除的情况下,平均分配;不能整除的情况下,至少有一个业务服务器多消费一个消息队列,其余平均分配。
例如,业务服务器的数量为5个,而消息队列的大小为6个,业务服务器的数量不能被消息队列集合的大小整除,那么其中一个业务服务器消费2个消息队列,另外4个业务服务器分别消费一个消息队列。
再例如,业务服务器的数量为5个,而消息队列的大小为10个,业务服务器的数量能被消息队列集合的大小整除,那么5个业务服务器分别消费2个消息队列。
进一步地,根据业务需要建立消息队列,其中,每个业务建立至少一个消息队列,消息队列的个数按需配置。
进一步地,该方法还包括:如图6所示,根据使用消息所属会议的会议ID与消息队列集合中元素的个数取模运算,将消息分配至消息队列中,以实现同一会议的消息放于相同的所述消息队列中。由于每种业务对应多个消息队列,消息在放入消息队列集合时将采取使用消息所属会议的会议ID与消息队列集合中元素的个数取模运算。用于实现将属于同一会议ID的消息分配至同一消息队列中。
mq-proxy 与业务服务器之间保持长链接,并且定时检查连接业务服务器心跳消息来确认业务服务器状态良好,在发生如下两种情况是mq-proxy会启动重新负载平衡(rebalance)机制,按照上述负载均衡算法来重新给业务服务器分配消息队列。
进一步地,重新负载平衡机制的条件包括:
前端代理模块与新的业务服务器建立长链接;
还包括:
前端代理模块发现任一已链接的所述业务服务器失效。
图7为本发明一个实施例中提供的一种MQ负载均衡装置的结构示意图,如图7所示,该装置包括:
前端代理模块201,用于根据业务需要建立消息队列,其中,消息队列指示同一会议的消息;
其中,前端代理模块作为中间层由多个服务实例组成,一方面通过thrift(是一种接口描述语言和二进制通讯协议,它被用来定义和创建跨语言的服务)方式与多个云会议平台中的业务服务组件保持长连接,通过远程方法调用的方式接受业务服务器发送的消息,向业务服务器推送发给业务服务器的消息。另一方面作为消息引擎的生产者将业务服务器发送的消息发送到消息引擎系统,作为消息引擎的消费者将消息引擎系统中发送给业务服务器的消息拉取并推送到业务服务器。前端代理模块中根据需要还实现了,客户端健康管理,消息负载均衡,消息限流,TPS监控等功能。
业务服务器模块202,用于存储所述消息队列;
其中,前端代理模块还用于根据业务服务器的数量和消息队列的集合的大小进行负载均衡;
其中,前端代理模块201与业务服务器模块202保持长链接。
以上装置用于实现前述实施例提供的方法,其实现原理和技术效果不再赘述。
图8为本发明一个实施例中提供的一种MQ负载均衡设备的结构示意图,如图所示,该设备包括:
存储器301、处理器302,存储器301中存储有处理器302可执行的计算机程序,当该设备运行时,处理器302执行存储器301中存储的计算机程序,以实现前述实施例中MQ负载均衡方法的步骤。其实现原理和技术效果类似,不再赘述。
本发明还提供了一种存储介质,所述存储介质上存储有计算机程序,该计算机程序被执行时,实现前述实施例中MQ负载均衡方法的步骤。
图9为本发明中一个实施例中提供的一种mq-proxy与平台业务组件和消息引擎系统的关系示意图,图10为本发明一个实施例中提供的一种mq-proxy架构示意图。图11为本发明中一个实施例中提供的一种mq-proxy 初始化和消费消息流程示意图。图12为本发明中一个实施例中提供的一种mq-proxy 发送业务流程示意图。其中,Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。如图所示:
mq-proxy 作为中间层由多个服务实例组成,一方面通过thrift方式与多个云会议平台中的业务服务组件保持长连接,通过远程方法调用的方式接受业务服务器发送的消息,向业务服务器推送发给业务服务器的消息。
另一方面作为消息引擎的生产者将业务服务器发送的消息发送到消息引擎系统,作为消息引擎的消费者将消息引擎系统中发送给业务服务器的消息拉取并推送到业务服务器。
mq-proxy中根据需要还实现了,客户端健康管理,消息负载均衡,消息限流,TPS监控等功能。
显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。
Claims (10)
1.一种MQ负载均衡方法,其特征在于,包括:
根据业务需要建立消息队列,所述消息队列包括同一会议的消息;
根据业务服务器的数量和所述消息队列的集合大小进行负载均衡,将所述消息队列存储于所述业务服务器中。
2.根据权利要求1所述的一种MQ负载均衡方法,其特征在于,所述负载均衡的方式包括:
比较所述业务服务器的数量和所述消息队列的集合大小:
若相等,则为每一个所述消息队列分配一个所述业务服务器;
若大于,则为每一个所述消息队列分配一个所述业务服务器,其余的所述业务服务器空闲。
3.根据权利要求2所述的一种MQ负载均衡方法,其特征在于,所述负载均衡的方式还包括:
若所述业务服务器的数量小于所述消息队列的集合大小,则判断所述业务服务器的数量能否被所述消息队列的集合大小整除,能整除的情况下,平均分配;不能整除的情况下,至少有一个所述业务服务器多分配一个所述消息队列,其余平均分配。
4.根据权利要求1所述的一种MQ负载均衡方法,其特征在于,所述根据业务需要建立消息队列,其中,每个业务建立至少一个消息队列,所述消息队列的个数按需配置。
5.根据权利要求1所述的MQ负载均衡方法,其特征在于,还包括:根据使用消息所属会议的会议ID与消息队列集合中元素的个数取模运算,将消息分配至消息队列中,用于实现将属于同一会议ID的消息分配至同一消息队列中。
6.根据权利要求1所述的MQ负载均衡方法,其特征在于,还包括重新负载平衡机制,所述重新负载平衡机制用于按照负载均衡算法重新给所述业务服务器分配所述消息队列。
7.根据权利要求6所述的MQ负载均衡方法,其特征在于,所述重新负载平衡机制的条件包括:
前端代理模块与新的业务服务器建立长链接;
还包括:
前端代理模块发现任一已链接的所述业务服务器失效。
8.一种MQ负载均衡装置,其特征在于,所述装置包括:
前端代理模块,用于根据业务需要建立消息队列,所述消息队列的集合中的元素包括同一会议的消息;
业务服务器模块,用于存储所述消息队列;
所述前端代理模块还用于根据业务服务器的数量和所述消息队列的集合的大小进行负载均衡;
所述前端代理模块与所述业务服务器模块保持长链接。
9.一种MQ负载均衡设备,其特征在于,包括:存储器、处理器,所述存储器中存储有在所述处理上运行的计算机程序,所述处理器执行所述计算机程序时,实现上述权利要求1-7中任一项所述方法的步骤。
10.一种存储介质,其特征在于,所述存储介质上存储有计算机程序,该计算机程序被执行时,实现权利要求1-7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110010909.5A CN112346892A (zh) | 2021-01-06 | 2021-01-06 | 一种mq负载均衡方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110010909.5A CN112346892A (zh) | 2021-01-06 | 2021-01-06 | 一种mq负载均衡方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112346892A true CN112346892A (zh) | 2021-02-09 |
Family
ID=74427407
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110010909.5A Pending CN112346892A (zh) | 2021-01-06 | 2021-01-06 | 一种mq负载均衡方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112346892A (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170046235A1 (en) * | 2015-08-14 | 2017-02-16 | Oracle International Corporation | Restoration of ui state in transactional systems |
CN111585867A (zh) * | 2020-03-31 | 2020-08-25 | 北京奇艺世纪科技有限公司 | 消息处理方法、装置、电子设备及可读存储介质 |
-
2021
- 2021-01-06 CN CN202110010909.5A patent/CN112346892A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170046235A1 (en) * | 2015-08-14 | 2017-02-16 | Oracle International Corporation | Restoration of ui state in transactional systems |
CN111585867A (zh) * | 2020-03-31 | 2020-08-25 | 北京奇艺世纪科技有限公司 | 消息处理方法、装置、电子设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9351153B2 (en) | Apparatus for end-user transparent utilization of computational, storage, and network capacity of mobile devices, and associated methods | |
US20050071842A1 (en) | Method and system for managing data using parallel processing in a clustered network | |
CN105338086A (zh) | 一种分布式的消息转发方法 | |
CN113422842B (zh) | 一种考虑网络负载的分布式电力用电信息数据采集系统 | |
CN104735095A (zh) | 一种云计算平台作业调度方法及装置 | |
CN101800762A (zh) | 一种对多个业务进行融合的业务云系统及业务实现方法 | |
US20200050479A1 (en) | Blockchain network and task scheduling method therefor | |
CN112069265A (zh) | 配置数据的同步方法、业务数据系统、计算机系统和介质 | |
CN102724132B (zh) | 一种提高tcp连接复用处理效率的方法及装置 | |
CN113468221A (zh) | 一种基于kafka消息数据总线的系统集成方法 | |
CN111427822A (zh) | 一种边缘计算系统 | |
CN110855739A (zh) | 一种基于容器技术的异地及异构资源统一管理方法及系统 | |
US20130097322A1 (en) | Scalable distributed multicluster device management server architecture and method of operation thereof | |
CN111245887B (zh) | Hbase连接动态保持方法、设备、存储介质及系统 | |
CN112346892A (zh) | 一种mq负载均衡方法、装置、设备及存储介质 | |
CN111711675A (zh) | 一种针对局域网内并发消息传递的解决方法 | |
CN110913018A (zh) | 一种分布式调控服务系统 | |
CN104052723A (zh) | 信息处理方法和服务器 | |
CN114629782A (zh) | 一种多个云平台间抗毁接替方法 | |
CN112073223B (zh) | 一种管控云计算终端和云服务器运作的系统及其方法 | |
JPH05265954A (ja) | コンピュータシステム | |
US10896077B2 (en) | Messaging abstraction layer for integration with message oriented middleware platforms | |
CN111541667A (zh) | 一种系统间消息通信的方法、设备、存储介质 | |
CN112272228A (zh) | 分布式注册中心架构 | |
CN112765294A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210209 |
|
RJ01 | Rejection of invention patent application after publication |