Kafka源码分析之KafkaProducer

        KafkaProducer是一个Kafka客户端实现,可以发布记录records至Kafka集群。KafkaProducer是线程安全的,多线程之间共享单独一个producer实例通常会比多个producer实例要快。KafkaProducer包含一组缓存池空间,存储尚未传输到集群的记录records,同时,一个后台的I/O线程负责将这些记录转换成请求,并发送至集群。使用之后关闭producer失败将会导致这些资源泄露。

        我们看下KafkaProducer都有哪些成员变量,如下:

    // 客户端ID:clientId
    private String clientId;
    
    // 分区器Partitioner实例partitioner
    private final Partitioner partitioner;
    
    // 最大请求大小maxRequestSize
    private final int maxRequestSize;
    
    // 内存总计大小totalMemorySize
    private final long totalMemorySize;
    
    // 集群元数据Metadata实例metadata
    private final Metadata metadata;
    
    // 记录收集器RecordAccumulator实例accumulator
    private final RecordAccumulator accumulator;
    
    // 后台发送线程Sender实例sender
    private final Sender sender;
    
    // 指标度量
    private final Metrics metrics;
    
    // io线程ioThread
    private final Thread ioThread;
    
    // 压缩类型CompressionType实例compressionType
    private final CompressionType compressionType;
    
    private final Sensor errors;
    
    // 时间器
    private final Time time;
    
    // key序列化器keySerializer
    private final Serializer<K> keySerializer;
    
    // value序列化器valueSerializer
    private final Serializer<V> valueSerializer;
    
    // Producer配置信息ProducerConfig实例producerConfig
    private final ProducerConfig producerConfig;
    
    // 最大阻塞时间maxBlockTimeMs
    private final long maxBlockTimeMs;
    
    // 请求超时时间requestTimeoutMs
    private final int requestTimeoutMs;
        其中,比较重要的几个是:

        1、分区器Partitioner实例partitioner:由它负责计算分区,确定主题内的实际存储位置;

        2、集群元数据Metadata实例metadata:存储了整个集群的元数据信息,包括节点列表、主题列表、主题与分区列表映射等信息;

        3、记录收集器RecordAccumulator实例accumulator:通过KafkaProducer发送的消息不会立即被发送到集群,而是先缓存在客户端内存缓冲池中,等待后台I/O线程处理;

        4、后台发送线程Sender实例sender:一个后台工作的I/O线程,由它负责将客户端内存缓冲池中的数据发送到集群;


        KafkaProducer的构造方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值