首页 > 其他分享 >深入研究消息队列03 各消息队列架构对比

深入研究消息队列03 各消息队列架构对比

时间:2023-09-05 21:34:54浏览次数:28  
标签:03 存储 队列 Broker RabbitMQ 消息 reader tcp 数据

10 RabbitMQ的架构设计与实现

系统架构

深入研究消息队列03 各消息队列架构对比_架构设计

RabbitMQ 由 Producer、Broker、Consumer 三个大模块组成。生产者将数据发送到 Broker,Broker 接收到数据后,将数据存储到对应的 Queue 里面,消费者从不同的 Queue 消费数据。

深入研究消息队列03 各消息队列架构对比_架构设计_02

协议和网络模块

深入研究消息队列03 各消息队列架构对比_系统架构_03

深入研究消息队列03 各消息队列架构对比_架构设计_04

主要包含 tcp_listener、tcp_acceptor、rabbit_reader 三个进程。如下图所示,RabbitMQ 服务端通过 tcp_listener 监听端口,tcp_acceptor 接收请求,rabbit_reader 处理和返回请求。本质上来看是也是一个多线程的网络模型。

深入研究消息队列03 各消息队列架构对比_系统架构_05

数据存储

RabbitMQ 的存储模块也包含元数据存储与消息数据存储两部分。如下图所示,RabbitMQ 的两类数据都是存储在 Broker 节点上的,不会依赖第三方存储引擎。我们先来看一下元数据存储。

深入研究消息队列03 各消息队列架构对比_架构设计_06

深入研究消息队列03 各消息队列架构对比_系统架构_07

深入研究消息队列03 各消息队列架构对比_系统架构_08

深入研究消息队列03 各消息队列架构对比_系统架构_09


标签:03,存储,队列,Broker,RabbitMQ,消息,reader,tcp,数据
From: https://blog.51cto.com/u_6478076/7379582

相关文章

  • Element UI实现每次只弹出一个Message消息提示
    前言在开发Web应用程序时,我们经常需要使用消息提示来向用户展示重要信息。ElementUI提供了一个方便易用的组件——Message,可以用于显示各种类型的消息提示。然而,默认情况下,当多个消息提示同时触发时,它们会依次累积在页面上,导致界面上出现多个消息提示。本篇博客将介绍如何通过对......
  • 【C++STL基础入门】队列的基础使用
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档@TOC前言C++标准模板库(STL)提供了一系列强大的容器和算法,方便我们在编程中处理数据和实现各种功能。其中,queue(队列)是STL中的一个重要容器,用于按照先进先出(FIFO)的顺序处理元素。本文将介绍queue的基础使用方法,帮助读者初......
  • $('.panel-collapse').on('show.bs.collapse', function () {})详解
    $('.panel-collapse').on('show.bs.collapse',function(){});这段代码是在使用jQuery来绑定事件。$('.panel-collapse')部分是一个选择器,它选择了当前页面上所有有panel-collapse这个类的元素。如果你在HTML中有这样的元素:<divclass="panel-collapse"></div>,那么这......
  • MQ消息中间件之RabbitMQ
    1.MQ知识扩充1.1什么是MQ消息中间件MQ全称MessageQueue(消息队列),是在消息的传输过程中保存消息的容器。它是应用程序和应用程序之间的通信方法1.2为什么使用MQ【注:在项目中,可将一些无需即时返回且耗时的操作提取出来,进行异步处理,而这种异步处理的方式大大的节省了服务器......
  • TIM-有感BLDC实现解析-基于CH32V203
    TIM-有感BLDC实现解析-基于CH32V2031、BLDC运行基本原理简要介绍在图1-20(a)中,AB相通电,电流处于转子产生的磁场内,根据左手定则,我们判断线圈AA’中的上半部导线A受到一个顺时针方向的电磁力,而AA’的下半部导线A’也受到一个顺时针方向的电磁力。由于线圈绕组在定子上,定子是固定不......
  • 【2023-09-03】连岳摘抄
    23:59必须独立生活。如果想保护自己,如果想懂得生存,如果想获得智慧,就必须独立生活!                                                 ——《小鹿斑比》要接受生活中“......
  • 优先队列(Priority Queue)
    优先队列是特殊的“队列”,取出元素的顺序是依据优先权(关键字)的大小,而不是依据进入队列的先后顺序。对于实现优先队列的存储,数组的插入操作效率比较低,我们考虑使用树。首先想到了二叉树,但多次的删除最值操作可能导致树的不平衡,也会导致效率变低,而完全二叉树平衡性好,并且存......
  • 安装weditor时提示“ UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in po
    问题:安装weditor时提示“UnicodeDecodeError:'gbk'codeccan'tdecodebyte0xadinposition645:illegalmultibytesequence” 解决:方法一:解决方法一设置用户或者系统变量: 方法二:设置临时变量后再pipinstallsetPYTHONUTF8=1pipinstallweditor 原......
  • 203. 移除链表元素
    前些日子在翻译论文,检查语法润色啥的。然后跟导师一起修改,前几天终于投了出去,现在可以回到正常的节奏上来了。先看看题吧给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val==val 的节点,并返回新的头节点 。示例1:输入:head=[1,2,6,3,4,5,6],va......
  • [20230903]完善hide.sql脚本2.txt
    [20230903]完善hide.sql脚本2.txt--//以前写的用来查询隐含参数的脚本如下:$cathide.sqlcolnameformata40coldescriptionformata66colsession_valueformata22coldefault_valueformata22colsystem_valueformata22select  a.ksppinm name,  a.ksppdescDESC......