自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 14. Consumer-负载均衡

集群模式下,同一个消费组下,多个消费者同时订阅同一个主题,但是主题下的每个队列同时只能被一个消费端消费,所以需要进行负载均衡,确定哪些队列由哪些消费者消费 。如果消费者数量大于队列数,可能有的消费者没有分配到队列;相反,如果如果消费者数量小于队列数,一个消费者可能会被分配到多个队列。负载均衡是由RebalanceService线程实现的。RebalanceService.run方...

2019-11-08 00:53:19 339

原创 13. Consumer-消费进度管理

不管是顺序消费还是并发消费,在一批消息消费完成后都会将消息从processQueue中移除,返回最小processQueue的最小偏移量,并更新消费进度。广播模式下,消费进度文件存储在各个消费端本地,因为多个消费端是同时消费的,且互相独立的。集群模式下,多个消费端共同消费同一个队列,且同一时间只有一个消费端在消费,所以消费进度文件是存储在broker的。消费进度管理接口是:Off...

2019-11-08 00:52:26 341

原创 12. Consumer-顺序消费

rocketmq支持顺序消费,如果发送端只设置一个队列,可实现顺序消息。并发消费逻辑是由ConsumeMessageOrderlyService服务处理的。ConsumeMessageOrderlyService.start方法: public void start() { if (MessageModel.CLUSTERING.equals(ConsumeMe...

2019-11-08 00:51:30 462

原创 11. Consumer-并发消费

消息拉取后存入ProcessQueue中,然后调用consumeMessageService.submitConsumeRequest方法通知消费服务进行消费。这是个异步过程,使消息消费和消息拉取解耦。Rocketmq消息消费支持并发消费和顺序消费,这里先介绍并发消费。并发消费逻辑是由ConsumeMessageConcurrentlyService服务处理的。ConsumeMe...

2019-11-08 00:49:22 534

原创 10. Consumer-消息拉取

"Consumer-消费流程"文章的最后,启动消费实例中,就启动了消息拉取服务。rocketmq消息拉取是由PullMessageService服务处理的。PullMessageService.run方法 : public void run() { log.info(this.getServiceName() + " service started"); ...

2019-11-08 00:47:11 339

原创 9. Consumer-启动流程

Rocketmq支持两种消费模式:拉模式和推模式,其中推模式也是基于拉模式实现的,这里主要看下基于推模式的消息消费流程。常见的推模式的消费端代码如下:public static void main(String[] args) throws MQClientException { String group = "test-group"; String to...

2019-11-08 00:45:02 528

原创 8. Broker-主从同步机制

主从同步机制为了提高消息的高可用性,避免单点故障导致消息不能消费,rocketmq引入了主从同步机制,如果broker主宕机后,消费者可以继续从broker从拉取消息。rocketmq主从同步由HAService实现的,原理为:1.master启动在特定端口监听slave连接2.slave和master建立连接后,指定拉取消息的偏移量3.slave保存master传过来的消息,反馈...

2019-11-08 00:41:46 382

原创 7. Broker-文件刷盘机制

rocketmq的消息存储是先写入内存,再根据不同的刷盘策略进行刷盘,rocketmq支持两种刷盘模式:同步刷盘:消息写入后等待刷盘成功返回异步刷盘:消息写入内存后直接返回,由后台线程去定时刷盘broker配置文件中设置flushDiskType字段,可选择ASYNC_FLUSH(异步刷盘)和 SYNC_FLUSH(同步刷盘)前面"Broker-消息存储流程"中...

2019-11-08 00:39:32 467

原创 6. Broker-消息存储文件

1. CommitLog文件commitlog的文件组织如下所示,每个文件固定大小,默认1G,一个文件写满,创建另一个文件。文件名为文件中第一条消息的全局偏移量。commitlog使用MappedFile和MappedFileQueue来组织消息文件。MappedFileQueue对应一个文件夹,MappedFile对应一个commitlog文件接着上一节,进入CommitLog....

2019-11-08 00:37:12 209

原创 5. Broker-消息存储流程

1. Broker启动流程broker启动类位于org.apache.rocketmq.broker.BrokerStartup public static void main(String[] args) { start(createBrokerController(args)); } public static BrokerContro...

2019-11-08 00:30:37 285

原创 4. 消息发送流程

简介本节主要跟踪消息发送的过程,RocketMQ支持三种消息发送方式:同步,异步和单向同步(sync):发送之后,同步等待直到消息服务器返回发送结果或者超时。异步(async): 发送之后,指定回调函数,立即返回,发送结果在回调任务中处理(新线程)。单向(oneway): 发送者单向向服务器发送消息,只管发,不关心消息是否成功发送。消息发送流程大致如下图所示。st...

2019-11-08 00:09:00 936

原创 3. 路由中心-namesrv

1. 数据结构namesrv主要维护集群的路由信息(broker,topic,queue), 其他模块broker,consumer和producer都会连接namesrv定期注册/获取路由信息。namesrv维护的数据结构包括public class RouteInfoManager { private final HashMap<String/*...

2019-11-07 23:57:53 257

原创 2. 调试环境搭建

1. 获取源代码RocketMQ已于2017年提交到Apache基金会,GitHub代码库地址:https://github.com/apache/rocketmq这里使用的版本是<groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-all</artifactId>...

2019-11-07 23:49:29 193

原创 1. Rocketmq简介

1. MQ背景消息队列是高并发系统的核心组件之一,主要提供•异步,提高系统性能•削峰,解决瞬时写压力大问题•解耦,解决不同系统间的耦合,避免依赖系统一死全死目前主流的mq包括rocketmq,kafka,rabbitmq,activemq。rocketmq特点包括:• 支持事务型消息(消息发送和DB操作保持两方的最终一致性,rabbitmq和kafka不支持)...

2019-11-07 23:48:07 121

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除