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

文档序号:9581820阅读:563来源:国知局
一种轻量级消息中间件的实现方法与系统的制作方法
【技术领域】
[0001] 本发明属于通信技术领域,尤其设及一种轻量级消息中间件的实现方法与系统。
【背景技术】
[0002] 近些年来,移动互联网正经历着爆炸式的发展,为了适应运种飞速的发展,各种移 动互联网软件也在不停的进行着版本的更迭和业务的扩展,所W如今移动互联网软件的设 计必须考虑到各个系统模块之间的松禪合性。中间件技术能很好的实现系统模块间松禪合 性的需求,其中使用较多的是消息中间件(Message化ientedMiddleware,MOM)技术。
[000引 目前已提出多种消息中间件技术,比如基于java消息服务(JavaMessage Service,JM巧的ActiveMQ消息中间件框架、基于超文本传输协议(HyperTextTransfer Protocol,HIT巧协议级的轻量级消息队列服务组件UCMQ(-种轻量的HTTP协议级消息队 列服务组件)等,运些方法都在一定程度上解决了系统模块间松禪合性的需求。
[0004] 但是现有的运些消息中间件架构在消息处理速度、系统硬件利用率(处理器、内 存、磁盘等)和负载均衡方面都存在或多或少的不足。在当今移动互联网大数据量的压力 下,消息中间件系统的消息处理速度、硬件利用率和负载均衡策略显得尤为关键。

【发明内容】

[0005] 为了解决上述技术问题,本发明提供了一种轻量级消息中间件的实现方法,首先 能够满足系统模块间很好的松禪合性,其次能在消息处理速度、系统硬件利用方面和负载 均衡方面有着良好的表现。
[0006] 为了实现上述目的,本发明提供了一种轻量级消息中间件的实现方法,包括:
[0007] (1)消息发送端生产消息,并将消息传递到消息服务器中;
[0008] (2)消息服务器在收到消息后,先将消息持久化到数据库中;然后根据特定负载 均衡策略从消息接收端集群中选出接收此消息的目的消息接收端,并将消息定向发送到目 的消息接收端;
[0009] (3)消息接收端接收到消息后,根据消息的内容进行相应的处理。
[0010] 在本发明的一个实施例中,所述步骤(1)消息发送端生产消息,并将消息传递到 消息服务器具体包括:
[0011] 在消息发送前,首先要通过运行在单例模式下的生产者实例中的方法创建消息生 产者实例;
[0012] 在创建消息生产者实例的时候,还需要声明对于该消息生产者实例的一些基本配 置,具体包括:
[0013] 消息发送端发送消息的虚拟目的地址,即消息的主题,消息发送端和消息接收端 是通过绑定在同一个消息主题上而配对的;
[0014] 此外,基本配置还包括消息发送端的失败重试次数、是否对消息内容进行压缩和 发送消息的并行线程池数目。
[0015] 在本发明的一个实施例中,所述步骤(2)消息服务器将消息持久化到数据库的过 程,具体包括:
[0016] 持久化的数据库选择了大数据量下插入和读取性能都非常比较优秀的非关系型 数据库MongoDB;
[0017] 消息的存储采用的是MongoDB的Ca卵edCollection结构。
[0018] 在本发明的一个实施例中,所述步骤(2)消息服务器根据特定负载均衡策略从消 息接收端集群中选出接收此消息的目的消息接收端,具体包括:
[0019] 负载均衡策略是通过对各个消息接收端的实时信息来进行综合的比较分析和筛 选的,所述实时信息包括CPU、内存、吞吐速率、网络速率、磁盘大小和对同主题消息的历史 处理速率等;具体为:
[0020] 在节点服务器i加入集群后,定期将自己的性能信息通过公式(1)进行计算,然后 发送给监控服务器存储下来,
[0021] C(Al) =kl*C(P) +k2*C(M) +k3*C(V) +K4*C(脚 +k5*C值)+k6*C灯)(I) 阳02引式(1)中C(巧代表节点服务器i的CPU频率,C(M)则代表节点服务器i的内存大 小,C(V)代表节点服务器i的吞吐速率,C(脚代表节点服务器i的网络速率,CO)代表节 点服务器i的磁盘大小,C(T)代表节点服务器i对主题为A的消息的历史平均处理速率;
[0023] 节点服务器还要定期的将自己的系统负载通过公式(2)计算然后发送给监控服 务器,
[0024] L(Ai) =kl礼ip+k2 礼im+k3 礼iv+k4 礼m+k5 礼id+k6 礼It似
[00巧]式中,Lip代表节点服务器i当前的CPU占用率,Lim代表节点服务器i当前的内存 占用率,Lu代表节点服务器i的IO使用率,L1。代表节点服务器i的带宽使用率,LId代表 节点服务器i的磁盘使用率,Lit代表节点服务器i对消息主题A近期设定时间段内处理速 率与历史平均处理速率的比值;
[00%] 监控服务器也会定期的通过公式(3)计算每个节点服务器的负载容余,并将计算 的值、节点性能C、节点实时负载L实时的更新到消费者状态日志中,
[0027] Mi=MTi+kl*At*C/L-k2*Rn/C(3)
[0028] 式中Mti表示上次时间片到达时,由服务器传入的负载容余,kl*A巧C/L表示在 At时间内完成的负载,k2*RyC表示At时间内为服务器节点添加请求而增加的负载;
[0029] 当在某个T间隔内,有消息发送请求到达时,消息服务器会根据消息发送的量来 设定一个负载容余的区间[Mmm,MmJ;
[0030] 消息服务器然后根据运个区间,查找消费者状态日志,选取在运个区间内的节点 服务器组成集合S,然后对S中的各个节点计算权值Wi=Ci/Li,选取权值最大的节点服务 器进行消息的发送。
[0031] 上述的各个消息接收端服务器的实时信息是维护在一个消息接收端集群状态日 志中的;
[0032] 消息接收端集群状态日志是由一个对消息接收端服务器集群进行监控的服务器 定期更新的。
[0033] 在本发明的一个实施例中,所述步骤似消息服务器将消息定向的发送到目的消 息接收端,具体包括:
[0034] 消息服务器将消息定向发送到指定的消息接收端是通过socket实现的。
[0035] 在本发明的一个实施例中,所述步骤(3)消息接收端对消息的接收,其特征在于, 所述方法还包括:在消息接收端接收消息之前,要先获取消息接收端对象实例,具体包括:
[0036] 在消息接收前,首先要通过运行在单例模式下的消费者实例中的方法创建消息接 收端实例。
[0037] 在创建消息接收端实例的时候,还需要声明对于该消息接收端实例的一些基本配 置,具体包括:
[0038] 消息接收端接收消息的虚拟目的地址,即消息的主题,消息发送端和消息接收端 是通过绑定在同一个消息主题上而配对的;
[0039] 此外,基本配置还包括消息接收端的失败重试次数、接收消息的类型和接收消息 的并行线程池数目。
[0040] 本发明还提供了一种轻量级消息中间件的实现系统,包括消息发送端、消息服务 器和消息接收端,其中:
[0041] 消息发送端负责获取绑定在某一消息主题的消息生产者实例、消息的生产和将消 息发送到消息服务器;
[0042] 消息服务器负责将接收到的消息持久化存储到数据库中、根据特定的负载均衡策 略从消息接收端集群中选出合适的目的消息接收端W及将数据库中的消息转发给目的消 息接收端;
[0043] 消息接收端负责获取绑定在某一消息主题的消息接收端实例、消息的接收和消息 接收后的处理。 W44] 与现有技术相比,本发明具有如下有益效果:
[0045] (1)本发明在消息持久化存储的层面采用了在大数据量下插入和读取性能更为出 色的非关系型数据库MongoDB,所W本发明的消息中间件系统在消息的处理速度方面会有 比较好的表现。
[0046] (2)本发明存储消息的结构采用了Ca卵edCollection的环状结构,避免了消息 发送成功W后对消息的删除操作;同时消息服务器将消息往消息接收端的转发采用的是 socket的定向发送的方式,替代了消息队列的使用。运两个方面的改进使得本发明的消息 中间件方法在系统硬件利用方面的性能得到了提升。
[0047] (3)本发明在消息服务器端进行消息定向转发的目的消费者筛选时,设计了一种 更加全面和高效的负载均衡策略,该策略考虑了各个消息接收端的CPU、内存、吞吐速率、网 络速率、磁盘大小和对同主题消息的历史处理速率来进行综合的分析和评定。
【附图说明】 W48]图1为本发明消息中间件方法结构图; W例图2为本发明消息中间件方法流程图;
[0050]
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1