深入理解 Kafka 读书笔记 4 -- 生产者架构

深入理解 Kafka 读书笔记 4 – 生产者架构

kafka 生产者架构

在这里插入图片描述

  • 消息在由 KafkaProducer 发往 Kafka 服务器(Broker or Kafka Cluster)之前,需要经历可能的拦截器序列化器分区器等一系列的作用;
  • 生产者客户端由两个线程协调运行
  • 主线程
    • 由 KafkaProducer 创建消息,然后通过可能的拦截器、序列化器和分区器的作用之后缓存到消息累加器( RecordAccumulator ,也称消息收集器)
    • RecordAccumulator 主要用来缓存消息以便 Sender 线程可以批量发送,进而减少网络传输的资源消耗以提升性能
    • RecordAccumulator 缓存的大小可以通过生产者客户端参数 buffer.memory 配置,默认值为 32 * 1024 * 1024,即 32M
    • 若生产者发送消息的速度超过 Sender 线程发送到 Kafka 服务器的速度,则会导致 RecordAccumulator 空间不足,这时 KafkaProducer 的 send() 方法的调用要么阻塞要么抛出异常(取决于参数 max.block.ms 的设置 ,默认值为 60000 即 60s,不超过这个时间则阻塞,超过则抛出异常)
    • RecordAccumulator 的内部为每个分区都维护了一个双端队列,队列中的节点为 ProducerBatch
  • Sender 线程(发送线程)
    • 负责从 RecordAccumulator 获取消息并将其发送到 Kafka 服务器中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值