Kafka消息队列

目录

前置内容

队列:

先进先出

应用:

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

流程:

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.sh Kafka 控制台消费者,用于从 Kafka 主题中读取消息。 ./kafka-console-consumer.sh --topic test-topic --bootstrap-server localhost:9092 消费消息。
kafka-console-producer.sh Kafka 控制台生产者,用于向 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.sh Kafka 的性能测试工具,用于评估 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中事件的客户端应用程序
主题 事件被组织并持久存储的地方,支持多生产者和多订阅者,一般只用于发布订阅模式
- 主题特性 事件消费后不被删除,可根据配置保留一段时间
Broker Kafka服务器,负责持久化消息和传输消息
- Broker功能 一台Kafka服务器即为一个broker,集群由多个broker组成
分区 主题被分成多个分区,分布在不同broker上,支持并发读写
- 分区特性 具有相同事件键的事件被写入同一个分区,保证消费顺序与写入顺序一致

两种模式

点对点模式

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

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

发布订阅模式

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

topic主题命令行操作指令

参数 描述
--bootstrap-server node3: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 输出帮助信息

示例

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

生产者

详见如下
生产者专题博客

Broker

Broker专题

消费者

消费者专题

相关推荐
m0_748234522 小时前
系统可观测性——分布式链路追踪系统
分布式
PersistJiao3 小时前
Couchbase 的分布式查询引擎(N1QL Query Engine)
分布式·查询引擎·couchbase·n1q1
一起喝芬达20104 小时前
在Spring Boot项目中使用Zookeeper和Curator实现高效、可靠的分布式锁
spring boot·分布式·java-zookeeper
java1234_小锋9 小时前
Zookeeper是如何解决脑裂问题的?
分布式·zookeeper·云原生
安的列斯凯奇9 小时前
分布式事务介绍 Seata架构与原理+部署TC服务 示例:黑马商城
分布式·架构
2401_871213309 小时前
zookeeper+kafka
分布式·zookeeper·kafka
cmgdxrz12 小时前
性能测试05|JMeter:分布式、报告、并发数计算、性能监控
分布式·jmeter
孟秋与你12 小时前
【redisson】redisson分布式锁原理分析
java·分布式
小李不想输啦13 小时前
RabbitMQ端口操作
分布式·rabbitmq
todoitbo14 小时前
DockerCompose玩转Kafka单体与集群部署,Redpanda Console助力可视化管理
分布式·kafka·linq·redpanda·zookeeper集群·kafka集群