一种轻量级消息中间件的实现方法与系统的制作方法_3

文档序号:9581820阅读:来源:国知局
Mti表示上次时间片到达时,由服务器传入的负载容余,kl*A巧C/L表示在 At时间内完成的负载,k2*RyC表示At时间内为服务器节点添加请求而增加的负载。
[0090] 所W本发明负载均衡策略的实现是运样的:在服务器节点加入集群后,首先将自 己的性能信息通过公式1进行计算(其中由于首次加入节点C(T)可W取0),然后发送给监 控服务器存储下来。由于公式2中的C(T)代表的是处理该主题消息的历史平均时间,所W 服务器节点性能要定期(本发明取30min)的传递给监控服务器。节点服务器还要定期灯, 本发明取Imin)的将自己的系统负载通过公式2计算然后发送给监控服务器。监控服务器 也会定期的通过公式3计算每个节点服务器的负载容余,并将计算的值、节点性能C、节点 实时负载L实时的更新到消费者状态日志中。当在某个T间隔内,有消息发送请求到达时, 消息服务器会根据消息发送的量来设定一个负载容余的区间[Mmm,MmJ。运个设计的思路 是,如果选取了负载容余很大的节点服务器来处理很少量的消息消费,运样也会造成系统 资源的浪费。消息服务器然后根据运个区间,查找消费者状态日志,选取在运个区间内的节 点服务器组成集合S,然后对S中的各个节点计算权值Wi=Ci/Li,选取权值最大的节点服 务器进行消息的发送。
[0091] 运种根据消费者所在虚拟机器状态(虚拟服务器的性能及实时负载)进行定向主 动发送的负载均衡策略有效减轻了客观的环境因素带来的影响的同时真正的考虑到了各 个节点服务器的实时状态及各个服务器节点对某个主题消息的消费速度,所W运种负载均 衡的策略对于本发明中间件架构来说是一种更加全面、合理的策略。
[0092] 通过W上的实施方式的描述,所属领域的技术人员可W清楚地了解到本发明可借 助软件加必需的通用硬件的方式来实现,当然也可W通过硬件,但很多情况下前者是更佳 的实施方式。基于运样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部 分可WW软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计 算机的硬盘或光盘等,包括若干指令用W使得一台计算机设备(可W是个人计算机,服务 器,或者网络设备等)执行本发明各个实施例所述的方法。
[0093] 本发明还提供了一种轻量级消息中间件的实现系统,包括消息发送端、消息服务 器和消息接收端,其中:
[0094] 所述消息发送端,用于生产消息,并将消息传递到消息服务器中;
[0095] 消息服务器,用于将消息持久化到数据库中,然后根据特定负载均衡策略从消息 接收端集群中选出接收此消息的目的消息接收端,并将消息定向发送到目的消息接收端;
[0096] 消息接收端,用于在接收到消息后,根据消息内的容进行相应的处理。
[0097] W上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人 员来说,在不脱离本申请原理的前提下,还可W做出若干改进和润饰,运些改进和润饰也应 视本申请的保护范围。
【主权项】
1. 一种轻量级消息中间件的实现方法,其特征在于,所述方法包括: (1) 消息发送端生产消息,并将消息传递到消息服务器中; (2) 消息服务器在收到消息后,先将消息持久化到数据库中,然后根据特定负载均衡策 略从消息接收端集群中选出接收此消息的目的消息接收端,并将消息定向发送到目的消息 接收端; (3) 消息接收端接收到消息后,根据消息内的容进行相应的处理。2. 根据权利要求1所述的方法,其特征在于,所述步骤(1)中在消息发送端发送消息之 前,首先要通过运行在单例模式下的生产者实例中的方法创建消息生产者实例。3. 根据权利要求2所述的方法,其特征在于,在创建消息生产者实例的时候,还需要声 明对于该消息生产者实例的一些基本配置,基本配置具体包括: 消息发送端发送消息的虚拟目的地址,以及消息发送端的失败重试次数、是否对消息 内容进行压缩和发送消息的并行线程池数目。4. 如权利要求1或2所述的方法,其特征在于,所述步骤⑵中消息服务器将消息持久 化到数据库的过程,具体包括: 选择非关系型数据库MongoDB作为持久化的数据库; 且消息的存储采用的是MongoDB的CappedCollection结构。5. 如权利要求1所述的方法,其特征在于,所述步骤(2)中消息服务器根据特定负载均 衡策略从消息接收端集群中选出接收此消息的目的消息接收端,具体包括: 负载均衡策略是通过对各个消息接收端的实时信息来进行综合的比较分析和筛选的, 所述实时信息包括CPU、内存、吞吐速率、网络速率、磁盘大小和对同主题消息的历史处理速 率;具体为: 在节点服务器i加入集群后,定期将自己的性能信息通过公式(1)进行计算,然后发送 给监控服务器存储下来, C(AD=kl*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)计算然后发送给监控服务器,UAj=kl*Lip+k2*Lin+k3*Llv+k4*Lin+k5*Lld+k6*Llt (2) 式中,L1P代表节点服务器i当前的CPU占用率,Lini代表节点服务器i当前的内存占用 率,Llv代表节点服务器i的10使用率,Lin代表节点服务器i的带宽使用率,Lld代表节点 服务器i的磁盘使用率,Llt代表节点服务器i对消息主题A近期设定时间段内处理速率与 历史平均处理速率的比值; 监控服务器也会定期的通过公式(3)计算每个节点服务器的负载容余,并将计算的 值、节点性能C、节点实时负载L实时的更新到消费者状态日志中, M,=MTl+kl*Δt*C/L-k2*Rn/C(3) 式中ΜΤι表示上次时间片到达时,由服务器传入的负载容余,kl*Δt*C/L表示在Δt时 间内完成的负载,k2*Rn/C表示△t时间内为服务器节点添加请求而增加的负载; 当在某个T间隔内,有消息发送请求到达时,消息服务器会根据消息发送的量来设定 一个负载容余的区间[M_,M_]; 消息服务器然后根据这个区间,查找消费者状态日志,选取在这个区间内的节点服务 器组成集合S,然后对S中的各个节点计算权值1=C,选取权值最大的节点服务器进 行消息的发送。6. 如权利要求5所述的方法,其特征在于,上述的各个消息接收端的实时信息是维护 在一个消息接收端集群状态日志中的;且消息接收端集群状态日志是由一个对消息接收端 服务器集群进行监控的服务器定期更新的。7. 如权利要求1或2所述的方法,其特征在于,所述步骤(2)消息服务器将消息定向的 发送到目的消息接收端,具体包括: 消息服务器将消息定向发送到指定的消息接收端是通过socket实现的。8. 根据权利要求1所述的方法,所述步骤⑶中消息接收端接收消息之前,要先获取消 息接收端对象实例,具体包括:在消息接收前,首先要通过运行在单例模式下的消费者实例 中的方法创建消息接收端实例。9. 根据权利要求8所述的方法,其特征在于,所述方法还包括:在创建消息接收端实例 的时候,还需要声明对于该消息接收端实例的一些基本配置,具体包括: 消息接收端接收消息的虚拟目的地址,即消息的主题,消息发送端和消息接收端是通 过绑定在同一个消息主题上而配对的; 此外,基本配置还包括消息接收端的失败重试次数、接收消息的类型和接收消息的并 行线程池数目。10. -种轻量级消息中间件的实现系统,其特征在于,包括消息发送端、消息服务器和 消息接收端,其中: 所述消息发送端,用于生产消息,并将消息传递到消息服务器中; 消息服务器,用于将消息持久化到数据库中,然后根据特定负载均衡策略从消息接收 端集群中选出接收此消息的目的消息接收端,并将消息定向发送到目的消息接收端; 消息接收端,用于在接收到消息后,根据消息内的容进行相应的处理。
【专利摘要】本发明公开了一种轻量级消息中间件的实现方法,能够用于软件系统中各个模块之间的消息交互通信,以实现松耦合系统架构的目的。本发明方法包括:消息发送端消息的生产和发送;消息服务器对消息的接收以及持久化过程;消息服务器根据特定的负载均衡方案来选择消息接收端集群中的一台机器来完成该消息的消费,并通过特定框架来实现消息向该台机器的定向发送过程;消息接收端对消息的接收和处理过程。
【IPC分类】H04L29/08
【公开号】CN105338061
【申请号】CN201510631625
【发明人】戴彬, 张焜
【申请人】华中科技大学
【公开日】2016年2月17日
【申请日】2015年9月29日
当前第3页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1