实战—kafka生产者Producer参数设置及调优

Producer参数

  • 一、request.required.acks

Kafka producer的ack有3中机制,初始化producer时的producerconfig可以通过配置request.required.acks不同的值来实现。

0:这意味着生产者producer不等待来自broker同步完成的确认继续发送下一条(批)消息。此选项提供最低的延迟但最弱的耐久性保证(当服务器发生故障时某些数据会丢失,如leader已死,但producer并不知情,发出去的信息broker就收不到)。

1:这意味着producer在leader已成功收到的数据并得到确认后发送下一条message。此选项提供了更好的耐久性为客户等待服务器确认请求成功(被写入死亡leader但尚未复制将失去了唯一的消息)。

-1:这意味着producer在follower副本确认接收到数据后才算一次发送完成。
此选项提供最好的耐久性,我们保证没有信息将丢失,只要至少一个同步副本保持存活。

三种机制,性能依次递减 (producer吞吐量降低),数据健壮性则依次递增。

  • 二、producer.type
    producer还分为同步和异步模式,由属性producer.type指定,默认是sync,即同步发送模式。

  • 三、压测测试情况:
    1、最开始的压测情况(线程池的等待队列长度为:10000,reqRequiredAcks为1,将kafka的producer.type为同步):TPS 14000左右 RT 14ms

2、线程池的等待队列长度为:10000,reqRequiredAcks为1,将kafka的producer.type设置为异步:TPS 30000左右 RT 16ms
实战—kafka生产者Producer参数设置及调优_第1张图片
3、线程池的等待队列长度为:10000,将kafka的producer.type设置为异步、reqRequiredAcks设置为0;TPS 30000左右 RT >16ms
实战—kafka生产者Producer参数设置及调优_第2张图片
4、将线程池的等待队列长度设置为:20000,将kafka的producer.type设置为异步、reqRequiredAcks设置为0;TPS 30000左右 RT 40ms
实战—kafka生产者Producer参数设置及调优_第3张图片

你可能感兴趣的:(消息中间件)