DMQ简介

article/2025/9/21 6:55:34

DMQ简y介

DMQ简介 - Water2Wine - 博客园

原文

1. DMQ简介

Distributed Message Queue(分布式消息队列),DMQ 是在kafka之上做了一层封装,为AC的其他组件提供分布式消息队列服务。简单来说,DMQ就是一个消息中间件,传递消息。

2. DMQ组件

DMQ主要由消息提供商Producer,消息消费者Consumer,注册中心Zookeeper以及Kafka集群组成。

消息提供商提供信息到kafka集群,消息消费者从kafka集群获取信息,kafka集群为了提高消息的安全性,会创建多个备份,而为了保持备份与原信息的一致性,我们需要增加一个注册中心zookeeper,它用来维护备份信息的同步。

3. KAFAKA介绍

Producer:生产者,即消息发送者,push消息到Kafka集群中的broker(就是server)中

Consumer:消费者,从Kafka集群的broker中pull消息、消费消息

Consumer group:每个 consumer 都属于一个consumer group,每条消息只能被 consumer group 中的一个 Consumer 消费,但可以被多个 consumer group消费

Broker:Kafka集群由多个Kafka实例(Server)组成,每个实例构成一个broker,说白了就是服务器

topic:producer向kafka集群push的消息会被归于某一类别,即Topic,这本质上只是一个逻辑概念,面向的对象是producer和consumer,producer只需要关心将消息push到哪一个Topic中,而consumer只需要关心自己订阅了哪个Topic

partition:每一个Topic又被分为多个Partitions,即物理分区;出于负载均衡的考虑,同一个Topic的Partitions分别存储于Kafka集群的多个broker上;而为了提高可靠性,这些Partitions可以由Kafka机制中的replicas来设置备份的数量

replicas:partition 的副本,保障 partition 的高可用

Zookeeper:kafka通过zookeeper来存储集群的meta信息及统一topic不同partition的原子性和一致性

leader:replicas 中的一个角色, producer和consumer只跟leader交互

follower:replica 中的一个角色,从leader中复制数据

controller:kafka 集群中的其中一个服务器,用来进行leader election以及各种failover

4. Zookeeper介绍

在zookeeper中分为
Zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。

Zookeeper的核心是原子广播,这个机制保证了各个Server之间的同步。

实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。

当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和Server具有相同的系统状态。

5. Kafka架构与Zookeeper的交互

首先要明白为什么在producer-kafka-consumer的机制中要引入zookeeper。

上面说过,为了保障数据的可靠性,一个topic会在多个kafka服务器上备份partition,但是这就引入了数据的一致性问题,因此要引入zookeeper。

基于zookeeper,kafka为每一个partition找一个节点作为leader,其余备份作为follower,在整个工作过程中,producer充当了client。

6. DMQ全程解析

1. Producer发布消息

采用push模式将消息发布到broker,每条消息都被append到partition中,属于顺序写磁盘

2. Broker存储消息

物理上把 topic 分成一个或多个 patition,每个 patition 物理上对应一个文件夹(该文件夹存储该 patition 的所有消息和索引文件)

3. Consumer消费消息

high-level consumer API 提供了consumer group的语义,一个消息只能被group内的一个consumer所消费

如果消费线程大于patition数量,则有些线程将收不到消息

如果patition数量大于线程数,则有些线程多收到多个patition的消息

如果一个线程消费多个patition,则无法保证你收到的消息的顺序,而一个patition内的消息是有序的

 


http://chatgpt.dhexx.cn/article/LjcpW5Ui.shtml

相关文章

tqdm介绍

tqdm是一个进度条可视化库,可以帮助我们监测程序运行的进度,估计运行的时长,甚至可以协助debug。它是一个快速,可扩展的Python进度条,可以在 Python 长循环中添加一个进度提示信息,用户只需要封装任意的迭代…

python进度条神器之tqdm包的使用

前言:在Python开发中,我们经常需要使用进度条来展示任务进行的进度到哪里了,特别是在机器学习与深度学习框架里面,tqdm包是一个非常简单但是功能强大的进度条处理工具,一起来看看它的一些基本用法吧! 一、…

Python中tqdm模块介绍

