RocketMQ
v熙成v
这个作者很懒,什么都没留下…
展开
-
九、RocketMQ Remoting(网络层)
1.问题RocketMQ线程模型是如何设计的 哪些请求走了10909端口,哪些走10911端口呢 如何实现长连接 如何实现同步、异步调用的超时控制2.核心实现1.类图doc/cn/image/rocketmq_design_3 2.服务端NettyRemotingServer 1.构造方法中,完成公共线程池的初始化 2.useEpoll:是否使用epoll->初始化netty的boss以及worker 条件:islinux && nettySer原创 2020-06-28 22:56:18 · 956 阅读 · 1 评论 -
八、RocketMQ事务消息全流程解析
1.交互流程 解决了Producer端的本地事务和消息发送的原子性问题。并没有解决Producer端本地事务、消息发送、消息消费三者的一致性问题。消息消费目前仅是靠MQ本身的消息可靠性来保证。 2.类设计 1.事务消息是普通消息的一种特例,基本的流程和普通消息是一样的。所以在实现的过程中进行了分层抽象,从而避免了对RocketMQ原有存储机制的修改。...原创 2020-05-02 12:36:12 · 704 阅读 · 0 评论 -
七、RocketMQ消息长轮询(Longpolling)与FileRegion优化
1.长轮询概述 背景:当broker端无数据时,即相应为空,consuemr不断拉取,对broker造成压力,那应该采用何种方式? 长轮循:长轮循并不是真正的推送;长轮循是传统的轮循技术的变种,但它允许模拟推送的机制在一些情况下:安全验证等。 2.Long Polling in RocketMq 1.consumer发送request,broker通过网络层拿...原创 2020-05-02 12:26:31 · 537 阅读 · 0 评论 -
六、RocketMQ消息定时消息
DelayLV:共有18档次,0到17,每个LV对应一个consumeQueue。时间间隔配置在broker.conf,messageDelayLevel,默认值1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h,空格分割,支持4种时间单位:s、m、h、d。 ScheduleMessageService线程,启动时候给所有的延...原创 2020-05-02 12:20:46 · 549 阅读 · 0 评论 -
五、RocketMQ消息消费重试
1.consumer prepare:消费者启动,订阅正常的topic(包含tag)以及一个%RETRY%consumergroup的topic,并将订阅关系(SubscriptionData)以心跳方式上传给broker。consumer会与所有的broker建立连接发送心跳。 2.consumer经过RebalanceService.doRebalance后,开始pull message...原创 2020-05-02 12:19:30 · 1299 阅读 · 3 评论 -
四、RocketMQ消息消费总览
1.消费者启动 2.消息消费总览 1.线程ReblanceService: 1.作用: a.Rebalanceservice线程每隔20s对消费者订阅的主题进行一次队列重新分配,每一次分配都会获取主题的所有队列、从 Broker 服务器实时查询当前该主题该消费组内消费者列表,对新分配的消息队列会创建对应的 PullRequest 对象。在一个 JVM 进程中,同...原创 2020-05-02 12:10:56 · 920 阅读 · 0 评论 -
三、RocketMQ消息存储-全流程解析|存储文件介绍|内存映射
1.消息写入全流程解析2.消息写入依赖类时序正在上传…重新上传取消正在上传…重新上传取消正在上传…重新上传取消正在上传…重新上传取消正在上传…重新上传取消正在上传…重新上传取消正在上传…重新上传取消正在上传…重新上传取消转存失败重新上传取消3.CommitLog文件 一个消息的日志文件,是如何存到磁盘中?rocketmq vs kafka Kafka:一个topic...原创 2020-04-20 01:07:22 · 1060 阅读 · 0 评论 -
二、RocketMQ消息发送-全流程交互解析
RocketMQ消息发送消息发送的高可用设计 生产者感知broker宕机是需要时间的,生产者本地缓存需要定时任务周期刷新(30s),例如在两台Broker组成的集群中a:q0,q1,q2,q3)b:q0,q1,q2,q3,按照轮询算法,如果上一次选择的是a:q0队列,当broker宕机后,RocketMQ如何避免再次发送到broker a 造成重试后还是失败? produce...原创 2020-04-13 23:43:34 · 1373 阅读 · 0 评论 -
一、RocketMQ总体架构|参与者如何通信的?
RocketMQ总体架构各参与者是如何通信的? nameServer集群:本身的高可用可通过部署多台NameServer服务器来实现,但彼此间互不通信,也就是NameServer服务器之间在某一时刻的数据并不完全相同,但保证多台NameServer的最终一致性。NameServe集群可以理解为无状态的。 生产者: 某一时刻只会连接一台namerServer,拉取主题的配置信息;...原创 2020-04-13 18:41:36 · 375 阅读 · 0 评论