MQ_常见问题

本文探讨了MQ在异步处理、应用解耦和流量削峰等场景的应用,对比了RabbitMQ和Kafka的选型标准,如吞吐量、时效性和可用性。重点讲解了RabbitMQ的镜像集群模式和Kafka的分布式特性。同时,文章深入讨论了MQ的重复消费问题及其解决方案,如幂等性和防重表。对于消息丢失,分析了RabbitMQ中生产者和消费者可能导致丢失的情况,并提出了解决措施。此外,介绍了如何处理顺序消费、消息堆积和过期失效的问题。最后,概述了RabbitMQ的重要组件和实现延迟队列的方法。
摘要由CSDN通过智能技术生成

应用场景

  • 异步处理:
    在这里插入图片描述
    • 应用解耦:
      在这里插入图片描述
    • 流量削峰:
      在这里插入图片描述

选型

在这里插入图片描述

  • 吞吐量:ActiveMQ和RabbitMQ都是万级,RocketMQ和Kafka是十万级
  • 时效性:Rabbit是微秒级,其他是毫秒级
  • 可用性:ActiveMQ和RabbitMQ是主从架构,RocketMQ和Kafka是分布式架构
  • 可靠性:ActiveMQ有较低概率丢失数据
  • 功能支持:ActiveMQ功能完备,RabbitMQ基于erlang开发,并发能力强,延时低,RocketMQ分布式,扩展性好,Kafka功能简单,主要用于大数据领域

高可用

RabbitMQ

镜像集群模式

在这里插入图片描述

  • 通过管理控制台新增镜像集群模式策略,可以指定数据同步到所有节点,再次创建queue时,自动将数据同步到其他节点
  • 数据同步到所有节点需要性能开销
  • 扩展性差

Kafka

afka 一个最基本的架构认识:由多个 broker 组成,每个 broker 是一个节点;你创建一个 topic,这个 topic 可以划分为多个 partition,每个 partition 可以存在于不同的 broker 上,每个 partition 就放一部分数据。

这就是天然的分布式消息队列,就是说一个 topic 的数据,是分散放在多个机器上的,每个机器就放一部分数据。
在这里插入图片描述

重复消费

  • 消息消费成功,事务已经提交,ack时宕机,导致没有ack成功,broker的消息重新由unack变为ready,并发送给消费者
  • 消息消费失败,重试机制自动又将消息发送出去

解决

  • 接口幂等
    在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。
    幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值