kafka笔记-生产者-2

上节是讲了kafka的生产者的使用方法。这节是了解下kafka生产者的整体脉络和记录下一些相关参数。

KafkaProducer
拦截器ProducerIntrceptors
序列化器Serializer
分区器Partitioner
消息累加器RecordAccumulator
sender
创建Request
缓存至InFlightRequests
selector发送消息
kafkaCluster

上图便是消息发送的整体脉络,过程就是producer经过拦截器、序列化器和分区器作用后先缓存到消息累加器(RecordAccumulator)中,使得sender线程可以批量发送缓存的消息,sender发送消息时会先将缓存的消息转换成对应node节点的Request请求,转换后的request请求会先在InFlightRequests中缓存一份,表示已经发出去但尚未收到响应的请求。同时request请求会通过selector发送给kafka集群。kafka集群收到request请求并写入消息后再返回给selector响应数据。sender线程接收到响应数据后会将对应InFLightRequests中的缓存请求清理掉。

中间涉及到的消息累加器RecordAccumulator的大小、RecordAccumulator内部消息批量块ProducerBatch的大小、RecordAccumulator内部复用的ByteBuffer的大小、每个node节点对应的InFlightRequests的大小等参数均能通过对应的配置项进行修改。

InFlightRequests可以用来确认Node负载大小,InFlightRequests还未确定的请求数越多,则可认为对应Node的负载越大。可通过这种方式确定出负载最小的Node用于元数据请求更新、消费者组播协议交互等场合。

生产者参数默认值参数含义
acks1消息成功发送的认定标准。1代表只要leader副本收到即认为成功,0代表无需服务端响应,发送即认为成功,-1或all代表ISR的所有副本都收到才认为成功。0,1,-1对应吞吐性依次降低,但可靠性依次升高
max.request.size1048586B(1MB)代表生产者客户端能发送的消息的最大值
retries和retry.backoff.ms0,100代表异常时的重试次数与重试间隔
compression.typenone消息压缩方式
connection.max.idle.ms540000(ms)多久之后关闭闲置连接
linger.ms0发送ProducerBatch前等待更多消息的时间
receive.buffer.bytes32768Bsocker接收消息缓冲区的大小
send.buffer.bytes131072Bsocker发送消息缓冲区的大小
request.timeout.ms3000(ms)Producer等待请求相应的最长时间
bootstrap.servers连接kafka集群所需的broker地址清单
key.serializer消息中key对应的序列化类
value.serializer消息中value对应的序列化类
buffer.memory33664422(32MB)生产者用于缓存消息的缓冲区大小
batch.size16384(16KB)ProducerBatch可以复用内存区域大小
client.idKafkaProducer对应的客户端id
max.block.ms60000kafkaProducer中send方法或者partitionFor方法在缓冲区已满或无可用元数据时的阻塞时间
partioner.classorg.apache.kafka.clients.producer.internals.DefaultPartitioner指定分区器
ebable.idempotencefalse是否开启幂等性功能
interceptor.class设置生产者拦截器
max.in.flight.requests.per.connection5限制每个客户端与Node连接最多缓存的请求数
metadata.max.age.ms300000(5min)元数据的最大更新间隔
transactional.idnull设置事务id
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值