kafka 架构
https://cloud.tencent.com/developer/article/2307892 19张图
生产者架构
消息的磁盘存储文件结构
https://cloud.tencent.com/developer/article/2307892 19张图
produce消息分区策略
ack 确认策略
producer幂等性
producer事务
ISR、OSR、AR 是什么
LEO、HW、LW是什么
LSO是什么
故障恢复leader、follower
消费者消费策略
https://zhuanlan.zhihu.com/p/716426534
leader epoch
follower 同步leader消息过程 及 leo、hw的变化过程
exactly once = 幂等性+at least once
https://www.cnblogs.com/jiangzishun/p/17679666.html 幂等性
kafka事务
producer 事务 https://www.cnblogs.com/xijiu/p/16917741.html
kafka常用命令
kafka使用场景
kafka数据保存磁盘 为什么这么快
零拷贝
在分布式的情况下如何保证顺序消费
kafka消息丢失的场景 及 如何避免消息丢失
kafka为什么不支持读写分离
方便实现单调读(Monotonic Reads)
什么是单调读呢?就是对于一个消费者用户而言,在多次消费消息时,它不会看到某条消息一会儿存在一会儿不存在。
如果允许追随者副本提供读服务,那么假设当前有 2 个追随者副本 F1 和 F2,它们异步地拉取领导者副本数据。倘若 F1 拉取了 Leader 的最新消息而 F2 还未及时拉取,那么,此时如果有一个消费者先从 F1 读取消息之后又从 F2 拉取消息,它可能会看到这样的现象:第一次消费时看到的最新消息在第二次消费时不见了,这就不是单调读一致性。但是,如果所有的读请求都是由 Leader 来处理,那么 Kafka 就很容易实现单调读一致性。
消息堆积
kafka-consumer-groups
Kafka创建Topic时如何将分区放置到不同的Broker中
- 副本因子不能大于 Broker 的个数;第一个分区(编号为0)的第一个副本放置位置是随机从 brokerList 选择的;
- 其他分区的第一个副本放置位置相对于第0个分区依次往后移。也就是如果我们有5个 Broker,5个分区,假设第一个分区放在第四个 Broker 上,那么第二个分区将会放在第五个 Broker 上;第三个分区将会放在第一个 Broker 上;第四个分区将会放在第二个 Broker 上,依次类推;
- 剩余的副本相对于第一个副本放置位置其实是由 nextReplicaShift 决定的,而这个数也是随机产生的;
kafka监控工具
遍历AR,如果当前机器在ISR中就它为Leader