MQ比较选型

ops/2024/12/14 12:05:57/

4 种消息队列,如何选型?

kafka

分布式存储,多分区,分副本;基于发布订阅模式

架构

Product broker Consumer Group ZK

关键词

product

topic主题:消息分类,类似数据库表

partition分区:主题消息,存储在不同的分区上,不同分区部署到不同的服务器上

broker / +集群:即部署的kafka服务,接收消息,为消息设置偏移量,保存到磁盘

批次:目的,为了提高消息,消息会分批次写入kafka,批次概念,一组消息

相同主题+分区的消息,放到一个批次中

消费者组,消费者

push/ pull:生产/消费

分区与消费者/组关系:

一个分区只能被一个消费者消费,即只能对应一个消费组;一个消费者可以消费多个分区

工作原理

生产消息后,把消息序列化,通过不同的分区策略,找到对应的分区。

什么策略:顺序轮询,时间轮询,key hash

相同主题和分区的消息,会被存放在同一个批次里,然后由一个独立的线程负责把它们发到 Kafka Broker 上。

rocketMq

比kafka好在哪里,优化了可靠性传输/事务性

架构

name服务器,注册中心,类似ZK。product broker conumser group

关键词

product

topic主题:一级分类

topic子主题(tag):二级分类, 同一个业务模块不同的目的

/ 队列 /

broker:用于存放队列,一个broker可以存放多topic

/ 消费者组,消费者

队列与消费者/组关系

一个队列只能被一个消费者消费,即只能对应一个消费组;

一个消费者组可以消费多个队列

工作原理

为了提高并发能力,一个topic对应多个队列,生产者根据主题将消息放入topic,然后采取不同的策略(轮询策略),把消息发送到不同的队列中

存盘

简单提一下,Broker 通过集群部署,并且提供了 master/slave 的结构,salve 定时从 master 同步数据(同步刷盘或者异步刷盘),如果 master 宕机,则 slave 提供消费服务,但是不能写入消息。

RabbitMQ


http://www.ppmy.cn/ops/141810.html

相关文章

【开源免费】基于SpringBoot+Vue.JS加油站管理系统(JAVA毕业设计)

本文项目编号 T 003 ,文末自助获取源码 \color{red}{T003,文末自助获取源码} T003,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

SQL Having用法

拿个业务场景说这个案例,比如我们有个表里面可能有批改过的数据,批改过得数据不会随着新批改的数据覆盖,而是逐条插入表中,如果想找出包含最早批改的数据和最新批改数据的话,那么我们就需要用到了havinng 用法,假设最开…

【C++算法】41模拟_外观数列

文章目录 题目链接:题目描述:解法C 算法代码: 题目链接: 38. 外观数列 题目描述: 解法 演示: 模拟双指针: right,直到left和right不同才停下来。 countright-left C 算法代码&…

Node.JS基础

标题:Node.js 基础教学课件 第一章:Node.js 概述 课件内容: 介绍Node.js及其与浏览器中JavaScript的区别。讲解Node.js的事件驱动、非阻塞I/O模型。Node.js的适用场景和优势。Node.js的版本管理和环境搭建。 讨论点: Node.js…

react-redux 数据持久化

安装依赖: npm install redux-persist 改造 src/store/index.js import { configureStore } from reduxjs/toolkit import userSlice from ./userSlice import storage from redux-persist/lib/storage; import { persistReducer, persistStore } from redux-p…

【再谈设计模式】组合模式~层次构建的多面手

一、引言 在软件开发的世界里,我们经常面临着处理对象之间复杂关系的挑战。如何有效地表示对象的部分 - 整体层次结构,并且能够以一种统一的方式操作这些对象,是一个值得探讨的问题。组合模式(Composite Pattern)为我们…

《蓝桥杯比赛规划》

大家好啊!我是NiJiMingCheng 我的博客:NiJiMingCheng 这节课我们来分享蓝桥杯比赛规划,好的规划会给我们的学习带来良好的收益,废话少说接下来就让我们进入学习规划吧,加油哦!!! 一、…

虚幻引擎Actor类生命周期

AActor构造函数 在AActor类的构造函数中,虚幻引擎会初始化与该Actor相关的一些关键属性,比如: 默认的组件(如RootComponent、MeshComponent等)。默认的属性设置,例如位置、旋转、缩放等。还会调用BeginPlay等生命周期函数,但在构造函数中,这些函数不会执行。当你在场景…