消息中间件|初识消息队列

文章目录

  • 消息队列是什么?
  • 消息队列关键概念
  • 消息队列优点
  • 消息队列的应用场景
    • 异步处理
    • 应用解耦
    • 流量削峰
    • 消息通讯
  • 常用消息队列中间件的对比

消息队列是什么?

  • 消息队列(Message Queue)是一种用于在软件系统之间传递消息的通信机制。其本质是一个保存数据的队列,它通常被用于解耦不同组件或模块之间的通信,以实现异步通信、提高系统的可伸缩性和可靠性。
  • 消息中间件是利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的构建。
  • 消息中间件是分布式系统中重要的组件,主要解决应用解耦、异步消息、流量削峰等问题,实现高性能、高可用、可伸缩和最终一致性的系统架构。目前常见的消息队列系统包括Apache KafkaRabbitMQRocketMQActiveMQ等。

消息队列关键概念

  • 消息生产者(Producer):负责产生消息并将其发送到消息队列中。
  • 消息队列(Message Queue):用于存储消息的缓冲区或中介。消息队列可以是内存中的数据结构,也可以是持久化的存储系统。
  • 消息消费者(Consumer):从消息队列中获取消息,并进行相应的处理。消费者负责处理消息的逻辑,通常是异步地从队列中拉取消息。
  • 消息:要在系统中传递的数据单元。消息可以是任何形式的数据,如文本、JSONXML 等。

消息队列优点

  • 解耦性:生产者和消费者之间通过消息队列进行通信,彼此不需要直接连接,降低了耦合度。
  • 异步通信:生产者和消费者可以独立运行,不需要等待对方的响应。
  • 增强系统可靠性:即使一个组件或模块不可用,消息仍然可以被存储在队列中,待组件恢复后继续处理。
  • 缓冲能力:消息队列可以作为缓冲,处理高峰时段的突发流量,以及平滑系统的负载。

消息队列的应用场景

异步处理

将一些非核心的业务流程以异步并行的方式执行,从而减少请求响应时间,提高系统吞吐量。

应用解耦

就是接触应用系统之间的耦合依赖,通过消息队列,使每个应用系统不必受其他系统影响,可以更独立自主。

流量削峰

流量削峰一般在秒杀和团抢活动中使用广泛,在应用前端加入消息队列,秒杀业务处理系统根据消息队列中的请求信息,再做后续处理。

消息通讯

消息通讯是指应用间的数据通信。消息队列一般都内置了高效的通信机制,因此可以用在纯的消息通讯。比如实现点对点消息队列,或者聊天室等对点通讯。

常用消息队列中间件的对比

目前常见的消息队列系统包括 Apache KafkaRabbitMQRocketMQActiveMQ等,选择合适的消息队列取决于应用的需求、性能要求以及可用的基础设施。

kafkaRabbitMQRocketMQActiveMQ
资料文档中等
开发语言ScalaEriangJavaJava
支持协议自定义(基于TCP)AMQP自定义OpenWire、STOMP、RESR、XMPP、AMQP
消息存储内存、磁盘、数据库;支持大量堆积内存、磁盘;支持少量堆积磁盘;支持大量堆积内存,磁盘,数据库;支持少量堆积
消息事务支持支持支持支持
负载均衡支持支持支持可基于zk实现负载均衡
集群管理leader-slave支持简单集群master-slave支持简单集群
管理界面一般很好一般
可用性非常高非常高
吞吐TPS极大比较大比较大
顺序消息支持不支持支持不支持
消息确认支持支持支持支持
消息回调支持指定分区offset位置回调不支持支持指定时间点的回调不支持
消息重试不支持不支持支持不支持
并发度极高

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

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

相关文章

spring boot概述

SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。 该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。 通过这种方式,SpringBoot致力于在蓬勃发展的快速应用开发…

实时抓取SKU商品属性详细信息API数据接口(淘宝,某音)

