lib-kafka

quick start

低延迟:优化消息处理和减少数据传输

定义

发布订阅模式,可通过 Java Message Service 的API管理
Pasted image 20241016081409.png|300
Kafka 本质上是一个具有简单数据结构的提交日志(Replication 作为 #数据容器):
二进制编码 #通用-编码 ,有序存储,数据只追加不删除,定期删除老的Log Segment日志段。按Offset下标 读取 #性能-响应速度-下标。producer 发送,consumer 拉取,达到应对 #并发-异步 的”削峰填谷“
apache-kafka-architecture.png|500
apache-kafka-architecture[1]

主题、broker 与分区

副本
follower replica 异步拉 Leader Replica 的数据,不提供读,因为

  1. 方便 read your writes
  2. 对于消费者,不会看到一个消息一会在一会不在
  3. 不存在与 leader 实时同步风险。ISR in sync peplica是1个集合,一定含 leader。用replica.lag.time.max.ms 定义允许follower 允许落后的最长时间间隔(阈值),在阈值内的follower 加入集合。
    • leader 挂了,ISR为空,怎么选leader。1. 允许非ISR的follower 选 x unclean.leader.election.enable=false

流处理

生产者

压缩
trade off,时间换空间
Producer 压缩:确保生产者用的压缩算法,Broker支持,避免隐性的压缩转换
Consumer 解压
cpu资源充足时用压缩算法zstd,性能差但占用宽带少

消息不丢失配置
谁负责谁解决
对已提交的数据做持久化配置。

管理TCP连接

幂等事务,消息可靠性

消费者

消费者组:支持消费者实例共同消费一个主题中的所有分区,是可扩展,且容错的消费者机制
可扩展,负载:可增/减消费者实例,

位移主题

多线程消费

管理TCP连接

消费进度监控,kafka 监控指标,集成到 zabbix,也可以用 jsonsole 打开。lag,lead 差,判断消费滞后,可以监控到分区级别

Kafka

处理请求 reactor:多个客户端并发向服务器发请求。client dispatch threadpool,

水位,用消息位移表征,水位下的消息是已提交消息,以上是未提交消息,消费者只能消费已提交消息。用于实现kafka 对外消息可见性,实现副本机制。
分区的高水位是leader 的高水位。每个副本都有自己的水位。

reblance

部署

机器配置

操作系统:Linux

参数配置

when, where, how many

Broker

监控

主题

动态配置

重设消费者组位移

工具脚本

认证授权

跨集群备份

监控

调优

ref:
[1]. Apache Kafka® Architecture: A Complete Guide https://www.instaclustr.com/blog/apache-kafka-architecture/


  1. 1 ↩︎