Kafka源码学习笔记02-生产者

内容简述:

分析Kafka生产者发送消息的主流程
暂不涉及事务型发送


名词解释:

生产者专有:

  1. KafkaProducer
    消息生产者
  2. ProducerRecord
    消息载体
  3. ProducerInterceptor
    发送消息拦截器
  4. ClusterAndWaitTime
    Cluster: Kafka集群对象, 记录集群leader信息
  5. KeySerializer && ValueSerializer
    消息Key\值的序列化器,消息会序列化为二进制数组进行发送
  6. Partitioner
    分区选择器,决定消息发送到哪个分区
  7. RecordAccumulator
    消息收集器,内部使用Deque来缓存要发送的消息
  8. Sender
    发送者线程,负责把Accumulator存储的消息推给Kafka结点

生产者与消息者共用:

  1. NetworkClient
    网络客服端,是消息生产者或消费者与kafka服务器结点进行通讯的中介
  2. InFlightRequests
    记录发记录发送中的请求列表,可用于:1) 控制同时最大发送请求,2) 拉取元数据时,可以选择发送中的消息数量最小的结点
  3. KafkaChannel
    每个kafkaChannel对应着一个kafka结点的java.nio.channels.Channel,负责与kafka进行安全认证,读写网络数据,关闭channel,记录channel状态等
  4. kafka.common.network.Selector
    kafka实现的"多路复用器",内部使用java.nio.chanel.Selector注册网络通道,注册通道连接、读写、关闭等网络io事件,并记录着kafka结点与KafkaChannel的对应关系

发送流程图

在这里插入图片描述


时序图:

  1. 投递消息到消息收集器

在这里插入图片描述
2. Sender线程从消息收集器读取消息并发送到网络
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值