item_sku-获取sku详细信息 taobao.item_sku详细信息 API公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_sku 名称类型必须描述keyString是调用key(演示示例)secretString是调用密钥api_nameString是API接口名称(包括在请求地…

设计模式学习笔记 - 设计原则 - 3.里氏替换原则,它和多态的区别是什么?

前言 今天来学习 SOLID 中的 L:里氏替换原则。它的英文翻译是 Liskov Substitution Principle,缩写为 LSP。 英文原话是: Functions that use points of references of base classes must be able to use objects of derived classes withou…

python-分享篇-生成仿微信公众号推广的个性二维码(支持动态)

代码 生成仿微信公众号推广的个性二维码(支持动态)from MyQR import myqr # 要生成动态二维码,只需要将piture参数和save_name参数设置gif动图即可 myqr.run(wordshttps://blog.csdn.net/stqer/article/details/135553200, # 指定二维码包含…

JVM(内存区域划分)

JVM JVM - Java虚拟机 我们编写的 Java 程序, 是不能够被 OS 直接识别的 JVM 充当翻译官的角色, 负责把我们写的的 Java 程序 ,翻译给 OS “听”, 让 OS 能够识别我们所写的 Java 代码 JVM 内存区域划分 JVM 是一个应用程序, 在启动的时候, 会从 操作系统 申请到一整块很大的内…

AI-RAN联盟在MWC24上正式启动

AI-RAN联盟在MWC24上正式启动。它的logo是这个样的: 2月26日,AI-RAN联盟(AI-RAN Alliance)在2024年世界移动通信大会(MWC 2024)上成立。创始成员包括亚马逊云科技、Arm、DeepSig、爱立信、微软、诺基亚、美…

【dc-dc】AP510X单路低压差线性恒流芯片

说明 AP510X 是一系列外围电路简洁的单路线性 LED 恒 流芯片,适用于 3-60V 电压范围的 LED 恒流调光 领域。 AP510X 采用我司专利算法,可以实现高精度的恒 流效果,输出电流恒流精度≤ 3 %,电源供电工作 范…

【LeetCode】升级打怪之路 Day 11:栈的应用、单调栈

今日题目: Problem 1: 栈的应用 155. 最小栈 | LeetCode20. 有效的括号 | LeetCode150. 逆波兰表达式求值 | LeetCode Problem 2: 单调栈 496. 下一个更大元素 I739. 每日温度503. 下一个更大元素 II 目录 Problem 1:栈 - “先进后出”的应用LC 155. 最…

【Java设计模式】五、建造者模式

文章目录 1、建造者模式2、案例:共享单车的创建3、其他用途 1、建造者模式 某个对象的构建复杂将复杂的对象的创建 和 属性赋值所分离,使得同样的构建过程可以创建不同的表示建造的过程和细节调用者不需要知道,只需要通过构建者去进行操作 …

力扣刷题记录--463. 岛屿的周长

题目链接&#xff1a;463. 岛屿的周长 - 力扣&#xff08;LeetCode&#xff09; 题目描述 我的代码实现 class Solution {public int islandPerimeter(int[][] grid) { int result0; int rowgrid.length; int colgrid[0].length; for(int i0;i<row;i){for(int j0;j<col…

【EI会议征稿通知】2024年图像处理与人工智能国际学术会议(ICIPAI2024)

2024年图像处理与人工智能国际学术会议&#xff08;ICIPAI2024&#xff09; 2024 International Conference on Image Processing and Artificial Intelligence&#xff08;ICIPAI2024&#xff09; 2024年图像处理与人工智能国际学术会议&#xff08;ICIPAI2024&#xff09;将…

返回静态数据

在Java项目中&#xff0c;往往不会一直返回某某数据&#xff0c;而是会返回一个静态页面&#xff0c;那么&#xff0c;如何正确返回一个静态页面呢&#xff1f;&#xff1f; 要想成功的返回一个静态页面前提是必须要有一个静态页面&#xff1a; <!DOCTYPE html> <ht…

如何让 JOIN 跑得更快?

JOIN 一直是数据库性能优化的老大难问题&#xff0c;本来挺快的查询&#xff0c;一旦涉及了几个 JOIN&#xff0c;性能就会陡降。而且&#xff0c;参与 JOIN 的表越大越多&#xff0c;性能就越难提上来。 其实&#xff0c;让 JOIN 跑得快的关键是要对 JOIN 分类&#xff0c;分…

Effective Programming 学习笔记

1 基本语句 1.1 断言 在南溪看来&#xff0c;断言可以用来有效地确定编程中当前代码运行的前置条件&#xff0c;尤其是以下情况&#xff1a; 第三方工具库对输入数据的依赖&#xff0c;例如&#xff1a;minitouch库对Android版本的要求

第三百八十一回

文章目录 1. 概念介绍2. 修改方法 015buttonStyle.png2.1 修改形状2.2 修改颜色2.3 修改位置 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何创建以图片为背景的页面"相关的内容&#xff0c;本章回中将介绍如何修改按钮的形状.闲话休提&#xff0c;让我们一起T…

2024年华为OD机试真题-文件缓存系统-Python-OD统一考试(C卷)

题目描述: 请设计一个文件缓存系统,该文件缓存系统可以指定缓存的最大值(单位为字节)。 文件缓存系统有两种操作:存储文件(put)和读取文件(get) 操作命令为put fileName fileSize或者get fileName 存储文件是把文件放入文件缓存系统中;读取文件是从文件缓存系统中访问已存…

06. Nginx进阶-Nginx代理服务

proxy代理功能 正向代理 什么是正向代理&#xff1f; 正向代理&#xff08;forward proxy&#xff09;&#xff0c;一个位于客户端和原始服务器之间的服务器。 工作原理 为了从原始服务器获取内容&#xff0c;客户端向代理发送一个请求并指定目标&#xff08;即原始服务器…

为不同文章形式选择不同的WordPress文章模板

在写文章的时候选择不同的文章形式&#xff0c;然后打开文章的时候会调用不同文章形式的模板。比如&#xff0c;文章形式为video &#xff0c;就调用single-video.php模板&#xff0c;其它文章形式类似&#xff0c;可以添加多个文章样式。 //为不同文章形式的内容添加不同的si…

chatgpt-next-web搭建教程,超低成本部署属于自己的ChatGPT

随着AI的应用变广&#xff0c;各类AI程序已逐渐普及&#xff0c;尤其是在一些日常办公、学习等与撰写/翻译文稿密切相关的场景&#xff0c;大家都希望找到一个适合自己的稳定可靠的ChatGPT软件来使用。 ChatGPT-Next-Web就是一个很好的选择。它是一个Github上超人气的免费开源…

Spring AOP在业务中常见的使用方式

目录 1、动态代理 1.1、jdk动态代理 1.2、cglib动态代理 1.3、动态代理的好处 2、什么是AOP 2.1、AOP常用术语 2.2、切面的构成 3、使用aspectJ框架实现AOP 3.1、aspectJ简介 声明实现类ServiceImpl 声明切面 3.3、AfterReturning后置通知 切面类代码 3.4、Aroun…