kafka生产者Producer参数设置及参数调优建议-商业环境实战系列

本文详细介绍了Kafka生产者Producer的工作流程,并提供了关键参数的调优建议,包括acks、buffer.memory、compression.type、retries、batch.size、linger.ms和max.in.flight.requests.per.connection。针对商业环境,推荐设置acks为-1以确保高持久性和无数据丢失,调整buffer.memory以避免阻塞,使用lz4压缩以实现高效压缩,以及合理设置batch.size、linger.ms和max.in.flight.requests.per.connection来平衡吞吐量和延时性能。
摘要由CSDN通过智能技术生成

kafka生产者Producer参数设置及参数调优建议-商业环境实战系列

 

 

1. Producer核心工作流程

  • Producer首先使用用户主线程将待发送的消息封装进一个ProducerRecord类实例中。
  • 进行序列化后,发送给Partioner,由Partioner确定目标分区后,发送到Producer程序中的一块内存缓冲区中。
  • Producer的另一个工作线程(即Sender线程),则负责实时地从该缓冲区中提取出准备好的消息封装到一个批次的内,统一发送给对应的broker中。

2. producer 主要参数设置

2.1 producer 参数acks 设置(无数据丢失)

在消息被认为是“已提交”之前,producer需要leader确认的produce请求的应答数。该参数用于控制消息的持久性,目前提供了3个取值:

acks = 0: 表示produce请求立即返回,不需要等待leader的任何确认。这种方案有最高的吞吐率,但是不保证消息是否真的发送成功。

acks = -1: 表示分区leader必须等待消息被成功写入到所有的ISR副本(同步副本)中才认为produce请求成功。这种方案提供最高的消息持久性保证,但是理论上吞吐率也是最差的。

acks = 1: 表示leader副本必须应答此produce请求并写入消息到本地日志,之后produce请求被认为成功。如果此时leader副本应答请求之后挂掉了,消息会丢失。这是个这种的方案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值