美文网首页Java技术问答
消息队列:消息队列简介

消息队列:消息队列简介

作者: dex0423 | 来源:发表于2020-08-02 22:48 被阅读0次

1. 什么是消息队列

  • 消息队列(message queue),是一种应用程序的通信方法;
  • 消息队列是 生产者-消费者 模型的典型代表,一端不断的网消息队列写数据,另一端不断地读数据;
  • 消息队列中间件是分布式系统的重要组件,主要解决 解耦、异步消息、流量削峰 等问题,实现高性能、高可用、可扩展、和一致性问题;
  • 消息队列作擅长于解决 多系统、异构系统 间的数据交换(消息通知/通讯)问题,你也可以把它用于系统间服务的相互调用(RPC);
生产者消费模型中的消息队列机制

2. 消息队列的特点

  • 默认先进先出;

3. 消息发送流程

3.1. 同步发送

  • 同步发送是指消息发送方发出数据后,会在收到接收方发回响应之后才发下一个数据包的通讯方式;
  • 应用场景:此种方式应用场景非常广泛,例如重要通知邮件、报名短信通知、营销短信系统等。


    同步发送的流程

3.2. 异步发送

  • 异步发送指发送之后,指定回调函数,之后立即返回,发送结果在回调任务中处理(新线程)。

3.3. 单向发送

  • 单向发送指发送者单向向服务器发送消息,只管发,不关心消息是否成功发送。

4. 消息队列应用场景

  • 解耦;
  • 异步;
  • 削峰(负载均衡);
  • 日志;
  • 消息事务;
  • 作业调度;

5. 常见的消息队列

  • ActiveMQ
    -- 具有丰富的API、多种集群构建模式,简单易用。但性能稍差,在面对高并发的情况下,会出现消息阻塞、堆积、延迟等问题;
  • RabbitMQ
    -- RabbitMQ 有 ACK 确认机制,支持消息事务、支持 TTL、死信队列、延迟队列,同时支持 push / pull 模式,缺点是忽视消费端的消费能力,可能导致消费端能力饱和;

Consumer 两种消费模型

  • push
    -- 定义:Broker 里面只要有消息就 推送 给消费端;
    -- 优势:消费的实时性高;
    -- 劣势:没有考虑消费端的消费能力,容易压垮 consumer;
  • pull
    -- 定义:Consumer 通过 轮询 的方式询问 Broker 里面是否有消息,如果有消息就 拉取 到消费端;
    -- 优势:在于可控制消费速度和消费数量保证不会超饱和;
    -- 劣势:如果没有数据会出现空轮询消耗 CPU,尽管通过长轮询可以一定程度上缓解吗,但并未根本解决空轮询问题;
  • Kafka
    -- 基于 pull 的模式来处理消息消费,追求高吞吐量,一开始的目的就是用于日志收集和传输。新版本支持复制,不支持事务,对消息的重复、丢失、错误没有严格要求,适合产生大量数据的互联网服务的数据收集业务。能够支持廉价的服务器上以每秒100k条数据的吞吐量。同时由于有 ack 机制,可以保证不丢失,但不能保证不重复;
  • RocketMQ
    -- RocketMQ 是阿里开源的消息中间件,目前也已经孵化为Apache顶级项目,它是纯Java开发,具有高吞吐量、高可靠性、适合大规模分布式系统应用的特点。RocketMQ 思路起源于 Kafka,不过它对消息的可靠传输以及事务性做了优化,目前在阿里集团被广泛应用于交易、充值、流计算、消息推送、日志流式处理、binlog分发等场景;

相关文章

  • 消息队列:消息队列简介

    1. 什么是消息队列 消息队列(message queue),是一种应用程序的通信方法; 消息队列是 生产者-消费...

  • Android-MessageQueue

    一、MessageQueue简介 MessageQueue即消息队列,这个消息队列和Message消息对象对象池里...

  • 消息队列简介

    猜猜猜

  • 基于Node.js和RabbitMQ搭建消息队列

    一.简介 消息队列消息队列(Message Queue,简称MQ),本质是个队列,FIFO先入先出,只不过队列中存...

  • kafka

    kafka笔记 一、kafak简介 1、消息队列 消息队列:用于存放消息的组件 程序员可以将消息放入到队列中,也可...

  • 消息队列和Kafka简介

    1、消息队列 简单地说,“消息队列”是在消息的传输过程中保存消息的容器。 1.1 简介 消息队列管理器在将消息从它...

  • Redis 消息队列的两种实现方式

    索引:基于list的实现方式基于publish/subscribe实战 消息队列简介 消息队列:是消息的顺序集合。...

  • RabbitMQ面试指南

    1. RabbitMQ简介 什么是消息队列?(Message queue) 消息队列是在消息传递过程中保存消息的容...

  • Rabbit MQ

    简介 RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件) 高级消息队列...

  • MQ系列(0)——MQ简介

    mq简介 mq 就是消息队列(Message Queue)。想必大家对队列的数据结构已经很熟悉了,消息队列可以简单...

网友评论

    本文标题:消息队列:消息队列简介

    本文链接:https://www.haomeiwen.com/subject/ipdprktx.html