消息队列基础

news2024/11/17 15:28:49

消息队列的应用场景

  • 异步处理,提升吞吐量

  • 削峰填谷,平滑流量冲击

  • 应用解耦,提升系统可用性

  • 消息通讯,点对点消息通讯

消息模型

  • 点对点模式

    • 生产者生产消息到队列服务器,消费者消费消息,并发送确认收到消息给队列服务器,队列服务器收到确认消息后将消息从服务器删除
  • 发布/订阅模式

    • 相对点对点模式,引入Topic的概念,队列服务器提供多个Topic供消费者消费,一个消费者消费消息后,其他消费者也能消费到同一条消息(如果不设置ack的话)

如何确保消息不丢失?

  • 生产端

    • 目标:确保生产的消息能到达MQ服务端
      方式:副本数的ack数量、重试多次
      缺点:可能会导致消息队列吞吐量下降
  • 服务端

    • 目标:确保在分区挂掉时,消息存储不丢失
      方式:副本,集群化部署
      结果:需要注意非ISR副本不可选举为leader副本
  • 消费端

    • 目标:确保消息在消费端不丢失
      方式:消费一条,处理一条,手动提交一条offset
      结果:消费并处理完消息后,提交offset失败,可能会导致重复消费

如何解决消息重复消费问题?

  • 方式一:设置只拉取一次,先提交offest再处理消息,可能会在处理报错后再想消费消息消费不到,所以这种方式一般不采用

  • 方式二:允许重复消费,消费端在消费时借助redis或数据表做好幂等性设计

如何保证消息是有序的?

  • 方法一:将topic强制采用一个分区,产生的消息自然是有顺序的

  • 方法二:局部有序方式,路由将msgID计算Hash后%partition取余,消费端单线程消费

如何处理消息堆积?

  • 方法一:消费者扩容

  • 方法二:消息迁移Queue扩容,新建临时Topic,消费消息转发到这个临时Topic,用扩容的消费者消费临时Topic中的消息

  • 方法三:优化代码,解决消费端代码消费能力不足问题

事务消息怎么实现?

在这里插入图片描述

如何实现MQ框架的高吞吐?

- 1、批量消费,批量处理

- 2、利用零拷贝机制,减少消息拷贝

- 3、磁盘顺序写入和读取

- 4、写消息时采取操作系统的异步刷写模式

- 5、消息分区,每个分区并发消费
  • 6、消息压缩设计,节省带宽和存储空间按

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

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

相关文章

Redis Cluster 扩容实战

Redis Cluster 扩容 接着上一篇Redis Cluster 单机集群部署,今天学习下Redis Cluster 架构在实际应用中如何面对各种复杂的场景,如: 扩容 - 增加节点缩减 - 删除节点宕机 - 主节点服务异常 增加节点 随着集群需求的变化,系统人…

smart-doc 文档生成器实战

文章目录一、部署二、代码演示1.类、方法注解2.执行、生成html 或 markdown文档三、参考文档一、部署 1.基于SprinBoot项目&#xff0c;加入pom.xml加入依赖<build><plugins><!-- 打包跳过测试 --><plugin><groupId>org.springframework.boot&l…

[附源码]计算机毕业设计高校学生宿舍管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis MavenVue等等组成&#xff0c;B/S模式…

若依微服务版登录流程源码分析2

接上篇&#xff0c;后端接收到“/code”请求并将其转发至ValidateCodeHandler处理 生成验证码 进入ValidateCodeServiceImpl#createCaptcha 这块代码比较简单&#xff0c;就不多赘述 /** * 生成验证码 */ Override public AjaxResult createCaptcha() throws IOException, C…

VM 找不到虚拟磁盘 000001.vmdk 一种排查思路

报错内容“ 找不到文件: E:\win10\Windows 10 x64-000001.vmdk 开启此虚拟机需要用到此文件。如果移动了此文件&#xff0c;请提供它的新位置。 ” 它明明就在哪里&#xff0c;却提示找不到&#xff01;气死 这个时候可以打开“vmware.log” 查看报错内容。 比如我的核心报…

从零开始学Java之Java到底是个啥?

全文大约 【 5000】 字&#xff0c;不说废话&#xff0c;只讲可以让你学到技术、明白原理的纯干货&#xff01;文章带有丰富案例及配图、视频&#xff0c;只为让你更好的理解和运用文中的技术概念&#xff0c;给你带来具有足够启迪的教程...... -----------------------------…

基础数据结构链表

链表是一种常见的基础数据结构&#xff0c;结构体指针在这里得到了充分的利用。链表可以动态的进行存储分配&#xff0c;也就是说&#xff0c;链表是一个功能极为强大的数组&#xff0c;他可以在节点中定义多种数据类型&#xff0c;还可以根据需要随意增添&#xff0c;删除&…

论文速递:带重力约束的点云配准(Gravity-constrained point cloud registration)

标题&#xff1a;Gravity-constrained point cloud registration 作者&#xff1a;Vladim ́ır Kubelka, Maxime Vaidis and Franc ̧ois Pomerleau&#xff0c;加拿大拉瓦尔大学 来源&#xff1a;IROS 2022 摘要 视觉和激光SLAM算法从IMU中获益良多。高频率的IMU数据弥补了…

