CN105338061A - 一种轻量级消息中间件的实现方法与系统 - Google Patents

一种轻量级消息中间件的实现方法与系统 Download PDF

Info

Publication number
CN105338061A
CN105338061A CN201510631625.2A CN201510631625A CN105338061A CN 105338061 A CN105338061 A CN 105338061A CN 201510631625 A CN201510631625 A CN 201510631625A CN 105338061 A CN105338061 A CN 105338061A
Authority
CN
China
Prior art keywords
message
server
sink end
node server
message sink
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.)
Granted
Application number
CN201510631625.2A
Other languages
English (en)
Other versions
CN105338061B (zh
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.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
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 Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN201510631625.2A priority Critical patent/CN105338061B/zh
Publication of CN105338061A publication Critical patent/CN105338061A/zh
Application granted granted Critical
Publication of CN105338061B publication Critical patent/CN105338061B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种轻量级消息中间件的实现方法,能够用于软件系统中各个模块之间的消息交互通信,以实现松耦合系统架构的目的。本发明方法包括:消息发送端消息的生产和发送;消息服务器对消息的接收以及持久化过程;消息服务器根据特定的负载均衡方案来选择消息接收端集群中的一台机器来完成该消息的消费,并通过特定框架来实现消息向该台机器的定向发送过程;消息接收端对消息的接收和处理过程。

Description

一种轻量级消息中间件的实现方法与系统
技术领域
本发明属于通信技术领域,尤其涉及一种轻量级消息中间件的实现方法与系统。
背景技术
近些年来,移动互联网正经历着爆炸式的发展,为了适应这种飞速的发展,各种移动互联网软件也在不停的进行着版本的更迭和业务的扩展,所以如今移动互联网软件的设计必须考虑到各个系统模块之间的松耦合性。中间件技术能很好的实现系统模块间松耦合性的需求,其中使用较多的是消息中间件(MessageOrientedMiddleware,MOM)技术。
目前已提出多种消息中间件技术,比如基于java消息服务(JavaMessageService,JMS)的ActiveMQ消息中间件框架、基于超文本传输协议(HyperTextTransferProtocol,HTTP)协议级的轻量级消息队列服务组件UCMQ(一种轻量的HTTP协议级消息队列服务组件)等,这些方法都在一定程度上解决了系统模块间松耦合性的需求。
但是现有的这些消息中间件架构在消息处理速度、系统硬件利用率(处理器、内存、磁盘等)和负载均衡方面都存在或多或少的不足。在当今移动互联网大数据量的压力下,消息中间件系统的消息处理速度、硬件利用率和负载均衡策略显得尤为关键。
发明内容
为了解决上述技术问题,本发明提供了一种轻量级消息中间件的实现方法,首先能够满足系统模块间很好的松耦合性,其次能在消息处理速度、系统硬件利用方面和负载均衡方面有着良好的表现。
为了实现上述目的,本发明提供了一种轻量级消息中间件的实现方法,包括:
(1)消息发送端生产消息,并将消息传递到消息服务器中;
(2)消息服务器在收到消息后,先将消息持久化到数据库中;然后根据特定负载均衡策略从消息接收端集群中选出接收此消息的目的消息接收端,并将消息定向发送到目的消息接收端;
(3)消息接收端接收到消息后,根据消息的内容进行相应的处理。
在本发明的一个实施例中,所述步骤(1)消息发送端生产消息,并将消息传递到消息服务器具体包括:
在消息发送前,首先要通过运行在单例模式下的生产者实例中的方法创建消息生产者实例;
在创建消息生产者实例的时候,还需要声明对于该消息生产者实例的一些基本配置,具体包括:
消息发送端发送消息的虚拟目的地址,即消息的主题,消息发送端和消息接收端是通过绑定在同一个消息主题上而配对的;
此外,基本配置还包括消息发送端的失败重试次数、是否对消息内容进行压缩和发送消息的并行线程池数目。
在本发明的一个实施例中,所述步骤(2)消息服务器将消息持久化到数据库的过程,具体包括:
持久化的数据库选择了大数据量下插入和读取性能都非常比较优秀的非关系型数据库MongoDB;
消息的存储采用的是MongoDB的CappedCollection结构。
在本发明的一个实施例中,所述步骤(2)消息服务器根据特定负载均衡策略从消息接收端集群中选出接收此消息的目的消息接收端,具体包括:
负载均衡策略是通过对各个消息接收端的实时信息来进行综合的比较分析和筛选的,所述实时信息包括CPU、内存、吞吐速率、网络速率、磁盘大小和对同主题消息的历史处理速率等;具体为:
在节点服务器i加入集群后,定期将自己的性能信息通过公式(1)进行计算,然后发送给监控服务器存储下来,
C(Ai)=k1*C(P)+k2*C(M)+k3*C(V)+K4*C(N)+k5*C(D)+k6*C(T)(1)
式(1)中C(P)代表节点服务器i的CPU频率,C(M)则代表节点服务器i的内存大小,C(V)代表节点服务器i的吞吐速率,C(N)代表节点服务器i的网络速率,C(D)代表节点服务器i的磁盘大小,C(T)代表节点服务器i对主题为A的消息的历史平均处理速率;
节点服务器还要定期的将自己的系统负载通过公式(2)计算然后发送给监控服务器,
L(Ai)=k1*Lip+k2*Lim+k3*Liv+k4*Lin+k5*Lid+k6*Lit(2)
式中,Lip代表节点服务器i当前的CPU占用率,Lim代表节点服务器i当前的内存占用率,Liv代表节点服务器i的IO使用率,Lin代表节点服务器i的带宽使用率,Lid代表节点服务器i的磁盘使用率,Lit代表节点服务器i对消息主题A近期设定时间段内处理速率与历史平均处理速率的比值;
监控服务器也会定期的通过公式(3)计算每个节点服务器的负载容余,并将计算的值、节点性能C、节点实时负载L实时的更新到消费者状态日志中,
Mi=MTi+k1*Δt*C/L-k2*Rn/C(3)
式中MTi表示上次时间片到达时,由服务器传入的负载容余,k1*Δt*C/L表示在Δt时间内完成的负载,k2*Rn/C表示Δt时间内为服务器节点添加请求而增加的负载;
当在某个T间隔内,有消息发送请求到达时,消息服务器会根据消息发送的量来设定一个负载容余的区间[Mmin,Mmax];
消息服务器然后根据这个区间,查找消费者状态日志,选取在这个区间内的节点服务器组成集合S,然后对S中的各个节点计算权值Wi=Ci/Li,选取权值最大的节点服务器进行消息的发送。
上述的各个消息接收端服务器的实时信息是维护在一个消息接收端集群状态日志中的;
消息接收端集群状态日志是由一个对消息接收端服务器集群进行监控的服务器定期更新的。
在本发明的一个实施例中,所述步骤(2)消息服务器将消息定向的发送到目的消息接收端,具体包括:
消息服务器将消息定向发送到指定的消息接收端是通过socket实现的。
在本发明的一个实施例中,所述步骤(3)消息接收端对消息的接收,其特征在于,所述方法还包括:在消息接收端接收消息之前,要先获取消息接收端对象实例,具体包括:
在消息接收前,首先要通过运行在单例模式下的消费者实例中的方法创建消息接收端实例。
在创建消息接收端实例的时候,还需要声明对于该消息接收端实例的一些基本配置,具体包括:
消息接收端接收消息的虚拟目的地址,即消息的主题,消息发送端和消息接收端是通过绑定在同一个消息主题上而配对的;
此外,基本配置还包括消息接收端的失败重试次数、接收消息的类型和接收消息的并行线程池数目。
本发明还提供了一种轻量级消息中间件的实现系统,包括消息发送端、消息服务器和消息接收端,其中:
消息发送端负责获取绑定在某一消息主题的消息生产者实例、消息的生产和将消息发送到消息服务器;
消息服务器负责将接收到的消息持久化存储到数据库中、根据特定的负载均衡策略从消息接收端集群中选出合适的目的消息接收端以及将数据库中的消息转发给目的消息接收端;
消息接收端负责获取绑定在某一消息主题的消息接收端实例、消息的接收和消息接收后的处理。
与现有技术相比,本发明具有如下有益效果:
(1)本发明在消息持久化存储的层面采用了在大数据量下插入和读取性能更为出色的非关系型数据库MongoDB,所以本发明的消息中间件系统在消息的处理速度方面会有比较好的表现。
(2)本发明存储消息的结构采用了CappedCollection的环状结构,避免了消息发送成功以后对消息的删除操作;同时消息服务器将消息往消息接收端的转发采用的是socket的定向发送的方式,替代了消息队列的使用。这两个方面的改进使得本发明的消息中间件方法在系统硬件利用方面的性能得到了提升。
(3)本发明在消息服务器端进行消息定向转发的目的消费者筛选时,设计了一种更加全面和高效的负载均衡策略,该策略考虑了各个消息接收端的CPU、内存、吞吐速率、网络速率、磁盘大小和对同主题消息的历史处理速率来进行综合的分析和评定。
附图说明
图1为本发明消息中间件方法结构图;
图2为本发明消息中间件方法流程图;
图3为本发明消息中间件方法消息发送端模块图;
图4为本发明消息中间件方法消息服务器端模块图;
图5为本发明消息中间件方法消息接收端模块图;
图6为本发明消息中间件方法消息存储结构图;
图7为本发明消息中间件方法负载均衡策略图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明中消息中间件方法的结构如图1所示,在消息发送的过程中,应用程序通过本地配置文件生成相应的消息生产者工厂对象,然后根据实际需要,通过该消息生产者工厂对象生产所需的消息生产者对象,用以发送主题为A的Object消息。消息生产者通过Pigeon远程调用消息生产者服务器提供的接口,通过DAO将Object消息存入数据库中。Pigeon是一个远程服务调用的框架,用于集群服务提供者具有负载均衡的功能。
在消息消费的过程中,消息接收端从MongoDB中固化A主题消息的CappedCollection结构中将消息读出,然后对消息进行封装,通过netty架构提供的socket通信方式将消息最终传输到消息接收端端,供应用程序处理。
本发明中提供了一种轻量级消息中间件的方法,流程示意图如图2所示,具体包括:
(1)消息发送端生产消息,并将消息传递到消息服务器中;
(2)消息服务器在收到消息后,先将消息持久化到数据库中,然后根据特定负载均衡策略从消息接收端集群中选出接收此消息的目的消息接收端,并将消息定向发送到目的消息接收端;
(3)消息接收端接收到消息后,根据消息内的容进行相应的处理。
本发明中消息中间件方法消息发送端的模块设计如图3所示,具体包括:
消息生产者主要包含两个业务,即消息的生产和消息的发送。消息的发送需要通过调用Mongo消息生产者对象里的方法来进行,而Mongo消息生产者的获取则需要先获取工作在单例模式下的生产者工厂(ProducerFactory)的单例。然后调用其中的createProducer方法就能够获得Monge消息生产者实例(MongoMessageProducer实现了MessageProducer接口)将消息发送到消息服务器了。生产者工厂ProducerFactory的接口定义如表1所示。
表1
其中createProducer方法的入参Destination对象是指明消息的主题的,这样即实现了消息生产者在消息主题上的绑定。而closeProducer方法则可以主动的关闭指定的消息生产者对象。消息生产者的接口定义如表2所示。
表2
返回值 接口
String sendMessage(Object content)
String sendMessage(Object content,String messageType)
Producer的接口只有一种,sendMessage,但是参数有两种不同的选择,其中content是消息的具体内容所封装的类,messageType用以指定消息类型,可用于消息过滤。
本发明中消息中间件方法消息服务器端的模块设计如图4所示,具体包括:
消息服务器首先将从消息生产者接收到的消息持久化存储到MongoDB数据库中。然后是对该条消息的定向转发,消息服务器先通过本发明中的负载均衡策略来从消费者集群服务器中选出一台合适的机器进行消息的定向发送。负载均衡策略的实现是通过对比集群中各个消费者服务器的关键指标来实现的,而这些关键指标则维护在一个由消费者状态监控服务器定时更新的消费者状态日志中的。当通过负载均衡接口选择出了合适的消费者服务器后,则调用消息定向转发接口先将消息从MongoDB数据库中读出,然后在通过socket将消息发送到已知目的地址的消费者服务器上。
本发明中消息中间件方法消息接收端的模块设计如图5所示,具体包括:
和消息生产者类似,消息的接收也需要先获取到消息接收端对象。即要先获取消费者工厂(ConsumerFactory)单例,然后调用其中的createConsumer获得Mongo消息接收端实例以进行消息接收。消费者工厂的接口定义如表3所示。
表3
其中createConsumer方法的入参中同样有Destination对象,即消息接收端也是通过这个对象来绑定到指定的消息主题上的。CloseConsumer是用来关闭指定的消息接收端对象的。消息接收端接口的定义如表4所示。
表4
返回值 接口
void setListener(MessageListener listener)
void start()
其中setListener是收到消息的回调方法,需要把MessageListener类注入到MessageConsumer方法中,在MessageListener的,并在onMessage方法中写入收到消息后的操作。Start则是MessageConsumer开始工作的方法。
本发明中消息中间件方法消息存储结构如图6所示,具体包括:
本发明的消息的持久化存储并不是按照消息从生产者那里发送出来的时间顺序的,而是根据消息的入库时间戳加上一个自增的数值合起来作为主键进行存储的,而消息的消费端则是按照主键的顺序来消费数据库中的消息的。由于网络延时等原因,经常会导致先生产出来的消息并不一定能够先到数据库,所以消息最终被消费的顺序一般不是消息从生产者那里发出的顺序。这样的做的好处是消息中间件系统不需要有额外的开销来维护消息的顺序性,使得消息中间件系统更加轻量级。
本发明中消息中间件方法负载均衡策略如图7所示,具体包括:
前面已经介绍了,本发明的消息消费的机制采取的是定向发送的策略,即发送的主动权在持久化存储消息的服务器手中,所以只要持久化存储消息的服务器在发送前能够准确的知晓集群中各个机器的健康和负载状态,就能够合理的分配消息发送到集群中某个消费者那里,以实现负载均衡。这种负载均衡策略的关键点是持久化存储消息的服务器在发送消息给消费者前如何知晓集群中各个消费者的健康和负载状态。本论文是通过持久化存储消息的服务器读取一个消费者状态日志来知晓集群中各个消费者所在虚拟机器当前状态的,状态日志的具体设计将会在本章后续内容中讲述。这个状态日志是由定期(每隔时间T)轮询集群中各个消费者状态的监控服务器负责更新的,每一个消息主题(Topic)都会有一个这样的日志。监控服务器的主要工作是根据本发明的负载均衡策略来计算集群中各个机器的性能状态,并更新消费者状态日志以供发送端选择合适的机器进行消息的发送。本发明的负载均衡策略借鉴了负载容余策略的基本思想,并结合了O2O结算系统消息中间件的业务特性而得出的。负载容余策略在计算节点服务器性能的时候考虑了CPU容量P、内存大小M、系统I/O速率V和网络速率N。但是在结算系统中,消息的持久化存储需要占用磁盘空间D,而且服务器对不同主题(topic)的处理速度T也是不尽相同的,所以本发明负载均衡策略的设计中也考虑了磁盘空间和消息处理速度的因素。所以本发明针对消息主题A的节点i服务器性能计算公式如下。
C(Ai)=k1*C(P)+k2*C(M)+k3*C(V)+K4*C(N)+k5*C(D)+k6*C(T)(1)
式中C(P)代表i服务器的CPU频率,C(M)则代表i服务器的内存大小,C(V)代表i服务器的吞吐速率,C(N)代表i服务器的网络速率,C(D)代表i服务器的磁盘大小,C(T)代表i服务器对主题为A的消息的历史平均处理速率。而相应的针对消息主题A实时节点服务器i负载计算公式如下。
L(Ai)=k1*Lip+k2*Lim+k3*Liv+k4*Lin+k5*Lid+k6*Lit(2)
式中,Lip代表节点服务器i当前的CPU占用率,Lim代表服务器i当前的内存占用率,Liv代表服务器i的IO使用率,Lin代表服务器i的带宽使用率,Lid代表服务器i的磁盘使用率,Lit代表服务器i对消息主题A近期处理(一段时间内,本发明取10min)速率与历史平均处理速率的比值。本发明借鉴负载容余的思想,给出结算系统消息中间件服务器的计算公式如下。
Mi=MTi+k1*Δt*C/L-k2*Rn/C(3)
式中MTi表示上次时间片到达时,由服务器传入的负载容余,k1*Δt*C/L表示在Δt时间内完成的负载,k2*Rn/C表示Δt时间内为服务器节点添加请求而增加的负载。
所以本发明负载均衡策略的实现是这样的:在服务器节点加入集群后,首先将自己的性能信息通过公式1进行计算(其中由于首次加入节点C(T)可以取0),然后发送给监控服务器存储下来。由于公式2中的C(T)代表的是处理该主题消息的历史平均时间,所以服务器节点性能要定期(本发明取30min)的传递给监控服务器。节点服务器还要定期(T,本发明取1min)的将自己的系统负载通过公式2计算然后发送给监控服务器。监控服务器也会定期的通过公式3计算每个节点服务器的负载容余,并将计算的值、节点性能C、节点实时负载L实时的更新到消费者状态日志中。当在某个T间隔内,有消息发送请求到达时,消息服务器会根据消息发送的量来设定一个负载容余的区间[Mmin,Mmax]。这个设计的思路是,如果选取了负载容余很大的节点服务器来处理很少量的消息消费,这样也会造成系统资源的浪费。消息服务器然后根据这个区间,查找消费者状态日志,选取在这个区间内的节点服务器组成集合S,然后对S中的各个节点计算权值Wi=Ci/Li,选取权值最大的节点服务器进行消息的发送。
这种根据消费者所在虚拟机器状态(虚拟服务器的性能及实时负载)进行定向主动发送的负载均衡策略有效减轻了客观的环境因素带来的影响的同时真正的考虑到了各个节点服务器的实时状态及各个服务器节点对某个主题消息的消费速度,所以这种负载均衡的策略对于本发明中间件架构来说是一种更加全面、合理的策略。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本发明还提供了一种轻量级消息中间件的实现系统,包括消息发送端、消息服务器和消息接收端,其中:
所述消息发送端,用于生产消息,并将消息传递到消息服务器中;
消息服务器,用于将消息持久化到数据库中,然后根据特定负载均衡策略从消息接收端集群中选出接收此消息的目的消息接收端,并将消息定向发送到目的消息接收端;
消息接收端,用于在接收到消息后,根据消息内的容进行相应的处理。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本申请的保护范围。

Claims (10)

1.一种轻量级消息中间件的实现方法,其特征在于,所述方法包括:
(1)消息发送端生产消息,并将消息传递到消息服务器中;
(2)消息服务器在收到消息后,先将消息持久化到数据库中,然后根据特定负载均衡策略从消息接收端集群中选出接收此消息的目的消息接收端,并将消息定向发送到目的消息接收端;
(3)消息接收端接收到消息后,根据消息内的容进行相应的处理。
2.根据权利要求1所述的方法,其特征在于,所述步骤(1)中在消息发送端发送消息之前,首先要通过运行在单例模式下的生产者实例中的方法创建消息生产者实例。
3.根据权利要求2所述的方法,其特征在于,在创建消息生产者实例的时候,还需要声明对于该消息生产者实例的一些基本配置,基本配置具体包括:
消息发送端发送消息的虚拟目的地址,以及消息发送端的失败重试次数、是否对消息内容进行压缩和发送消息的并行线程池数目。
4.如权利要求1或2所述的方法,其特征在于,所述步骤(2)中消息服务器将消息持久化到数据库的过程,具体包括:
选择非关系型数据库MongoDB作为持久化的数据库;
且消息的存储采用的是MongoDB的CappedCollection结构。
5.如权利要求1所述的方法,其特征在于,所述步骤(2)中消息服务器根据特定负载均衡策略从消息接收端集群中选出接收此消息的目的消息接收端,具体包括:
负载均衡策略是通过对各个消息接收端的实时信息来进行综合的比较分析和筛选的,所述实时信息包括CPU、内存、吞吐速率、网络速率、磁盘大小和对同主题消息的历史处理速率;具体为:
在节点服务器i加入集群后,定期将自己的性能信息通过公式(1)进行计算,然后发送给监控服务器存储下来,
C(Ai)=k1*C(P)+k2*C(M)+k3*C(V)+K4*C(N)+k5*C(D)+k6*C(T)(1)
式(1)中C(P)代表节点服务器i的CPU频率,C(M)则代表节点服务器i的内存大小,C(V)代表节点服务器i的吞吐速率,C(N)代表节点服务器i的网络速率,C(D)代表节点服务器i的磁盘大小,C(T)代表节点服务器i对主题为A的消息的历史平均处理速率;
节点服务器还要定期的将自己的系统负载通过公式(2)计算然后发送给监控服务器,
L(Ai)=k1*Lip+k2*Lim+k3*Liv+k4*Lin+k5*Lid+k6*Lit(2)
式中,Lip代表节点服务器i当前的CPU占用率,Lim代表节点服务器i当前的内存占用率,Liv代表节点服务器i的IO使用率,Lin代表节点服务器i的带宽使用率,Lid代表节点服务器i的磁盘使用率,Lit代表节点服务器i对消息主题A近期设定时间段内处理速率与历史平均处理速率的比值;
监控服务器也会定期的通过公式(3)计算每个节点服务器的负载容余,并将计算的值、节点性能C、节点实时负载L实时的更新到消费者状态日志中,
Mi=MTi+k1*Δt*C/L-k2*Rn/C(3)
式中MTi表示上次时间片到达时,由服务器传入的负载容余,k1*Δt*C/L表示在Δt时间内完成的负载,k2*Rn/C表示Δt时间内为服务器节点添加请求而增加的负载;
当在某个T间隔内,有消息发送请求到达时,消息服务器会根据消息发送的量来设定一个负载容余的区间[Mmin,Mmax];
消息服务器然后根据这个区间,查找消费者状态日志,选取在这个区间内的节点服务器组成集合S,然后对S中的各个节点计算权值Wi=Ci/Li,选取权值最大的节点服务器进行消息的发送。
6.如权利要求5所述的方法,其特征在于,上述的各个消息接收端的实时信息是维护在一个消息接收端集群状态日志中的;且消息接收端集群状态日志是由一个对消息接收端服务器集群进行监控的服务器定期更新的。
7.如权利要求1或2所述的方法,其特征在于,所述步骤(2)消息服务器将消息定向的发送到目的消息接收端,具体包括:
消息服务器将消息定向发送到指定的消息接收端是通过socket实现的。
8.根据权利要求1所述的方法,所述步骤(3)中消息接收端接收消息之前,要先获取消息接收端对象实例,具体包括:在消息接收前,首先要通过运行在单例模式下的消费者实例中的方法创建消息接收端实例。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:在创建消息接收端实例的时候,还需要声明对于该消息接收端实例的一些基本配置,具体包括:
消息接收端接收消息的虚拟目的地址,即消息的主题,消息发送端和消息接收端是通过绑定在同一个消息主题上而配对的;
此外,基本配置还包括消息接收端的失败重试次数、接收消息的类型和接收消息的并行线程池数目。
10.一种轻量级消息中间件的实现系统,其特征在于,包括消息发送端、消息服务器和消息接收端,其中:
所述消息发送端,用于生产消息,并将消息传递到消息服务器中;
消息服务器,用于将消息持久化到数据库中,然后根据特定负载均衡策略从消息接收端集群中选出接收此消息的目的消息接收端,并将消息定向发送到目的消息接收端;
消息接收端,用于在接收到消息后,根据消息内的容进行相应的处理。
CN201510631625.2A 2015-09-29 2015-09-29 一种轻量级消息中间件的实现方法与系统 Expired - Fee Related CN105338061B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510631625.2A CN105338061B (zh) 2015-09-29 2015-09-29 一种轻量级消息中间件的实现方法与系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510631625.2A CN105338061B (zh) 2015-09-29 2015-09-29 一种轻量级消息中间件的实现方法与系统

Publications (2)

Publication Number Publication Date
CN105338061A true CN105338061A (zh) 2016-02-17
CN105338061B CN105338061B (zh) 2019-04-23

Family

ID=55288336

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510631625.2A Expired - Fee Related CN105338061B (zh) 2015-09-29 2015-09-29 一种轻量级消息中间件的实现方法与系统

Country Status (1)

Country Link
CN (1) CN105338061B (zh)

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105912412A (zh) * 2016-03-31 2016-08-31 北京奇虎科技有限公司 消息分发方法、装置及系统
CN107038077A (zh) * 2016-11-17 2017-08-11 阿里巴巴集团控股有限公司 消息蓄洪方法及装置
CN107172187A (zh) * 2017-06-12 2017-09-15 北京明朝万达科技股份有限公司 一种负载均衡系统和方法
CN107295045A (zh) * 2016-03-31 2017-10-24 阿里巴巴集团控股有限公司 一种消息处理方法及装置
CN107451211A (zh) * 2017-07-13 2017-12-08 广东技术师范学院 一种基于RabbitMQ和MongoDB的下载系统
CN107911230A (zh) * 2017-10-24 2018-04-13 丹露成都网络技术有限公司 基于metaq集群的自动监控恢复方法
CN108804451A (zh) * 2017-04-28 2018-11-13 北京京东尚科信息技术有限公司 生成主键的方法、装置、电子设备和可读存储介质
CN109068183A (zh) * 2018-08-08 2018-12-21 湖南快乐阳光互动娱乐传媒有限公司 一种直播弹幕分发方法及装置
CN109412821A (zh) * 2017-08-16 2019-03-01 阿里巴巴集团控股有限公司 消息处理方法和装置以及电子设备
CN109710421A (zh) * 2018-11-16 2019-05-03 深圳证券交易所 消息中间件的接收者异常处理方法、服务器及存储介质
CN109714409A (zh) * 2018-12-21 2019-05-03 优估(上海)信息科技有限公司 一种消息的管理方法和系统
CN109729148A (zh) * 2018-11-30 2019-05-07 北京奇艺世纪科技有限公司 一种消息处理方法、系统及设备
CN109981744A (zh) * 2019-02-28 2019-07-05 东软集团股份有限公司 数据的分发方法、装置、存储介质及电子设备
CN110515748A (zh) * 2019-08-28 2019-11-29 腾讯科技(深圳)有限公司 一种消息处理的方法及相关装置
CN110708312A (zh) * 2019-09-30 2020-01-17 交控科技股份有限公司 一种ats中消息传递的方法、系统和ats
CN110837426A (zh) * 2019-11-06 2020-02-25 腾讯科技(深圳)有限公司 消息处理方法、装置及系统、存储介质
CN111258727A (zh) * 2019-12-02 2020-06-09 广州赢领信息科技有限公司 面向实时流处理的负载均衡方法、电子设备及存储介质
CN111817912A (zh) * 2020-06-28 2020-10-23 中国工商银行股份有限公司 基于轻量级脚本的接入层热点流量监控方法及装置
CN112597249A (zh) * 2020-12-26 2021-04-02 湖南快乐阳光互动娱乐传媒有限公司 一种业务数据的同步分发存储方法及系统
CN112738203A (zh) * 2020-12-25 2021-04-30 中孚安全技术有限公司 一种基于私有协议的数据处理集群组件方法及系统
CN113055480A (zh) * 2021-03-17 2021-06-29 网宿科技股份有限公司 一种调度方法及装置
CN114143334A (zh) * 2021-12-03 2022-03-04 爱信诺征信有限公司 一种终端控制方法及装置
CN117914933A (zh) * 2024-03-20 2024-04-19 福建时代星云科技有限公司 一种物联网组网方法及终端

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2899947A1 (en) * 2013-08-22 2015-07-29 Inspur Electronic Information Industry Co., Ltd. Component oriented hybrid cloud operating system architecture and communication method thereof

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2899947A1 (en) * 2013-08-22 2015-07-29 Inspur Electronic Information Industry Co., Ltd. Component oriented hybrid cloud operating system architecture and communication method thereof

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
田绍亮,左明,吴绍伟: "一种改进的基于动态反馈的负载均衡算法", 《计算机工程与设计》 *
詹先银: "基于发布/订阅的消息中间件技术及其应用", 《CNKI中国优秀硕士学位论文全文数据库(电子期刊)》 *

Cited By (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107295045A (zh) * 2016-03-31 2017-10-24 阿里巴巴集团控股有限公司 一种消息处理方法及装置
CN105912412A (zh) * 2016-03-31 2016-08-31 北京奇虎科技有限公司 消息分发方法、装置及系统
CN107038077A (zh) * 2016-11-17 2017-08-11 阿里巴巴集团控股有限公司 消息蓄洪方法及装置
CN107038077B (zh) * 2016-11-17 2021-07-27 创新先进技术有限公司 消息蓄洪方法及装置
CN108804451A (zh) * 2017-04-28 2018-11-13 北京京东尚科信息技术有限公司 生成主键的方法、装置、电子设备和可读存储介质
CN108804451B (zh) * 2017-04-28 2021-07-30 北京京东尚科信息技术有限公司 生成主键的方法、装置、电子设备和可读存储介质
CN107172187A (zh) * 2017-06-12 2017-09-15 北京明朝万达科技股份有限公司 一种负载均衡系统和方法
CN107172187B (zh) * 2017-06-12 2019-02-22 北京明朝万达科技股份有限公司 一种负载均衡系统和方法
CN107451211B (zh) * 2017-07-13 2019-11-19 广东技术师范学院 一种基于RabbitMQ和MongoDB的下载系统
CN107451211A (zh) * 2017-07-13 2017-12-08 广东技术师范学院 一种基于RabbitMQ和MongoDB的下载系统
CN109412821B (zh) * 2017-08-16 2021-09-10 阿里巴巴集团控股有限公司 消息处理方法和装置以及电子设备
CN109412821A (zh) * 2017-08-16 2019-03-01 阿里巴巴集团控股有限公司 消息处理方法和装置以及电子设备
CN107911230B (zh) * 2017-10-24 2020-08-28 丹露成都网络技术有限公司 基于metaq集群的自动监控恢复方法
CN107911230A (zh) * 2017-10-24 2018-04-13 丹露成都网络技术有限公司 基于metaq集群的自动监控恢复方法
CN109068183A (zh) * 2018-08-08 2018-12-21 湖南快乐阳光互动娱乐传媒有限公司 一种直播弹幕分发方法及装置
CN109710421A (zh) * 2018-11-16 2019-05-03 深圳证券交易所 消息中间件的接收者异常处理方法、服务器及存储介质
CN109710421B (zh) * 2018-11-16 2020-12-08 深圳证券交易所 消息中间件的接收者异常处理方法、服务器及存储介质
CN109729148A (zh) * 2018-11-30 2019-05-07 北京奇艺世纪科技有限公司 一种消息处理方法、系统及设备
CN109714409A (zh) * 2018-12-21 2019-05-03 优估(上海)信息科技有限公司 一种消息的管理方法和系统
CN109714409B (zh) * 2018-12-21 2021-09-14 优估(上海)信息科技有限公司 一种消息的管理方法和系统
CN109981744A (zh) * 2019-02-28 2019-07-05 东软集团股份有限公司 数据的分发方法、装置、存储介质及电子设备
CN110515748B (zh) * 2019-08-28 2022-02-01 腾讯科技(深圳)有限公司 一种消息处理的方法及相关装置
CN110515748A (zh) * 2019-08-28 2019-11-29 腾讯科技(深圳)有限公司 一种消息处理的方法及相关装置
CN110708312A (zh) * 2019-09-30 2020-01-17 交控科技股份有限公司 一种ats中消息传递的方法、系统和ats
CN110837426A (zh) * 2019-11-06 2020-02-25 腾讯科技(深圳)有限公司 消息处理方法、装置及系统、存储介质
CN110837426B (zh) * 2019-11-06 2024-01-30 腾讯科技(深圳)有限公司 消息处理方法、装置及系统、存储介质
CN111258727A (zh) * 2019-12-02 2020-06-09 广州赢领信息科技有限公司 面向实时流处理的负载均衡方法、电子设备及存储介质
CN111258727B (zh) * 2019-12-02 2023-06-16 广州赢领信息科技有限公司 面向实时流处理的负载均衡方法、电子设备及存储介质
CN111817912A (zh) * 2020-06-28 2020-10-23 中国工商银行股份有限公司 基于轻量级脚本的接入层热点流量监控方法及装置
CN111817912B (zh) * 2020-06-28 2022-02-25 中国工商银行股份有限公司 基于轻量级脚本的接入层热点流量监控方法及装置
CN112738203A (zh) * 2020-12-25 2021-04-30 中孚安全技术有限公司 一种基于私有协议的数据处理集群组件方法及系统
CN112597249A (zh) * 2020-12-26 2021-04-02 湖南快乐阳光互动娱乐传媒有限公司 一种业务数据的同步分发存储方法及系统
CN113055480A (zh) * 2021-03-17 2021-06-29 网宿科技股份有限公司 一种调度方法及装置
CN114143334A (zh) * 2021-12-03 2022-03-04 爱信诺征信有限公司 一种终端控制方法及装置
CN114143334B (zh) * 2021-12-03 2024-04-09 爱信诺征信有限公司 一种终端控制方法及装置
CN117914933A (zh) * 2024-03-20 2024-04-19 福建时代星云科技有限公司 一种物联网组网方法及终端

Also Published As

Publication number Publication date
CN105338061B (zh) 2019-04-23

Similar Documents

Publication Publication Date Title
CN105338061A (zh) 一种轻量级消息中间件的实现方法与系统
CN105407180A (zh) 服务器的消息推送方法和装置
US8799399B2 (en) Near-real time distributed usage aggregation system
CN105007337A (zh) 集群系统负载均衡的方法和系统
CN106470123B (zh) 日志收集方法、客户端、服务器和电子设备
KR20170106648A (ko) 대용량 네트워크 데이터의 처리 기법
CN113220715B (zh) 一种数据处理方法、系统、计算机及可读存储介质
WO2013140336A2 (en) System and method of managing servers for streaming desk top applications
CN111913818A (zh) 一种确定服务间依赖关系的方法及相关装置
US9104488B2 (en) Support server for redirecting task results to a wake-up server
CN109254854A (zh) 异步调用方法、计算机装置及存储介质
CN112783672B (zh) 一种远程过程调用处理方法及系统
CN110620699A (zh) 消息到达率确定方法、装置、设备和计算机可读存储介质
US20150109915A1 (en) Network traffic management
CN114490100B (zh) 一种消息队列遥测传输负载均衡方法、装置及服务器
CN111949521B (zh) 软件性能测试方法及装置
CN104468248A (zh) 业务性能的监控方法、反向代理服务器、统计分析服务器及系统
CN104052723A (zh) 信息处理方法和服务器
Maassen et al. Middleware adaptation with the delphoi service
CN115499432A (zh) 家庭终端算力资源管理系统及算力资源调度方法
CN115883639A (zh) 一种web实时消息推送方法及装置、设备、存储介质
CN113254097A (zh) 配置信息的下发方法和装置、电子设备和存储介质
CN115277595B (zh) 数据发送方法及相关装置
CN106095534A (zh) 一种计算任务处理方法和系统
CN111541667A (zh) 一种系统间消息通信的方法、设备、存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20190423

Termination date: 20190929