• RabbitMQ的基本介绍


    什么是MQ

    本质是一个队列,只不过队列中存放的信息是message罢了,还是一种跨进程的通信机制,用于上下游传递信息。在互联网架构中,MQ是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了MQ之后,信息发送上有只需要依赖MQ,不用依赖其他服务。

    为什么要使用MQ

    • 流量消峰
    • 应用解耦
    • 异步处理

    MQ的分类

    • ActiveMQ
      • 优点:单机吞吐量万级,时效性ms级,可用性高,基于主从架构高可用性,消息可靠性较低的概率丢失数据
      • 缺点:维护较少,高吞吐量场景较少使用
    • Kafka
      • 大数据中使用率高,百万级TPS的吞吐量
      • 优点:吞吐量高、分布式、时效性高、不会丢失数据、使用广泛
      • 缺点:消息失败不支持重试
    • RocketMQ
      • 优点:单机吞吐量高、0丢失、支持10亿级别的消息堆积
      • 缺点:支持客户端语言不多
    • Rabbit
      • 当前最主流的消息中间件之一
      • 优点:支持高并发、性能好、吞吐量高、跨平台、支持多种语言、社区活跃高…
      • 缺点:商业版需要收费,学习成本高

    MQ的选择

    • Kafka:大数据、大型公司、日志采集
    • RocketMQ:金融互联网、稳定性上值得信赖、高并发
    • RabbitMQ:时效性微秒级、社区活跃度比较高、数据量没那么大

    RabbitMQ

    概念

    是一个消息中间件:接收、存储和转发信息数据

    • 生产者:生产数据发送信息的程序是生产者
    • 交换机:

      在这里插入图片描述

    • 队列:

      在这里插入图片描述

    • 消费者:

      在这里插入图片描述

    核心部分

    • 工作原理

      在这里插入图片描述

    • Broker:接收和分发信息的应用,RabbitMQ Server就是Message Broker

    • Virtual host:

      在这里插入图片描述

    • Connection:publisher/consumer和broker之间的TCP连接

    • Channel:

      在这里插入图片描述

    • Exchange:

      在这里插入图片描述

    • Queue:消息最终被送到这里consumer取走

    • Binding:

      在这里插入图片描述

  • 相关阅读:
    在 Rust 中实现 TCP : 1. 联通内核与用户空间的桥梁
    23种设计模式之代理模式
    Surreal number
    缓存相关问题
    关于蓝桥杯单片机组自学的经验分享
    云原生k8s之Pod基础概念
    SVN 服务器建立
    Web APIs——BOM和延迟函数setTimeout
    python+vue+elementui实验室课程在线答疑系统php_java
    【uvm】DUT 和 testbench 是如何连接的
  • 原文地址:https://blog.csdn.net/kukudeYSB/article/details/133363861