突击

MQ

1.为什么用消息队列?

解耦,异步,消峰 ==》之前用过基本是作解耦和异步处理的

2.消息队列优缺点

有点上面三个,缺点:可用性减低,mq挂了,系统奔溃。复杂性提高(重复消息,消息丢失),一致性问题(三个有消费逻辑的系统,其中一个挂了,但返回客户是成功的)

3.四个mq的区别

4.消息的高可用?

rabbitMQ的镜像集群模式,rabbitMQ的友好管理控制台,新增策略,策略模式为镜像集群模式,要求数据同步到所有节点。

5.如何保证消息不被重复消费(幂等)?

kafka的offset标记,消费者消费定期提交offset,如果消费者挂了,没来得及提交,消费就出现了重复。

消费的时候用缓存set记录,数据库插入主键判断,redis的set数据结构可用

6.如何保证消息可靠性传输?消息丢失咋办?

ribbitmq为例:

生产者丢失:1.作事务提交(开启事务发送,捕获异常重发,正常事务提交);2.change的comfirm模式,mq作回调告知。

MQ自己丢失:mq自身开启重复机制。

消费者:确认不打开autoAck,即不自动告知mq消费了,手动告知消费。

7.如果保证消息顺序性?

需要顺序的数据,统一发布在同一个queue里面。

8.消息积压咋办??队列满了咋办?

过了高峰期后(半夜),写个临时程序把需要发布的数据查出来,重新发送,把数据补充回来。

临时程序快速消费,不作持久化,直接丢弃,然后走刚在说到的补偿流程。

猜你喜欢

转载自www.cnblogs.com/xyzshm/p/12710060.html
今日推荐