MQ学习笔记

1.作用:异步(提高系统的响应速度和吞吐量),解耦(可以实现数据分发),削峰(以稳定的系统应对突发的流量冲击)

2.缺点:系统的可用性降低,MQ宕机导致不可用。系统的复杂性提高,如何保证消息不丢失。数据一致性:A系统发消息,BC同时处理,B成功C失败,数据一致性如何保证。

3.选型:Kafka(吞吐量大,性能好,集群高可用,会丢数据,功能单一)

             RabbitMQ(消息可靠性高,功能全面,吞吐量低,消息积累会严重影响性能,erlang语言不好定制,小规模项目)

             RocketMQ(高吞吐,高可用,功能非常全面,开源版不如商业版,生态不够成熟,只支持Java, 几乎覆盖全场景)

4.保证消息不丢失: 考虑跨网络

            1. 生产者发送到MQ丢失:

                   Kafka: (1)消息发送+回调

                   RocketMQ: (1)消息发送+回调    (2)消息事务

              RabbiltMQ: (1)消息发送+回调    (2)手动事务  channel.txSelect()    channel.txCommit()   channel.txRollback()  channel会发生阻塞,造成吞吐量下降。(3) Publish Confirm

             2. MQ主从同步丢失: (1) 同步同步:主->从->确认  (2) 异步同步:主->确认  异步同步    Dledger集群  至少要3个节点  大多数节点确认

             3. 内存会断电丢失,会存硬盘。消息写入内存,没写入硬盘   同步刷盘,异步刷盘

             4. 消费者消费丢失

5. 设计一个MQ

(1) 实现一个单机的队列数据结构,高效,可扩展。

(2) 将单机队列扩展成为分布式队列,分布式集群管理。

(3) 基于topic定制消息路由策略,  发送者路由策略,消费者与队列对应关系,消费者路由策略。

(4) 实现高效的网络通信。 Netty Http

(5) 规划日志文件,实现文件高效读写。零拷贝,顺序写。服务重启后,快速还原运行现场。

(6) 定制高级功能,死信队列,延迟队列,事务消息等。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值