博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Kafka源码分析之KafkaProducer
阅读量:7038 次
发布时间:2019-06-28

本文共 1751 字,大约阅读时间需要 5 分钟。

        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
keySerializer; // value序列化器valueSerializer private final Serializer
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的构造方法

转载地址:http://axial.baihongyu.com/

你可能感兴趣的文章
JavaScript— console (30)
查看>>
组件:Image
查看>>
node连接mongodb数据库
查看>>
React-代码复用(mixin.hoc.render props)
查看>>
iOS学习笔记24 不断进化的屏幕适配
查看>>
Chrome crx插件扩展离线安装方法 (兼容所有版本)
查看>>
工作了四五年,感觉技术上依旧长进不大
查看>>
three.js 多模型世界坐标转屏幕坐标
查看>>
JAVA springboot微服务b2b2c电子商务系统(二)服务消费者(rest+ribbon)
查看>>
java b2b2c shop 多用户商城系统源码- config 修改配置
查看>>
CentOS7.4安装wordpress
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
生成7位随机数,并写入文件
查看>>
html+js 页面跳转进度条
查看>>
mysql登录错误
查看>>
IOS ViewController
查看>>
SubShader TAG的说明
查看>>
Android入门篇一:Android Activity生命周期
查看>>
Inline 函数
查看>>