topic
启动目录:
topic核心

查看所有主题:bin/kafka-topics.sh -bootstrap-server 192.168.96.129:9092,192.168.96.130:9092,192.168.96.131:9092 --list
创建topic:bin/kafka-topics.sh -bootstrap-server 192.168.96.129:9092,192.168.96.130:9092,192.168.96.131:9092 --topic first --create --partitions 1 --replication-factor 3

查看topic:bin/kafka-topics.sh -bootstrap-server 192.168.96.129:9092,192.168.96.130:9092,192.168.96.131:9092 --topic first --describe

Leader:3 (3节点为leader)
修改分区数(分区数只能增加):bin/kafka-topics.sh -bootstrap-server 192.168.96.129:9092,192.168.96.130:9092,192.168.96.131:9092 --topic first --alter --partitions 3
product

生产数据:bin/kafka-console-producer.sh -bootstrap-server 192.168.96.129:9092,192.168.96.130:9092,192.168.96.131:9092 --topic first
consumer
消费数据:bin/kafka-console-consumer.sh -bootstrap-server 192.168.96.129:9092,192.168.96.130:9092,192.168.96.131:9092 --topic first
消费历史数据 bin/kafka-console-consumer.sh -bootstrap-server 192.168.96.129:9092,192.168.96.130:9092,192.168.96.131:9092 --topic first --from-beginning

FAQ:
1 分区数为啥只能增加???(减少后报错)

2 不能通过命令的方式修改副本数(其他方式可以-->json文件并执行副本修改计划)

生产者原理:

retries:重试次数默认值:int最大值
NetClient:与broker数一致
生产者异步发送:
1 普通异步:本地代码访问虚拟机 close超时,且consumer未收到信息
解决办法:
2 回调异步

3 同步发送
get()
FAQ:
1 多个分区。客户端为啥只往一个partation发送消息?

生产者_分区
分区的好处:

分区策略:
1 默认分区器:DefaultPartitioner


demo
2 自定义分区策略



生产者_提高生产者吞吐量
什么时候需要把RecordAccumulator设置64M. 当分区数比较大的时候。多个batch.size运行,导致缓冲区满。

数据可靠性:
ack 0 1 -1 分析

ISR:Leader维护了一个动态的in-sync replica set (ISR),意为和Leader保持同步的Follower+Leader集合(leader:0, isr:0,1,2)如果Follow长时间未向Leader发送通信请求或同步数据,则该Follower将被踢出ISR。该事件阈值由replica.lag.time.max.ms参数设定,默认30s

demo

可靠性总结:(-1 有重复数据风险)

官方文档:


数据重复性:

幂等性原理:(kafka幂等性只能保证在单分区、单会话【pid】内数据不重复)
精确依次(Exactly once) = 幂等性+至少一次(ack=-1 + 分区副本数>=2 + ISR最小副本数>=2)


生产者事务:(开启事务,必须开启幂等性)



生产经验-数据有序:
a 单分区内有序 (有条件)
b 多分区 无序(有序要在consumer端统一排序-spark等处理)
生产经验-数据乱序:NetworkClient 缓存队列可能乱序

本文介绍了Kafka中管理topic的基本操作,包括创建、查看和修改分区数。讨论了生产者的工作原理,如重试、异步发送以及分区策略,并强调了数据可靠性和幂等性的重要性。同时,提到了生产者事务对确保数据有序和避免乱序的影响。
2515

被折叠的 条评论
为什么被折叠?



