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

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

kafka 生产者架构

深入理解 Kafka 读书笔记 4 -- 生产者架构_第1张图片

  • 消息在由 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 服务器中

你可能感兴趣的:(消息队列,MQ)