本文转载自:作为Java程序员,你应该知道的RocketMQ工作原理

先简单了解一下各个模块的功能,下面会有章节详细介绍各个模块的功能。
Producer和Consumer很好理解,顾名思义就是生产者和消费者,生产者负责生产消息,消费者负责消费消息,这2块的逻辑都是由业务使用者定义的。
Broker是RocketMQ的核心,Broker实现了消息的存储、拉取等功能。Broker通常以集群方式启动,并可配置主从,每个Broker上提供对指定topic的服务。理解了Broker的原理,以及和其他服务交互的方式就基本弄懂了整个消息中间件的原理。
NameSrv是一个无状态的名称服务,可以集群部署。所有Broker启动的时候会向NameSrv注册自己的信息。Producer会根据目标topic从NameSrv获取到达指定Broker的路由信息,Consumer同理。
对于Producer端RocketMQ采用了轮询的方式保证了负载均衡,Consumer端通常采用cluster集群方式消费消息,我们可以自己定义消息在消息端的分配方式。另外,MQ还提供了顺序消息的特性,简单了解一下MQ提供的特性即可,具体实现后面章节会进行阐述。
源码目录结构介绍&Remoting通信层
源码目录结构介绍 RocketMQ源码分为以下几个package:
- rocketmq-broker:整个mq的核心,他能够接受producer和consumer的请求,并调用store层服务对消息进行处理。HA服务的基本单元,支持同步双写,异步双写等模式。
- rocketmq-client:mq客户端实现,目前官方仅仅开源了java版本的mq客户端,c++,go客户端有社区开源贡献。
- rocketmq-common:一些模块间通用的功能类,比如一些配置文件、常量。
- rocketmq-example:官方提供的例子,对典型的功能比如order message,push consumer,pull consumer的用法进行了示范。
- rocketmq-filtersrv:消息过滤服务,相当于在broker和consumer中间加入了一个filter代理。
- rocketmq-remoting:基于netty的底层通信实现,所有服务间的交互都基于此模块。
- rocketmq-srvut</

RocketMQ的核心是Broker,它负责消息存储和拉取。NameSrv提供无状态的名称服务,Producer根据topic从其获取Broker信息。Producer通过轮询发送消息,Consumer采用集群方式消费。RocketMQ支持顺序消息和分布式事务。本文深入探讨Producer启动流程、消息发送、事务消息处理等关键点。
最低0.47元/天 解锁文章
337

被折叠的 条评论
为什么被折叠?



