RocketMQ——初识RocketMQ

北城以北 提交于 2020-03-01 22:40:01

下图是从官网摘过来的RocketMQ架构图
在这里插入图片描述

RocketMQ架构分为四个部分:NameServer,Broker,Producer,Consumer。其中每一部分都可以水平扩展以避免单点故障。

NameServer:NameServer集群的每一个节点都会记录完整的路由信息,提供可靠的读写服务,并支持存储扩展。NameServer负责管理以下两个部分:

  • Broker Management:Broker集群的启动需要向NameServer注册,NameServer与Broker会建立心跳连接,随时检查一个Broker是否存活
  • Routing Management:NameServer集群的每一个节点都会记录整个Broker集群完整的路由信息,与客户端(客户端指Producer和Consumer,下文同义)查询的queue信息

客户端可能需要从NameServer查询相关的路由信息,但是客户端怎么知道NameServer的地址?有以下四种方式进行配置:

  • 在代码中使用如producer.setNamesrvAddr("ip:port")此类代码
  • 在配置中配置rocketmq.namesrv.addr
  • 配置环境变量NAMESRV_ADDR
  • 直接使用HTTP Endpoint

如果以上四种方式都使用了,会有一个生效优先级:
编程方式 > 配置 > 环境变量 > HTTP Endpoint

Broker:RocketMQ的Broker使用轻量级的Topic和Queue存储消息,并支持容错机制,也就是会备份消息。Broker还提供灾难恢复,统计信息,警报机制。

在这里插入图片描述
以上是Broker的模块图,其中包括:

  • Remoting Module:这是Broker的入口,处理来自客户端的请求
  • Client Manager:管理客户端,并维持消费者的订阅信息
  • Store Service:提供一组API存储或查询物理磁盘上的信息
  • HA Service:处理主备Broker之间的数据同步
  • Index Service:按指定的key为消息生成索引,以提供快速的消息查询

Producer:Producer集群向Broker集群发送消息时,会使用多种的负载均衡机制,以支持fast failure和低延迟

Consumer:Consumer也支持集群部署,同ActiveMQ一样支持消息广播。RocketMQ还支持实时消息订阅机制

最后放上来自官网的RocketMQ,ActiveMQ,Kafka对比图以供参考
在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!