常用的消息中间件(ActiveMQ、RabbitMQ、RocketMQ、Kafka)面试精华

embedded/2024/12/22 21:23:44/

目录

主要作用:

四种消息中间件:

主要作用:

  • 解耦

  1. 多个系统调用主系统可选择是否订阅

  • 异步

  1. 主系统可提高响应时间

  • 削峰

  1. 通过消息队列减轻消息访问对服务器的压力

四种消息中间件:

ActiveMQ

  1. 万级吞吐量

RabbitMQ(中小型公司)

  1. 万级吞吐量

RocketMQ(中大型公司)(非分布式)

  1. 十万级

  2. Topic主题分类更加细致 有Tag分级

  3. 高可用:镜像集群模式

  4. 怎么做:开启镜像集群策略,可指定同步数据节点数量是所有还是个别几个

Kafka(纯分布式的mq)

  1. 十万级

  2. 高可用:假设一个topic有三个partition,在topic中写三条消息,每条消息存在不同的partition中,每个partition有自己的副本,选出leader和follower,leader宕机后,在follower中选出leader

  3. 只能leader读写,保证一致性,减轻复杂度

  4. leader读取数据后,follower从leader拉取数据,响应ack告诉leader

  5. 生产者给kafka发送消息都有一个offset 在kafka中是有序的,消费者也是按照顺序消费的,消费者按顺序消费到哪个offset,zookeeper有记录,kafka可以从zookeeper中读取消费到那个位置了

  6. 由于消费者重启,kafka无法感知消费者消标记的offset,kafka会重复发已经发过的消息,导致消费者会重复消费   需要要保证幂等性

      解决办法:

      每条消息设置id存入Redis

      数据库主键唯一性


http://www.ppmy.cn/embedded/147912.html

相关文章

游戏AI实现-寻路算法(Dijkstra)

戴克斯特拉算法(英语:Dijkstras algorithm),又称迪杰斯特拉算法、Dijkstra算法,是由荷兰计算机科学家艾兹赫尔戴克斯特拉在1956年发现的算法。 算法过程: 1.首先设置开始节点的成本值为0,并将…

使用Python实现天文数据分析:探索宇宙的奥秘

天文学是一门通过观测和分析天体来研究宇宙结构和演化规律的科学。随着观测技术的进步,天文学家们积累了大量的天文数据。通过对这些数据的分析,我们可以揭示宇宙中的诸多奥秘。Python作为一种功能强大且易用的编程语言,为天文数据分析提供了…

指令v-on 调用传参

在Vue.js中,可以使用指令v-on来给元素绑定事件。v-on指令可以接收一个事件名称作为参数,还可以传递额外的参数给事件处理函数。以下是对v-on指令调用传参的详细解析与代码实例。 当使用v-on指令调用事件处理函数时,可以使用冒号(…

PDF无法打印!怎么办?

打开PDF文件之后,发现文件不能打印?这是什么原因?首先我们需要先查看一下自己的打印机是否能够正常运行,如果打印机是正常的,我们再查看一下,文件中的打印功能按钮是否是灰色的状态。 如果PDF中的大多数功…

【C++读写.xlsx文件】OpenXLSX开源库在 Ubuntu 18.04 的编译、交叉编译与使用教程

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 ⏰发布时间⏰: 2024-12-17 …

harmony UI组件学习(1)

Image 图片组件 string格式,通常用来加载网络图片,需要申请网络访问权限:ohos.permission.INTERNET Image(https://xxx.png) PixelMap格式,可以加载像素图,常用在图片编辑中 Image(pixelMapobject) Resource格式,加…

深度学习环境安装

在此之前请一定要检查一下自己的云服务器里有没有python,一定要!!!!因为我就是安装完之后发现自己云服务器中有Python 云服务器的Linux环境下的Python的安装: 第一步:直接安装依赖包 //复制以…

HTML基本标签详解

HTML基本标签详解 HTML&#xff08;超文本标记语言&#xff09;是构建网页的基础&#xff0c;以下是一些常用的 HTML 基本标签及其详细说明&#xff1a; <html> 定义&#xff1a;整个 HTML 文档的根元素。示例&#xff1a;<html lang"zh"><head> …