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源码(17)—RebalanceService消费者负载均衡过程源码