Windows 10 - Python 消息队列 RabbitMQ 学习总结 1

news2024/10/6 18:43:18

目录

  • 消息队列的基本知识概述
    • 什么是消息队列?
    • 为何要使用消息队列的原因?
    • 理解消息队列服务器和 Web 服务器的关系
    • 题外:关于服务端和客户端的企业级理解
      • 了解 Web 服务器
      • 了解 Web 框架和 Web 服务的区别
      • 对于框架和服务器B/S架构消息队列的个人理解:
        • 浏览器 B/S 架构的业务逻辑个人理解:

测试环境:

操作系统: Window 10
工具:Pycharm
Python: 3.7

消息队列的基本知识概述

什么是消息队列?

消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。
消息队列(Message Queue —— MQ)是一种应用间的通信方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递。消息发布者只管把消息发布到 MQ 中而不用管谁来取,消息使用者只管从 MQ 中取消息而不管是谁发布的。这样发布者和使用者都不用知道对方的存在。

我认为这里的应用,应该是如 App、PC端软件之类的客户端应用软件,向服务端(服务器)发送消息
(客户端) 生产者 —(消息队列)—> 消费者 (服务端)

为何要使用消息队列的原因?

从上述中可以看出消息队列是一种应用间的异步协作机制,那什么时候需要使用 MQ 呢?

以常见的订单系统为例,用户点击【下单】按钮之后的业务逻辑可能包括:扣减库存、生成相应单据、发红包、发短信通知。在业务发展初期这些逻辑可能放在一起同步执行,随着业务的发展订单量增长,需要提升系统服务的性能,这时可以一些不需要立即生效的操作拆分出来异步执行,比如发放红包、发短信通知等。这种场景下就可以用MQ ,在下单的主流程(比如扣减库存、生成相应单据)完成之后发送一条消息到 MQ 让主流程快速完结,而由另外的单独线程拉取MQ的消息(或者由MQ 推送消息),当发现 MQ 中有发红包或发短信之类的消息时,执行相应的业务逻辑。

以上是用于业务解耦的情况,其它常见场景包括最终一致性广播错峰流控等等。

理解消息队列服务器和 Web 服务器的关系

对于这里的理解是,以业务为优先考虑,所以才采用消息队列,比较参考下淘宝 双11,每秒订单破50万,这对于系统的性能需求来说,简直是个无底洞,所以利用到了消息队列,来满足业务的性能需求,是非常有必要的。再深入一点来说,可以认为订单是所谓的高并发操作,而红包,发短信等是延时操作,属于低并发操作,那么服务器要怎么处理高并发操作呢?那就是利用Web服务器的负载均衡服务,而处理低并发操作,就需要消息队列服务器来处理,比如 Rabbit MQ (兔子消息队列服务器)

题外:关于服务端和客户端的企业级理解

了解 Web 服务器

比较常用的 Web 服务器:ApacheNginx、Tomcat、Lighttpd、Zeus、IIS
Web服务器的开发语言链接:https://www.oschina.net/
可以通过此链接查找 Web 服务器的开发语言
eg:
在这里插入图片描述

在这里插入图片描述

了解 Web 框架和 Web 服务的区别

Web服务器(Web server)的主要作用是,接收客户端请求,而Web框架(Web framework)则是处理web服务器收到的请求,并生成HTML 内容,将生成的 HTML 内容传递给Web服务器,再由Web服务器返回给客户端 (浏览器)。

这里就不得不提到 Python 的 Web 框架 —— DjangoFlaskweb.py,这三个python Web 框架(框架排名链接),一般新手学习前三个就好了,其他的框架看自己兴趣能力了。

使用Web 框架的作用:是为了方便程序员高效搭建自动化创建 HTML 内容 —— 生成用户友好内容;

Web服务器(Web server)的主要作用:接收客户端请求;

对于框架和服务器B/S架构消息队列的个人理解:

使用 Web 服务器是对 Web 框架生成 HTML 内容和Web服务器接收消息及发送HTML内容进行一个功能独立。
生产的就交给生产商弄,快递的就交给物流公司弄,这样说比较容易理解,但还是差了点意思,深入一点就是,每次服务器的进程切换,会在生产HTML 内容的 Web 框架 和 接收消息与发送HTML内容的 Web服务器的两个进程间切换,那么在这切换的过程,有一段时间服务器是完全属于 Web 框架 和 Web服务器的这其中之一的进程的,具体来说,就是专门为它两者之一服务的,那么你就应该意识到,在那时服务器为它们两个中的一个进程服务,资源(多核芯片计算、内存,磁盘存储等等)都尽量为其中的一个进程服务,如果是很厉害的服务器(两个字昂贵)的话,就更能体现出其中的性能差距,所以对于B/S架构高并发操作,是一定一定需要一个高性能的Web 服务器来执行的。