tqdm模块简单介绍 tqdm是一个可以显示Python进度条的模块,可通过pip在终端安装 pip install tqdm可通过 import tqdm 导入,也可通过 from tqdm import 【函数名】 导入 1. tqdm.tqdm 传入数字list: from tqdm import tqdm for i in tqdm(range(1, 5)…

Python进度条tqdm详细介绍

前言 有时候在使用Python处理比较耗时操作的时候,为了便于观察处理进度,这时候就需要通过进度条将处理情况进行可视化展示,以便我们能够及时了解情况。这对于第三方库非常丰富的Python来说,想要实现这一功能并不是什么难事。 tq…

【python第三方库】tqdm简介

转载自: https://blog.csdn.net/wxd1233/article/details/118371404 仅作学习记录,侵删~ 文章目录 介绍安装使用方法1.传入可迭代对象使用trange 2.为进度条设置描述3.手动控制进度4.tqdm的write方法5.手动设置处理的进度6.自定义进度条显示信息 在深度学…

【tqdm】进度条工具

tqdm 是一种呈现循环进度的工具包,本文讲讲述他的常用用法。 Example 1 假设FL框架中一共有10个用户,每次随机抽取5个用户进行更新,一共训练6个epochs,结合tqdm显示训练进程的代码框架如下: for epoch in range(6):…

tqdm模块

首先给大家看看tqdm源码中的一段注释: Decorate an iterable object, returning an iterator which acts exactly like the original iterable, but prints a dynamically updating progressbar every time a value is requested. 如果翻译过来: tqdm是…

python库tqdm是什么以及怎么用tqdm、trange和tqdm.notebook

1.是什么? 答案:用来显示进度条以及展示每一轮(iteration)所耗费的时间。好抽象,我们重点看怎么用,从而明白是什么。 2.怎么用? 自行安装,如果是anaconda的话这个是默认已经安装了的。从而导入…

Py之tqdm:tqdm库的简介、安装、使用方法详细攻略

Py之tqdm:tqdm库的简介、安装、使用方法详细攻略 目录 tqdm库的简介 tqdm库的安装 tqdm库的使用方法 tqdm库的简介 显示循环的进度条的库。taqadum, تقدّم)在阿拉伯语中的意思是进展。tqdm可以在长循环中添加一个进度提示信息,用户只…

tqdm安装

环境:win10 Python3.6 首先,直接使用pip安装:pip install tqdm ,成功安装,但是导入不了tqdm进行使用。 import tqdm from tqdm import tqdm Traceback (most recent call last):File "D:\Anaconda3\lib\site-…

【PyTorch总结】tqdm的使用

文章目录 介绍安装使用方法1.传入可迭代对象使用trange2.为进度条设置描述3.手动控制进度4.tqdm的write方法5.手动设置处理的进度6.自定义进度条显示信息 在深度学习中如何使用 介绍 Tqdm 是 Python 进度条库,可以在 Python 长循环中添加一个进度提示信息。用户只需…

Python的Tqdm模块——进度条配置

tqdm官网地址:https://pypi.org/project/tqdm/ Github地址:https://github.com/tqdm/tqdm 简介 Tqdm 是一个快速,可扩展的Python进度条,可以在 Python 长循环中添加一个进度提示信息,用户只需要封装任意的迭代器 tqd…

tqdm 简介及正确的打开方式

tqdm 简介及正确的打开方式 查遍了网上资料,发现绝大中文的讲解全都是一手带过,还称详细,真是醉了,于是有该文,也算给自己做个笔记 1. 什么是tqdm? tqdm是一个快速的,易扩展的进度条提示模块&a…

tqdm库

tqdm库 文章目录 tqdm库如何安装如何使用1.基于迭代的进度条2.手动设置进度条 如何在Pandas中使用进度条如何在keras中使用进度条如何使用Notebook优化的进度条和层级进度条如何为文件存储设置进度条 简要介绍: tqdm是一个进度条可视化库,可以帮助我们监…

tqdm的使用和例子

1. tqdm的介绍 有时候在使用Python处理比较耗时操作的时候,为了便于观察处理进度,这时候就需要通过进度条将处理情况进行可视化展示,以便我们能够及时了解情况。 tqdm就能非常完美的支持和解决这些问题,可以实时输出处理进度而且…

一个被忽视的Python神器 - Tqdm

1. 什么是Tqdm 在日常工作和学习中,经常需要观察当前任务的执行进度,尤其是一个执行时间很长的任务,如果能够有进度条实时的显示当前的任务进度,那么将非常方便。 Tqdm 是一个快速,可扩展的Python进度条,…

tqdm 详解

文章目录 1. 简介2. 使用方法3. 实例 - 手写数字识别 1. 简介 tqdm是 Python 进度条库,可以在 Python长循环中添加一个进度提示信息。用户只需要封装任意的迭代器,是一个快速、扩展性强的进度条工具库。 2. 使用方法 传入可迭代对象 import time from…

idea方法注释的快捷键设置idea自定义注释设置

作者: yibox_qcby目录 效果展示配置步骤第一步第二步第三步第四步第五步第六步 完成 效果展示 配置步骤 第一步 第二步 第三步 第四步 注意第一行不是/** *** ClassName $className$* Description : 功能说明* $params$* Return : $return$* Author : 作者* Date : $DATE$ $…

idea中使用注释快捷键的问题及解决办法

问题描述 在idea中,使用注释快捷键会产生在注释前面会有缩进,这种缩进对于有着强迫症的我简直受不了 在按照网上其他的教程进行相关设置之后还是出现这样的问题 解决方法 我在使用中偶然发现idea注释的快捷键除了行注释(Ctrl/&#xff…

idea文档注释的快捷键带参数

注意:为了大家能逐步了解 对这个小功能有个熟悉的过程 (其实是作者比较懒 不想从头到尾重新截图 ) 发现问题会在文章未陆续更新 建议把整篇文章都看完 如果懒得看过程 看完开头后 文章最后代码直接复制进去就好了 输入 /** 按回车,当然这肯定…