Kafka消息队列

目录

  • 前置内容
  • 常用脚本说明和示例
  • 描述与定义
    • 部分术语说明
    • 两种模式
      • 点对点模式
      • 发布订阅模式
  • topic主题命令行操作指令
  • 生产者
  • Broker
  • 消费者

前置内容

队列:

先进先出

应用:

大数据中主要用于离线和实时处理

流程:

Flume正常获取数据,但数据量不固定,时间不定期,如果直接写入到存储(HDFS)分析(Spark)等等可能遇到一定问题,因此先进入到Kafka集群。
在这里插入图片描述

其他同类型产品:

RabbitMQ、ActiveMQ、RocketMQ

总结描述:

kafka等消息队列实质是一个高性能的消息传输管道


常用脚本说明和示例

以下脚本均存放在kafka的bin目录下

脚本名称作用示例
connect-distributed.sh启动 Kafka Connect 的分布式模式,用于在 Kafka 集群之间复制数据或与其他系统集成。./connect-distributed.sh connect-distributed.properties 启动使用指定配置文件的分布式模式。
connect-mirror-maker.sh启动 Kafka MirrorMaker,用于在两个 Kafka 集群之间镜像数据。./connect-mirror-maker.sh mirror-maker.properties 启动使用指定配置文件的MirrorMaker。
connect-standalone.sh启动 Kafka Connect 的独立模式,适用于简单的数据集成任务。./connect-standalone.sh connect-standalone.properties 启动使用指定配置文件的独立模式。
kafka-acls.sh管理 Kafka 的访问控制列表(ACLs),用于设置和查看主题、消费者组等资源的权限。./kafka-acls.sh --list --topic test-topic 列出指定主题的ACLs。
kafka-broker-api-versions.sh查看 Kafka broker 支持的 API 版本。./kafka-broker-api-versions.sh --bootstrap-server localhost:9092 查看本地broker的API版本。
kafka-configs.sh查看和修改 Kafka 主题、broker 或其他实体的配置。./kafka-configs.sh --describe --topic test-topic 描述指定主题的配置。
kafka-console-consumer.shKafka 控制台消费者,用于从 Kafka 主题中读取消息。./kafka-console-consumer.sh --topic test-topic --bootstrap-server localhost:9092 消费消息。
kafka-console-producer.shKafka 控制台生产者,用于向 Kafka 主题发送消息。./kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9092 生产消息。
kafka-consumer-groups.sh查看和管理 Kafka 消费者组的信息,包括消费者组的偏移量、成员等。./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group test-group 描述消费者组。
kafka-consumer-perf-test.sh运行 Kafka 消费者的性能测试,用于评估消费者的吞吐量。./kafka-consumer-perf-test.sh --topic test-topic --bootstrap-server localhost:9092 --threads 1 --messages 1000 运行性能测试。
kafka-delete-records.sh删除 Kafka 主题中的特定消息记录,通常用于数据清理。./kafka-delete-records.sh --bootstrap-server localhost:9092 --offset-json-file delete-offsets.json 根据偏移量文件删除记录。
kafka-delegation-tokens.sh管理 Kafka 的委托令牌,用于安全认证和授权。./kafka-delegation-tokens.sh --bootstrap-server localhost:9092 --create --command-config token-command.properties 创建委托令牌。
kafka-dump-log.sh转储 Kafka 日志文件的内容,用于调试和分析。./kafka-dump-log.sh --files /var/lib/kafka/data/test-topic-0/00000000000000000000.log 转储指定日志文件。
kafka-leader-election.sh触发 Kafka 分区的 leader 选举,用于故障恢复或负载均衡。./kafka-leader-election.sh --bootstrap-server localhost:9092 --topic test-topic --partition 0 触发指定分区的leader选举。
kafka-log-dirs.sh查看 Kafka broker 的日志目录信息。./kafka-log-dirs.sh --bootstrap-server localhost:9092 查看broker的日志目录信息。
kafka-mirror-maker.sh(与 connect-mirror-maker.sh 类似)用于在两个 Kafka 集群之间镜像数据。connect-mirror-maker.sh示例。
kafka-preferred-replica-election.sh触发 Kafka 首选副本的选举,用于优化集群的副本分布。./kafka-preferred-replica-election.sh --bootstrap-server localhost:9092 触发首选副本选举。
kafka-producer-perf-test.sh运行 Kafka 生产者的性能测试,用于评估生产者的吞吐量。./kafka-producer-perf-test.sh --topic test-topic --num-records 1000000 --record-size 100 --throughput -1 --producer-props bootstrap.servers=localhost:9092 运行性能测试。
kafka-reassign-partitions.sh重新分配 Kafka 分区的副本,用于集群扩容、缩容或故障恢复。./kafka-reassign-partitions.sh --bootstrap-server localhost:9092 --reassignment-json-file partitions-to-move.json --execute 执行分区重分配。
kafka-replica-verification.sh验证 Kafka 分区副本的一致性,用于数据完整性检查。./kafka-replica-verification.sh --bootstrap-server localhost:9092 --topic test-topic 验证指定主题的分区副本一致性。
kafka-run-class.sh运行任意的 Java 类,通常用于运行 Kafka 相关的 Java 工具或测试。./kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092 --topic test-topic 运行GetOffsetShell工具。
kafka-server-start.sh启动 Kafka broker。./kafka-server-start.sh server.properties 启动使用指定配置文件的broker。
kafka-server-stop.sh停止 Kafka broker。./kafka-server-stop.sh 停止运行中的broker。
kafka-streams-application-reset.sh重置 Kafka Streams 应用程序的状态存储,用于调试或恢复。./kafka-streams-application-reset.sh --application-id my-streams-app --bootstrap-servers localhost:9092 --zookeeper localhost:2181 重置指定应用程序的状态。
kafka-topics.sh管理 Kafka 主题,包括创建、删除、查看主题列表、修改主题配置等。./kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1 创建主题。
kafka-verifiable-consumer.sh运行一个可验证的消费者,用于测试和验证 Kafka 消费者的行为。./kafka-verifiable-consumer.sh --topic test-topic --bootstrap-server localhost:9092 --group-id test-group --messages 10 运行可验证的消费者。
kafka-verifiable-producer.sh运行一个可验证的生产者,用于测试和验证 Kafka 生产者的行为。./kafka-verifiable-producer.sh --topic test-topic --bootstrap-server localhost:9092 --messages 10 运行可验证的生产者。
trogdor.shKafka 的性能测试工具,用于评估 Kafka 集群的性能。./trogdor.sh --broker-list localhost:9092 --test-props trogdor-test.properties 运行性能测试。
windows(通常是一个目录)包含适用于 Windows 环境的 Kafka 脚本和工具。无直接示例,但可以在Windows环境下找到并使用该目录下的脚本。
zookeeper-security-migration.sh用于迁移 Zookeeper 的安全配置,通常与 Kafka 的安全设置相关。./zookeeper-security-migration.sh --zookeeper.server localhost:2181 --migration.properties zookeeper-migration.properties 执行安全配置迁移。
`zookeeper-server-start

描述与定义

部分术语说明

术语描述
事件记录世界或业务中“发生了某事”的事实,具有键、值、时间戳和可选元数据
事件键事件的唯一标识符(如“白富美”)
事件的值事件的具体内容(如“向土豪支付了520元”)
事件时间戳事件发生的时间(如“yyyy年05月20日13:14”)
生产者向Kafka发布(写入)事件的客户端应用程序
消费者订阅(读取和处理)Kafka中事件的客户端应用程序
主题事件被组织并持久存储的地方,支持多生产者和多订阅者,一般只用于发布订阅模式
- 主题特性事件消费后不被删除,可根据配置保留一段时间
BrokerKafka服务器,负责持久化消息和传输消息
- Broker功能一台Kafka服务器即为一个broker,集群由多个broker组成
分区主题被分成多个分区,分布在不同broker上,支持并发读写
- 分区特性具有相同事件键的事件被写入同一个分区,保证消费顺序与写入顺序一致

两种模式

点对点模式

一对一,消费者主动拉取数据,消息收到后消息清除

  • 消息生产者生产消息发送到Queue中,然后消息消费者从Queue中取出并且消费消息。
  • 消息被消费以后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息。
  • Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。
    在这里插入图片描述

发布订阅模式

  • 消息生产者(发布)将消息发布到topic中,可以有多个topic。
  • 同时有多个消息消费者(订阅)消费该消息,消费数据后不删除。
  • 每个消费者相互独立,都可以消费到数据,
    在这里插入图片描述

topic主题命令行操作指令

参数描述
–bootstrap-servernode3:9092连接的 Kafka Broker 主机名称和端口号
–topic<String: topic> 比如:topicA操作的 topic 名称
–list查看所有主题
–create创建主题
–delete删除主题
–alter修改主题
–describe查看主题详细描述
–partitions<Integer: # of partitions>设置分区数
–replication-factor<Integer: replication factor>设置分区副本
–config<String: name=value>更新系统默认的配置
–version查看当前系统 Kafka 的版本
–help输出帮助信息

示例

  • 创建
/opt/module/kafka/bin/kafka-topics.sh --bootstrap-server slave1:9092 --create --topic topicA --partitions 3 --replication-factor 2
  • 查看所有主题
/opt/module/kafka/bin/kafka-topics.sh --bootstrap-server slave1:9092 --list
  • 删除主题
/opt/module/kafka/bin/kafka-topics.sh --bootstrap-server slave1:9092 --delete --topic topicA
  • 描述主题
/opt/module/kafka/bin/kafka-topics.sh --bootstrap-server slave1:9092 --describe --topic topicA

在这里插入图片描述


生产者

详见如下
生产者专题博客

Broker

Broker专题

消费者

消费者专题

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

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

相关文章

如何使用 Ansys OptiSlang 同时运行多个参数化设计研究

了解如何通过使用 OptiSLang 同时运行多个参数化设计研究来提高工作效率。 了解参数化设计研究的重要性 参数化设计研究在工程和设计过程中起着至关重要的作用。通过改变输入参数&#xff0c;工程师可以探索不同设计选择的效果&#xff0c;并优化其设计以满足性能、成本或其他…

Nginx (40分钟学会,快速入门)

一、什么是Nginx ? 可以做什么 &#xff1f; Nginx 是高性能的 HTTP 和反向代理的 web 服务器&#xff0c;处理高并发能力是十分强大的&#xff0c;能经受高负载的考验&#xff0c;有报告表明能支持高达50000个并发的连接数.Nginx特点就是内存少&#xff0c;并发能力强。事实上…

【Rust自学】10.6. 生命周期 Pt.2:生命周期的语法与例子

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 10.6.1. 生命周期标注语法 生命周期的标注并不会改变引用的生命周期长度。如果某个函数它制定了泛型生命周期参数&#xff0c;那么它就可…

【Android项目学习】3. MVVMHabit

项目链接 文章目录 一. 项目结构1. 项目整体划分2. 模块细分 二. Android知识点学习1. registerActivityLifecycleCallbacks方法2. 一. 项目结构 1. 项目整体划分 MVVMHabit是以谷歌DataBindingLiveDataViewModel框架为基础&#xff0c;整合OkhttpRxJavaRetrofitGlide等流行…

【大模型】7 天 AI 大模型学习

7 天 AI 大模型学习 Day 3 今天&#xff0c;我们要一起学习大模型微调了 &#xff5e; 包括&#xff1a;大模型微调领域概览、Lora微调 等 &#xff5e; 文章目录 7 天 AI 大模型学习 Day 3大模型微调概览大模型项目 pipeline提示词工程 Prompt EngineeringIn-context Learning…

密码学精简版

密码学是数学上的一个分支&#xff0c;同时也是计算机安全方向上很重要的基础原理&#xff0c;设置密码的目的是保证信息的机密性、完整性和不可抵赖性&#xff0c;安全方向上另外的功能——可用性则无法保证&#xff0c;可用性有两种方案保证&#xff0c;冗余和备份&#xff0…

DeepSeek-V3 正式发布,已在网页端和 API 全面上线,性能领先,速度飞跃。

DeepSeek-V3 在推理速度上相较历史模型有了大幅提升。在目前大模型主流榜单中&#xff0c;DeepSeek-V3 在开源模型中位列榜首&#xff0c;与世界上最先进的闭源模型不分伯仲。 简介 DeepSeek-V3是一个强大的混合专家 (MoE) 语言模型&#xff0c;总共有 671B 个参数&#xff0c;…

图像超分辨新SOTA!南洋理工提出InvSR,利用大型预训练扩散模型图像先验来提高 SR 性能, 登上Huggingface热门项目。

南洋理工大学的研究者们提出了一种基于扩散反演的新型图像超分辨率 (SR) 技术&#xff0c;可以利用大型预训练扩散模型中蕴含的丰富图像先验来提高 SR 性能。 该方法的核心是一个深度噪声预测器&#xff0c;用于估计前向扩散过程的最佳噪声图。一旦训练完成&#xff0c;这个噪…

MySQL低版本没有函数row_number() over的解决方案

最近在维护老项目时&#xff0c;需要对历史数据做分析取出分区数据中的第一条&#xff0c;无奈因为MySQL版本过低&#xff0c;无法使用函数row_number() over&#xff0c;苍了个天~ 不过这点小事怎么可能难倒我们这群考古专家呢&#xff0c;在此分享一下解决方案。 主要原因是问…

贵州省贵安新区地图+全域数据arcgis格式shp数据矢量路网地名+卫星影像底图下载后内容测评

贵州省贵安新区地图全域数据arcgis格式shp数据矢量路网地名卫星影像底图 贵安新区地图是一款基于ArcGIS格式的地理信息系统数据集&#xff0c;包含2022年3月更新的详尽矢量路网、地名信息以及卫星影像底图。这款数据集是针对贵安新区这一特定区域设计的&#xff0c;对于规划、…

npm install --global windows-build-tools --save 失败

注意以下点 为啥下载windows-build-tools&#xff0c;是因为node-sass4.14.1 一直下载不成功&#xff0c;提示python2 没有安装&#xff0c;最终要安装这个&#xff0c;但是安装这个又失败&#xff0c;主要有以下几个要注意的 1、node 版本 14.21.3 不能太高 2、管理员运行 …

音视频入门基础:MPEG2-PS专题(5)——FFmpeg源码中,解析PS流中的PES流的实现

一、引言 从《音视频入门基础&#xff1a;MPEG2-PS专题&#xff08;3&#xff09;——MPEG2-PS格式简介》中可以知道&#xff0c;PS流由一个个pack&#xff08;包装&#xff09;组成。一个pack 一个pack_header 一个或多个PES_packet。pack_header中还可能存在system header…

记一次k8s下容器启动失败,容器无日志问题排查

问题 背景 本地开发时&#xff0c;某应用增加logback-spring.xml配置文件&#xff0c;加入必要的依赖&#xff1a; <dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>8…

【问题记录】npm create vue@latest报错

1&#xff0c;错误日志 npm error code EPERM npm error syscall mkdir npm error path D:\Program Files\nodejs\node_cache\_cacache npm error errno EPERM npm error FetchError: Invalid response body while trying to fetch https://registry.npmjs.org/create-vue: EP…

JavaWeb开发(六)XML介绍

1. XML介绍 1.1. 什么是XML &#xff08;1&#xff09;XML 指可扩展标记语言(EXtensible Markup Language)XML 是一种很像HTML的标记语言。   &#xff08;2&#xff09;XML 的设计宗旨是传输数据(目前主要是作为配置文件)&#xff0c;而不是显示数据。   &#xff08;3&a…

Vue3实现PDF在线预览功能

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Vue篇专栏内容:Vue3现PDF在线预览功能 前言 在开发中&#xff0c;PDF预览和交互功能是一个常见的需求。无论是管理…

win32汇编环境,在窗口程序中画简单图形

;运行效果 ;win32汇编环境&#xff0c;在窗口程序中画简单图形 ;展示点、直线、圆、椭圆、正方形、矩形、圆角矩形的画法 ;将代码复制进radasm软件里&#xff0c;直接编译可运行.重要部分加备注。 ;>>>>>>>>>>>>>>>>>>&…

[7种方法] 如何修复iPad无法连接到App Store

“现在已经 3 天了&#xff0c;我无法从 iPad 连接到 App Store。起初&#xff0c;我以为这是服务器问题&#xff0c;但已经过去 3 天了&#xff0c;问题仍然存在。请帮助我&#xff01;” 如果您的iPad 无法连接到 App Store&#xff0c;可能有多种原因。即使是日期和时间设置…

weblogic安装 12.2.1.4.0 单机

fmw_12.2.1.4.0_wls.jar和jdk-8u341-linux-x64.tar.gz&#xff0c;安装weblogic 安装JDK 8 # 1. 创建Java安装目录 mkdir -p /usr/java cd /usr/java# 2. 解压JDK tar -zxvf jdk-8u341-linux-x64.tar.gz# 3. 配置环境变量 cat >> /etc/profile << EOF export JAV…

vue elementUI Plus实现拖拽流程图,不引入插件,纯手写实现。

vue elementUI Plus实现拖拽流程图&#xff0c;不引入插件&#xff0c;纯手写实现。 1.设计思路&#xff1a;2.设计细节3.详细代码实现 1.设计思路&#xff1a; 左侧button列表是要拖拽的组件。中间是拖拽后的流程图。右侧是拖拽后的数据列表。 我们拖动左侧组件放入中间的流…