Kafka在工作中的体现

Kafka的命令行基本用法

创建topic:

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 2 --topic test

查看topic:

bin/kafka-topics.sh --list --zookeeper localhost:2181

测试topic:

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

查看接收到的数据:

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning

Kafka的重要参数介绍

apache kafka配置中request.required.acks含义

0:这意味着生产者producer不等待来自broker同步完成的确认继续发送下一条(批)消息。此选项提供最低的延迟但最弱的耐久性保证(当服务器发生故障时某些数据会丢失,如leader已死,但producer并不知情,发出去的信息broker就收不到)。

1:这意味着producer在leader已成功收到的数据并得到确认后发送下一条message。此选项提供了更好的耐久性为客户等待服务器确认请求成功(被写入死亡leader但尚未复制将失去了唯一的消息)。

-1:这意味着producer在follower副本确认接收到数据后才算一次发送完成。 

此选项提供最好的耐久性,我们保证没有信息将丢失,只要至少一个同步副本保持存活。

在 **Kafka** 中,虽然不使用传统数据库意义上的“Transaction Log”这一术语,但其核心数据结构本质上就是一种**持久化的事务性日志**——即 **Commit Log(提交日志)**。Kafka 的设计正是基于分布式提交日志的概念。 ### Kafka 中的日志(Log)存放位置 Kafka 将所有主题(Topic)的分区(Partition)数据以**追加写入(append-only)的方式**存储在磁盘上的日志文件中,这些日志文件统称为 **Log Segments**,它们保存的是消息流本身,也起到了类似“事务日志”的作用(记录每一次消息的写入操作)。 #### 1. 日志文件的物理存储路径 Kafka 的日志数据默认存放在由 `log.dirs` 配置项指定的目录中。 - **配置参数(server.properties)**: ```properties log.dirs=/var/lib/kafka/data ``` > 注意:`log.dirs` 可以是多个路径(用逗号分隔),用于负载均衡和提高 I/O 性能。 - **实际存储结构示例**: ``` /var/lib/kafka/data/ └── topic1-0/ ├── 00000000000000000000.log ├── 00000000000000000000.index ├── 00000000000000000000.timeindex └── leader-epoch-checkpoint ``` - `topic1-0`:表示主题 `topic1` 的第 0 个分区。 - `.log` 文件:实际的消息内容。 - `.index` 和 `.timeindex`:偏移量索引和时间戳索引,用于快速查找。 #### 2. Kafka 如何支持事务? 从 Kafka 0.11 版本开始引入了**幂等生产者(Idempotent Producer)**和**事务性消息(Transactional Messaging)**功能: - 生产者可以跨多个分区原子性地发送消息。 - 事务状态由一个特殊的内部主题 `__transaction_state` 来维护。 - 这个主题也存储在 `log.dirs` 指定的目录下: ``` /var/lib/kafka/data/__transaction_state-0/ ``` 它记录了每个事务的状态(如 `Ongoing`, `Committed`, `Aborted`),相当于真正的“事务日志”。 #### 3. 查看 Kafka 日志位置的方法 - 检查 `config/server.properties` 文件中的: ```properties log.dirs=/tmp/kafka-logs # 默认可能为 /tmp/kafka-logs ``` - 使用命令查看正在运行的 Kafka 实例配置: ```bash ps aux | grep kafka cat config/server.properties | grep log.dirs ``` --- ✅ 总结: 在 Kafka 中,“事务日志”的概念体现为: - 普通消息日志:存储在 `log.dirs` 下的 `.log` 分段文件中; - 事务元数据日志:由内部主题 `__transaction_state` 记录,同样存于相同的日志目录中。 因此,Kafka 的日志存放位置是由 `log.dirs` 配置决定的,默认路径通常是 `/tmp/kafka-logs` 或自定义的数据目录。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柒嘴八舌

你的鼓励将是我创造最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值