消息中间件概述

54b0b618ae084a768d1abd125b694c21.jpg概述

 

  消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如ActiveMQ、RabbitMQ,Kafka,还有阿里巴巴自主开发RocketMQ等。

 

 

 

消息中间件的定义

 

   目前业界对消息中间件没有统一的定义标准。一般认为,消息中间件属于分布式系统中一个子系统,关注于数据的发送和接收,利用高效可靠的异步消息传递机制对分布式系统中的其余各个子系统进行集成。

 

      

 

 

 

 

 

消息中间件与RPC的区别

  消息中间件和消息通信与RPC各自具有怎样的优势,如何互补消息中间件主要实现的是异步、弹性消息以及队列,弹性消息有时可以借助于外存从而一定程度上可以实现峰值缓存,有效均衡服务器端压力,同时消息可以进行一定程度上的定于,从而实现了基于分组的广播,同时可以实现消息订阅;

RPC则是主要集中于外部的方法调用,通过某种通讯方式实现数据的集中调用与访问,以简单通讯协议为像本地方法一样完成远程方法调用;

 

  

  MQ 是生产者消费者模式通信模型,是单向的。

 

  RPC 是请求响应模式,是双向的。

 

  MQ 是面向数据的。

 

  RPC 是面向动作的。

 

 

消息中间件模式分类

 

   1. 点对点

 

   2. 发布/订阅

 

 

 

 

 

消息中间件应用场景  

  1. 异步通信

 

    有些业务不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。

 

      2. 系统解耦。

 

    降低系统模块之间的强依赖程度,针对异构系统进行适配。在项目启动之初来预测将来项目会碰到什么需求,是极其困难的。通过消息系统在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口,当应用发生变化时,可以独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。

 

      3. 冗余

 

   有些情况下,处理数据的过程会失败。除非数据被持久化,否则将造成丢失。消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险。许多消息队列所采用的”插入-获取-删除”范式中,在把一个消息从队列中删除之前,需要你的处理系统明确的指出该消息已经被处理完毕,从而确保你的数据被安全的保存直到你使用完毕。

 

     4. 提高系统扩展性

 

因为消息队列解耦了你的处理过程,所以增大消息入队和处理的频率是很容易的,只要另外增加处理过程即可。不需要改变代码、不需要调节参数。便于分布式扩容。

 

      5. 流量的削峰/过载保护

 

   在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量无法提取预知;如果以为了能处理这类瞬间峰值访问为标准来投入资源随时待命无疑是巨大的浪费。使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。比如秒杀应用。

 

      6. 可恢复性

 

    系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。

 

      7. 顺序保证

 

    在大多使用场景下,数据处理的顺序都很重要。大部分消息队列本来就是排序的,并且能保证数据会按照特定的顺序来处理。

 

      8. 缓冲

 

     在任何重要的系统中,都会有需要不同的处理时间的元素。消息队列通过一个缓冲层来帮助任务最高效率的执行,该缓冲有助于控制和优化数据流经过系统的速度。以调节系统响应时间。

 

      9. 数据流处理

 

    分布式系统产生的海量数据流,如:业务日志、监控数据、用户行为等,针对这些数据流进行实时或批量采集汇总,然后进行大数据分析是当前互联网的必备技术,通过消息队列完成此类数据收集是最好的选择。

 

  10. 跨平台,跨语言协同工作。

 

    屏蔽不同平台,不同语言的差异,实现应用程序之间的协同工作。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL和Oracle的区别有什么

