RocketMq 总结

架构

一个提供以订阅发布模式的消息中间件:
在这里插入图片描述

概念
topic:一级消息类型
tag:二级消息类型

NameServer

特点:无状态、集群部署、节点间通信(意味着其数据不一致)
作用:路由注册、发现、删除
心跳检测
各节点均持有broker全量信息

Broker

提供topic服务,启动后向nameServer注册
作用:
1、消息存储:刷盘机制
同步刷盘:producer向master发送消息后,master/slave均写入成功才返回
异步刷盘:即写入master后立刻返回,然后slaver从master进行pull消息进行同步
如何保证高性能?
效率上讲,文件系统高于KV存储,kv存储优于关系型数据库
1)commitLog文件,串行存储所有主题消息
2)consumeQueue,消息消费队列,由commitLog异步同步
3)IndexFile,消息索引,快速定位消息
2、消息转发
3、消息同步
高可用(HA):即从设计上减少系统不能提供服务的时间;
一般方式为:多主多从 同步/异步复制
master:负责消息的读写,不断发送commitlog给slave节点
slave:只负责读消息,上报commitlog偏移量,即已同步到的位置

生产者

特点:与NameServer长连接,读取topic信息
与Master broker长连接,发送心跳

消费者

集群模式:同一消息只允许被一个消费者消费;
广播模式:被所有消费者消费一次;
消息确认(ACK)
延迟级别:不支持定时消息调度,提供几个延迟级别(实现:为每个延迟级别创建一个调度任务):10s,20s……
事务消息:本质是进行commit、rollback、未知状态的处理,言而总之,基于二阶段提交和事务状态回查机制做最终一致性
概念:半消息:消息为“暂不投递”,成为半消息;
1)发送消息到MQ服务器,消息状态为SEND_OK
2)执行DB操作;DB执行成功Commit DB操作,DB执行失败Rollback DB操作。
3)如果DB执行成功,状态为COMMIT_MESSAGE;失败:ROLLBACK_MESSAGE;
4)MQ内部提供一个名为“事务状态服务”的服务,检查事务消息的状态,如果发现消息未COMMIT,则通过Producer启动时注册的TransactionCheckListener来回调业务系统,业务系统在checkLocalTransactionState方法中检查DB事务状态,如果成功,则回复COMMIT_MESSAGE,否则回复ROLLBACK_MESSAGE;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值