rocketmq queue_学习笔记:RocketMQ

1、消息队列作用:

① 削峰填谷

② 系统解耦

③ 提升性能

④ 蓄流压测

2、RocketMq组件:

① Name Server

② Broker(Master,slave)

③ Producer

④ Consumer

3、Rocketmq如何支持分布式事务消息?

A(存在DB操作)、B(存在DB操作)两方需要保证分布式事务一致性,通过引入中间层MQ,A和MQ保持事务一致性(异常情况下通过MQ反查A接口实现check),B和MQ保证事务一致(通过重试),从而达到最终事务一致性。

原理:大事务 = 小事务 + 异步

4、顺序消息

顺序消息原理:produce在发送消息的时候,把消息发到同一个队列(queue)中,消费者注册消息监听器为MessageListenerOrderly,这样就可以保证消费端只有一个线程去消费消息。

注意:把消息发到同一个队列(queue),不是同一个topic,默认情况下一个topic包括4个queue。

顺序消息缺陷:发送顺序消息无法利用集群Fail Over特性消费顺序消息的并行度依赖于队列数量队列热点问题,个别队列由于哈希不均导致消息过多,消费速度跟不上,产生消息堆积问题遇到消息失败的消息,无法跳过,当前队列消费暂停。

5、RocketMQ最佳实践:

① 一个应用一个Topic,消息子类型用tags标志,设置了tags,消费方在订阅消息时候可以用来做消息过滤;

② Key,每个消息在业务层面的唯一标志

③ 做好日志记录,务必 send result 和key 字段

④ send方法只要不抛出异常就表示成功,但是发送成功会有多个状态,在sendResult里定义。

⑤ RocketMq是至少发送一次,所以在消费端要做好幂等控制;

⑥ 尽量使用批量方式消费消息,提高效率

⑦ 消息过滤,支持在Broker端过滤,优点是减少无用消息传送到consumer,缺点是增加broker逻辑复杂性,也可在consumer端过滤,可由应用系统自定义,缺点是很多无用的消息会传输到consumer,浪费网络带宽。

⑧ 机器硬件故障,rocketMq有同步刷盘、异步刷盘保障数据不丢失或者少量丢失;如果是单点故障,有异步复制恢复数据,但是只能保证99%。RocketMq3.0支持同步双写,保证无单点故障,但是性能下降。

459a33d17ca0d15ff1f121bc090b4b77.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值