1、mysql与oracle都是关系型数据库,应用于各种平台。 mysql开源免费的,而oracle则是收费的,并且价格非常高。 2、管理工具上 mysql的管理工具较少,在Linux下的管理工具的安装有时需要安装额外的包(phpmyadmin&#…

Linux 无名管道实现文件复制

无名管道 通过一个管道(假象)进行传输数据,但是这个管道的传输方式是单工(半双工)的,就是这个管道允许进行发送和接受数据,不过不能同时进行。 创建无名管道 这里用到一个pipe(&…

C语言求0—7所能组成的奇数个数

完整代码&#xff1a; // 求0—7所能组成的奇数个数 //根据题意&#xff0c;应该是没有重复数字的&#xff0c;所以最大只能为八位数 //如果可以重复的话&#xff0c;那么位数就限制不了&#xff0c;然后奇数的个数就是无穷大了 #include <stdio.h>int main() {int coun…

怎么用领英开发客户?分享领英开发客户的方法和技巧

对于绝大多数外贸业务员来说&#xff0c;领英(LinkedIn)是一个非常重要且有效的客户开发渠道。在领英这个平台&#xff0c;如果你掌握了开发客户的方法&#xff0c;那么营销推广产品或服务的终极目标就有很大可能的实现&#xff01;其实真正上手并不难&#xff0c;因为平台内有…

口袋参谋:一键查询任意买家旺旺号,规避被降权风险!

​ 对于淘宝天猫的卖家来说&#xff0c;查买家旺旺号是维护淘宝卖家销售权益的一种途径。 卖家通过查买家的旺旺号&#xff0c;从而得知买家的账号信息、买家信誉以及中差评等内容&#xff0c;减少淘宝卖家受骗上当的机率。 【查降权号】功能&#xff1a; 针对淘宝订单可一键查…

2024年山东省职业院校技能大赛中职组“网络安全”赛项竞赛试题-A

2024年山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题-A 一、竞赛时间 总计&#xff1a;360分钟 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A、B模块 A-1 登录安全加固 180分钟 200分 A-2 本地安全策略设置 A-3 流量完整性保护 A-4 …

【C++】入门二

下面我们说一下缺省参数&#xff0c;那么什么是缺省参数呢&#xff1f;就是说在定义或者声明函数时给形参赋予一个确定的值&#xff08;也叫缺省值&#xff09;&#xff0c;那么当我们调用这个函数的时候&#xff0c;就可以不传值也可以传值&#xff0c;传值的话缺省值就没作用…

什么是Selenium?如何使用Selenium进行自动化测试?

什么是 Selenium&#xff1f; Selenium 是一种开源工具&#xff0c;用于在 Web 浏览器上执行自动化测试&#xff08;使用任何 Web 浏览器进行 Web 应用程序测试&#xff09;。   等等&#xff0c;先别激动&#xff0c;让我再次重申一下&#xff0c;Selenium 仅可以测试Web应用…

微服务实战系列之Token

前言 什么是“Token”&#xff1f; 它是服务端生成的一串字符串&#xff0c;以作客户端进行请求的一个令牌&#xff0c;当第一次登录后&#xff0c;服务器生成一个Token便返回给客户端&#xff1b;以后客户端只携带此Token请求数据即可。 简言之&#xff0c;Token其实就是用户身…

大型语言模型中的幻觉研究综述:原理、分类、挑战和未决问题11.15+11.16+11.17

大型语言模型中的幻觉研究综述&#xff1a;原理、分类、挑战和未决问题11.15 摘要1 引言2 定义2.1 LLM2.3 大语言模型中的幻觉 3 幻觉的原因3.1 数据的幻觉3.1.1 有缺陷的数据源3.1.2 较差的数据利用率3.1.3 摘要 3.2 来自训练的幻觉3.2.1训练前的幻觉3.2.2来自对齐的幻觉3.2.3…

如何在latex中高亮文本

导入soul 包可以使用高亮功能 在文本中插入 \hl{} 即可 导入color 包可以使用颜色功能 color 也可以替换成 xcolor \documentclass{report} \usepackage{xcolor,soul} \begin{document}\textcolor{red}{Text}\hl{Text} \hl{\textbf{Text}} \textbf{\textcolor{red}{\hl{Text}…

LeetCode题 338比特位计数,20有效的括号,415字符串相加

目录 338比特位计数 题目要求&#xff1a; 解题思路&#xff1a; 1、暴力穷举 代码&#xff1a; 2、N&&#xff08;N - 1&#xff09;公式求解 代码&#xff1a; 3、奇偶数性质解法&#xff1a; 代码&#xff1a; 20有效的括号 题目要求&#xff1a; 解题思路 …

CTF-PWN环境搭建手册

工欲善其事必先利其器&#xff0c;作为一名CTF的pwn手&#xff0c;一定要有自己的专用解题环境。本文将详细记录kali下的pwn解题环境的安装过程&#xff0c;B站也会配备配套视频。 安装前的准备工作 虚拟机环境 VMware WorkStation VM版本安装教程 1. 下载Kali的VM虚拟机文件…

Java内存区域速览

文章目录 JVM的组成加载字节码流程 运行时数据区-总览1. 程序计数器2. 虚拟机栈栈帧栈的运行原理 3. 本地方法栈4. 堆内存(Java Heap虚拟机对堆 的划分1. 年轻代&#xff08;Young Generation&#xff09;&#xff1a;2. 老年代&#xff08;Old Generation&#xff09;&#xf…

变长子网划分问题的二叉树解法

计网的变长子网划分、计组的变长操作码划分、数据结构的哈夫曼编码&#xff0c;都是前缀编码的本质&#xff08;变长操作码的二叉树解法我还在琢磨中&#xff09; 【二叉树解法】每条从叶结点到根节点的路径上有且只有一个被分配的结点&#xff1a; 【例】现将一个IP网络划分成…

第七部分:Maven(项目管理工具)

目录 Maven简介 7.1&#xff1a;为什么学习Maven&#xff1f; 7.1.1、Maven是一个依赖管理工具 7.1.2&#xff1a;Maven是一个构建工具 7.1.3&#xff1a;结论 7.2&#xff1a;Maven介绍 7.3&#xff1a;Maven的优点 Maven安装和配置 7.4&#xff1a;安装教程及环境配置 …

阿里在职5年,聊聊测试工程师如何进阶(自动化、性能、测开)

功能测试&#xff08;所谓“点点点”&#xff09;在行业中基本能拿到15k左右的薪水&#xff0c;但是你不可能一直点。入行3年后&#xff0c;你需要拥有不止点点点的技能&#xff0c;否则出去面试&#xff0c;你会就会感受到竞争者给你带来的压力&#xff0c;你需要拿出更高级的…

【数据结构(二)】稀疏 sparsearray 数组(1)

文章目录 1. 稀疏数组的应用场景1.1. 一个实际的需求1.2. 基本介绍 2. 稀疏数组转换的思路分析3. 稀疏数组的代码实现3.1. 二维数组转稀疏数组3.2. 稀疏数组转二维数组 4. 课后练习 1. 稀疏数组的应用场景 1.1. 一个实际的需求 问题&#xff1a;     编写的五子棋程序中&…

LangGPT作者教你编写高质量提示词

CoT和ToT能够提升表现&#xff0c;但是会使得模型的使用变复杂。在对话的场景下容易消耗人的耐心&#xff1b;实际应用的场景下&#xff0c;比较消耗人的token。 还有一点需要说明的是&#xff0c;我们在写自己的prompt的时候&#xff0c;不应该盲目地追求和堆砌提示词技巧&am…

Linux快速下载Google Drive数据集

前言 我们做实验的时候&#xff0c;经常需要下各种各样的数据集&#xff0c;但是这些数据集往往都在Google Drive上&#xff0c;这需要科学上网才能访问。同时&#xff0c;就算在自己电脑上能够访问&#xff0c;但是数据集往往是要下在实验室的服务器上的&#xff0c;而通常这…