这里的高性能就需要了解该Web 服务器是用什么编程语言写的,既然这里适用性能需求,那么使用 C/C++ 语言开发的 Web 服务器,就再好不过了,这个可以通过对比编程语言的性能速度,可以得出哪些 Web 服务器性能好,当然有时还得看情况使用哪种 Web 服务器。

列出性能前三的的编程语言:

  1. C
  2. C++
  3. Java
    后面我就不写了,可以到网上搜索一下,编程语言间的性能,当然不用考虑,想也知道,除了这几个编程语言写的 Web 服务器,大致就可以猜到其性能。

浏览器 B/S 架构的业务逻辑个人理解:

客户端 Brower (浏览器) —— 服务端 Server
在这里插入图片描述

RabbitMQ 是基于 Erlang 语言开发的消息队列系统

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/403692.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PMP项目管理项目风险管理

目录1 项目风险管理概述2 规划风险管理3 识别风险4 实施定性风险分析5 实施定量风险分析6 规划风险应对7 实施风险应对8 监督风险1 项目风险管理概述 项目风险管理的目标在于提高正面风险的概率和(或)影响,降低负面风险的概率和(…

STM32CubeIDE 快速开发入门指南

描述 STM32CubeIDE是一体式多操作系统开发工具,是STM32Cube软件生态系统的一部分。 STM32CubeIDE是一种高级C/C开发平台,具有STM32微控制器和微处理器的外设配置、代码生成、代码编译和调试功能。它基于Eclipse/CDT™框架和用于开发的GCC工具链&#xf…

CentOS7部署Doris V1.2.2

一、环境准备 服务器信息 IP配置部署内容192.168.43.1508核8GFE,BE192.168.43.1514核8GBE192.168.43.1524核8GBE 安装前置条件 服务器配置免密登录 3台服务器配置免密登录,可参考CentOS7 设置SSH免密钥登陆 安装JDK 安装JDK 修改CentOS系统默认参…

【opensea】opensea-js 升级导致的问题,及解决笔记

opensea 协议升级导致旧包不能使用了 我使用的是 “opensea-js”: "^4.0.12” 版本当SDK。于2023年3月9日之后,不能使用了,需要升级到 Seaport v1.4 协议的包。 报错如下: Error: API Error 400: Please provide an OPEN order type when using …

第N次重装系统之Ubtntu

前言又一次换了服务器,由于centOS已经完成了自己的生命周期,接下来我会转去使用Ubtntu系统。当然,大部分docker命令是不会收到影响的,但是一部分安装过程可能就要重新学习了。其实这个系统也有自己的老牌包管理器apt,所…

ESP32设备驱动-TCS3200颜色传感器驱动

TCS3200颜色传感器驱动 1、TCS3200介绍 TCS3200 和 TCS3210 可编程彩色光频率转换器在单个单片 CMOS 集成电路上结合了可配置的硅光电二极管和电流频率转换器。 输出是方波(50% 占空比),其频率与光强度(辐照度)成正比。 满量程输出频率可以通过两个控制输入引脚按三个预…

关系抽取方面的基础

关系抽取方面的基础一、基本概念1. 什么是关系抽取(Relation Extraction,RE)?2. 都有什么奇怪的关系?3. 任务评价指标二、 关系抽取方法2.1 按模型结构分——Pipeline 和 Joint方法Pipeline方法Joint方法2.2 按解码方式…

RK3588平台开发系列讲解(同步与互斥篇)信号量介绍

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、信号量介绍二、信号量API1、结构体2、API三、函数调用流程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢上一章我们看了自旋锁的原理,本章我们一起学习下信号量的用法。 一、信号量介绍 和自旋锁一样,…

计算机网络:IP组播

IP数据报的三种传输方式 单播:将数据包发送到单个目的地址,且每发送一份单播报文都是使用一个单播IP地址作为目的地址,是一种点对点协议。广播:将数据包发送给同一广播域或者子网内所有设备的通信方式,是一种点对多点…

javaEE 初阶 — CSS 的 基本语法 与 引入方式

文章目录1. 基本语法规范2. 三种引入方式1. 基本语法规范 CSS 的基本语法规范是由 选择器 和 若干个声明 组成的。 选择器选中一个元素之后&#xff0c;这些属性都是针对于这个元素展开的。 先来看一个没有 CSS 的效果。 <body><p>这是一个段落</p> </bo…

超详细!工业级RK3568核心板性能测试与压力测试记录

1. 测试对象HD-RK3568-IOT底板是基于HD-RK3568-CORE工业级核心板设计的&#xff0c;具有双网口、双CAN、5路串口等丰富接口&#xff0c;适用于工业现场应用需求&#xff0c;方便用户评估核心板及CPU性能&#xff0c;可用于工业自动化控制、人机界面、医疗分析器、电力等多种行业…

音质好的蓝牙耳机有哪些?音质最好的蓝牙耳机排行

说起当代人外出必备是数码产品&#xff0c;蓝牙耳机肯定存在。不管是听歌还是追剧&#xff0c;蓝牙耳机在音质上的表现也是越来越好了。下面&#xff0c;我来给大家推荐几款音质好的蓝牙耳机&#xff0c;一起来看看吧。 一、南卡小音舱蓝牙耳机 参考价&#xff1a;259 蓝牙版…

循环神经网络原理及实现(一):序列模型,文本预处理和语言模型

专栏&#xff1a;神经网络复现目录 循环神经网络 到目前为止&#xff0c;我们遇到过两种类型的数据&#xff1a;表格数据和图像数据。 对于图像数据&#xff0c;我们设计了专门的卷积神经网络架构来为这类特殊的数据结构建模。 换句话说&#xff0c;如果我们拥有一张图像&…

NAND NOR FLASH闪存产品概述

随着国内对集成电路&#xff0c;特别是存储芯片的重视&#xff0c;前来咨询我们关于NOR Flash&#xff0c;NAND Flash&#xff0c;SD NAND, eMMC, Raw NAND的客户越来越多了。这里我们专门写了这篇文章&#xff1a;1&#xff0c;把常用的存储产品做了分类; 2把一些产品的特点做…

carla与ros2的自动驾驶算法-planning与control算法开发与仿真

欢迎仪式 carla与ros2的自动驾驶算法-planning与control算法开发与仿真欢迎大家来到自动驾驶Player(L5Player)的自动驾驶算法与仿真空间&#xff0c;在这个空间我们将一起完成这些事情&#xff1a; 控制算法构建基础模块并仿真调试&#xff1a;PID、LQR、Stanley 、MPC、滑膜控…

考虑分配与合并,用GO实现GCMarkSweep

完整源码 ≧ω≦ 希望各位爸爸们&#xff0c;给我点赞吧 kokool/GCByGo: 《垃圾回收的算法与实现》有感而发 (github.com) 书接上文 我们之前不考虑分配与合并情况下&#xff0c;用GO实现GCMarkSweep&#xff08;标记清除算法&#xff09;&#xff0c;而这次我们继续回顾书本…

SPI 接口OLED 模块 - 兼容5V 和3.3V 电平

PCB 布局参考了老王0.8元128x32OLED显示屏转接板&#xff0c;开源项目地址&#xff1a;老王0.8元128x32OLED 模块-部分优化。 老王家买的屏幕放了快一年了&#xff0c;终于还是决定整个单独的模块&#xff0c;之前一直打算集成到开发板上的&#xff0c;不太灵活。相比那个转接板…

jenkins扩展你的流水线

文章目录一、概述二、可信库和不可信库可信库不可信库三、内部库与外部库内部库SSH访问HTTP 访问外部库配置一个外部库四、在流水线脚本中使用库从源码版本控制中自动下载库加载库到脚本中Library 注解库步骤库指令五、Jenkins 项目中的库范围六、共享库代码的结构src示例一&am…

Java启蒙之语言基础

目录 一.Java标识符和关键字 1.1Java标识符 1.2Java关键字 二.数据类型和变量的概述和关系 2.1Java变量 2.2Java的数据类型 2.2.1数据类型的分类的概述 2.2.2数据类型的转换 3.Java运算符 总结 &#x1f63d;个人主页&#xff1a;tq02的博客_CSDN博客-领域博主 &#…

帧中继多点子接口配置

帧中继多点子接口配置 拓扑图&#xff1a; 设备参数&#xff1a; 设备 接口 DLCI 设备 接口 DLCI R1 S0/0/0 102 R2 S0/0/0 201 R1 S0/0/0 103 R3 S0/0/0 301 IP参数&#xff1a; 设备 接口 IP地址 子网掩码 默认网关 R1 S0/0/0.1 192.168.123.1 25…