嵌入式:ARM的流水线技术

三级流水线ARM的组织 ARM的3级流水线介绍 到ARM7为止的ARM处理器使用的简单3级流水线分别为 取指级 &#xff1a;读取指令。译码级 &#xff1a;对指令进行译码。占有“译码逻辑”&#xff0c;不占有“数据路径”。执行级 &#xff1a;指令占有“数据路径”&#xff0c;寄存…

拼搏别样的未来,中国社科院与美国杜兰大学金融管理硕士项目助力你的人生旅程

你憧憬中的未来是什么样子呢&#xff1f;我们的人生路程充满了众多可能性&#xff0c;只要努力就会收获自己的别样人生。我们的人生不是单一的色彩&#xff0c;它是五彩斑斓、精彩纷呈的。在每一个阶段的我们所拥有当时的状态并不能代表永远&#xff0c;随着我们的拼搏与奋斗&a…

2022全年度空调十大热门品牌销量榜单

今年空调的销售得到明显改善&#xff0c;尤其是今年夏天全国多地最高气温同比明显提升&#xff0c;且高温的强度和持续时间还具有一定的极端性。随着气温的骤升&#xff0c;空调市场也迅速升温&#xff0c;各终端销售量出现明显增长。 根据鲸参谋数据统计&#xff0c;今年京东平…

“美亚杯”第五届中国电子数据取证大赛答案解析(个人赛)

A C D 分区5为系统分区 A 1073741824*458.29492085140520.96 E A A E D B 无答案 C 搜索各选项&#xff0c;C项搜不到 B C E 使用火绒剑查看进程调用的动态链接库 C 仿真得 B 内存大小为3G&#xff0c;在系统盘根目录过滤大小在2-8G之间的文件 D Win10时间线信息存放的数…

代码随想录算法训练营第六天| 哈希表理论基础 ,242.有效的字母异位词 , 349. 两个数组的交集 ,202. 快乐数,1. 两数之和

代码随想录算法训练营第六天| 哈希表理论基础 &#xff0c;242.有效的字母异位词 &#xff0c; 349. 两个数组的交集 &#xff0c;202. 快乐数&#xff0c;1. 两数之和 哈希表理论基础 建议&#xff1a;大家要了解哈希表的内部实现原理&#xff0c;哈希函数&#xff0c;哈希碰…

PAT 乙级 1078字符串压缩与解压 python

题目 思路&#xff1a; 生成两个函数&#xff1a;压缩与解压 在压缩中利用flag保留前一个字符串 再利用count统计重复出现字母的个数 如果目前遍历到的字母和flag相同&#xff0c;则count1 反之&#xff0c;说明重复结束 在解压中&#xff0c;如果遇到数字&#xff0c;表示需…

一文带你了解 K8s 是如何部署应用的

通过部署一个 Nginx 服务/实例来简单介绍 K8s 部署一个应用的流程。 1、创建 deployment 资源 kubectl create deployment nginx --imagenginx kubectl expose deployment nginx --port80 --typeNodePort2、查看 deployment 资源 kubectl get deployment3、查看节点上的 pod…

安全需求分析

汽车制造业 MES系统 DNC系统 生产 安全域1 管理层 工控安全隔离装置 交换机 安全配置核查系统 HMI 历史数据库 运行监控系统 实时数据库 打印机 过程 安全域2 监控层 工控漏洞扫描系统 安全交换机 工控安全审计系统 工控入侵检测系统 工程师站 A 操作员站 A 实时数据库A 操作员…

【菜鸡读论文】Margin-Mix: Semi-Supervised Learning for Face Expression Recognition

【菜鸡读论文】Margin-Mix: Semi-Supervised Learning for Face Expression Recognition 感觉最近的每天都在见证历史&#xff0c;上海现在也开始全面放开了&#xff0c;很多高校都已经开始遣返了。小伙伴们都回到家了吗&#xff1f; 上周周末太懒了&#xff0c;就没有更新论…

一文教你在SpringBoot中使用Thymeleaf

一文教你在SpringBoot中使用Thymeleaf1.快速使用Thymeleaf2.Thymeleaf快速入门案例3.Thymeleaf基本语法each遍历其他语法1.快速使用Thymeleaf 首先导入Maven依赖&#xff1a; <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-thym…

怎么在图片加文字边框?这些方法值得你收藏

当我们在拍完照片以后&#xff0c;一般都会为它进行后期的编辑修图&#xff0c;因此在图片上面添加一些文字信息和边框是必不可少的&#xff0c;这样不仅能使图片变得更加精致&#xff0c;还可以增加它的信息量。那你们知道怎么给图片加上边框和文字吗&#xff1f;别着急&#…

uniapp实战仿写网易云音乐(一)—底部工具栏以及首页轮播图swiper的实现

文章目录前言首页导航栏公共样式的配置首页轮播图最后前言 从本篇文章开始记录uniapp实战仿写网易云音乐项目的过程&#xff0c;主要会写一下关键步骤和难点&#xff0c;本专栏会保持持续更新&#xff0c;并在最后送上源码&#xff0c;感兴趣的可以订阅本专栏。本篇主要实现的…