Rocketmq负载均衡和扩展

Posted 宜信财富技术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rocketmq负载均衡和扩展相关的知识,希望对你有一定的参考价值。

Rocketmq负载均衡和扩展


摘要

Rocketmq诞生于阿里巴巴,设计目的是支持顺序消息和拥有海量消息堆积能力, rabbitmq需要借助第三方HA软件和复杂消息同步配置不同,rocketmq天然就是负载均衡和易扩展的。

 

概念介绍:

Producer(消费者),Consumer(生产者),Broker(消息服务器),Name Server(服务发现),topic(主题),queue(队列)。

 

Producer(消费者):

消息生产者,负责生产消息,一般由业务系统负责生产消息。

 

Consumer(生产者):

消息消费者,负责消费消息,一般是后台系统负责异步消费。

 

Broker(消息服务器):

消息中转角色,负责存储消息,转发消息,一般也成为Server。在JMS规范中成为Provider。

 

Name Server(服务发现):

用于客户端寻址,协调Producer和Consumer连接Broker,Producer和Consumer定时从NameServer获取可用Broker。

 

topic(主题):

一类消息的集合,和JMS规范定义的Topic订阅/发布模型不同。

 

queue(队列):

消息实际传递的通道,一个队列的消息是严格顺序传递的。

 

负载均衡和扩展:

 

1.消息队列:


Rocketmq的负载均衡的最小载体的是queue(消息队列)。在rocketmq中,发送消息之前,需要创建消息topic,broker会自动创建专属这个topic的多个队列,一个topic实际上是多个queue的集合。消息的发送和接受都是通过队列完成的,单个队列的消息是严格顺序传递的。

 

2.发送消息:



如图所示,5个队列可以部署到一台机器上,也可以分别部署在5台不同的机器上,发送消息通过轮询队列的方式发送,每个队列接收平均的消息量。通过增加机器(broker),可以水平扩展队列容量。另外也可以自定义方式选择发送指定队列。

 

3.订阅接收消息:




如图所示,如果有5个队列,2个Consumer,那么第一个Consumer消费3个队列,第二个consumer消费2个队列。这样可以达到平均消费的目的,可以水平扩展consumer来提高消费能力。但是consumer数量要小于等于队列数量,如果consumer超过队列数量,那么多余的consumer将不能消费消息。



总结:

  综上,rocketmq在设计上充分的考虑了负载均衡和扩展,带来了如部署简单、易于理解、开发便利等诸多好处。

以上是关于Rocketmq负载均衡和扩展的主要内容,如果未能解决你的问题,请参考以下文章

深入剖析 RocketMQ 源码 - 负载均衡机制

RocketMQ源码(17)—RebalanceService消费者负载均衡过程源码

RocketMQ源码(17)—RebalanceService消费者负载均衡过程源码

RocketMQ消费者消息队列负载均衡

一文讲透 RocketMQ 消费者是如何负载均衡的

rocketmq的消费者集群消费消息,实现负载均衡