【Kafka】Kafka参数

Producer 参数

1、buffer.memory:
用来设置生产者内存缓冲区的大小,生产者用它缓冲要发送到服务器的消息。如果应用程序发送消息的速度超过发送到服务器的速度,会导致生产者空间不足。这个时候,send ()方法调用要么被阻塞,要么抛出异常,取决于如何设置block.on.buffer 参数

2、compression.type:
默认情况下,消息发送时不会被压缩。该参数可以设置为snappy 、gzip 或lz4 ,它指定了消息被发到broker 之前使用哪一种压缩算法进行压缩。ssnappy压缩算法由Google发明,它占用较少的CPU ,却能提供较好的性能和相当可观的 压缩比,如果比较关注性能和网络带宽,可以使用这种算法。gzip压缩算法一般会占用较多的CPU ,但会提供更高的压缩比,所以如果网络带宽比较有限,可以使用这种算法。使用压缩可以降低网络传输开销和存储开销,而这往往是向Kafka 发送消息的瓶颈所在

3、retries:
生产者从服务器收到的错误有可能是临时性的错误,在这种情况下, retries 参数的值决定了生产者可以重发消息次数,如果达到这个次数,生产者会放弃重试并返回错误

4、batch.size:
当有多个消息需要被发送到同一个分区时,生产者会把它们放在同一个批次里,该参数指定了一个批次可以使用的内存大小,按照字节数计算。

5、linger.ms:
该参数指定了生产者在发送批次之前等待更多消息加入批次的时间。

6、client.id:
该参数可以是任意的字符串,服务器会用它来识别消息的来源,还可以用在日志和配额指标里

7、max.in.flight.requests.per.connection:
该参数指定了生产者在收到服务器晌应之前可以发送多少个消息

8、timeout.ms 、request.timeout.ms 和metadata.fetch.timeout.ms:
request.timeout.ms 指定了生产者在发送数据时等待服务器返回响应的时间,metadata.fetch.timeout.ms指定了生产者在获取元数据(比如目标分区的首领是谁)时等待服务器返回响应的时间。如果等待响应超时,那么生产者要么重试发送数据,要么返回一个错误(抛出异常或执行回调)。timeout.ms指定了broker 等待同步副本返回消息确认的时间,与asks 的配置相匹配一一如果在指定时间内没有收到同步副本的确认,那么broker 就会返回一个错误

9、max.block.ms:
该参数指定了在调用send () 方法或使用partitionsFor()方法获取元数据时生产者的阻塞时间

10、max.request.size:该参数用于控制生产者发送的请求大小,可以指能发送的单个消息的最大值,也可以指单个请求里面所有消息总的大小

11、receive.buffer.bytes 和send.buffer.bytes: 这两个参数分别指定了TCP socket 接收和发送数据包的缓冲区大小,如果它们被设为-1,就使用操作系统的默认值

Consumer 参数

1、fetch.min.bytes:
该属性指定了消费者从服务器获取记录的最小字节数

2、fetch.max.wait.ms:
我们通过 fetch.min.byte告诉Kafka ,等到有足够的数据时才把它返回给消费者。
而 fetch.max.wait.ms则用于指定broker 的等待时间

3、max.partition.fetch.bytes:
默认值是1MB,该属性指定了服务器从每个分区里返回给消费者的最大字节数.

4、session.timeout.ms: 默认3s,该属性指定了消费者在被认为死亡之前可以与服务器断开连接的时

5、auto.offset.reset:
该属性指定了消费者在读取一个没有偏移量的分区或者偏移量无效的情况下(因消费者长时间失效,包含偏移量的记录已经过时井被删除)该作何处

6、enable.auto.commit:
该属性指定了消费者是否自动提交偏移量,默认值是true。

7、partition.assignment.strategy:
分区分配给消费者群组的分配策略,有如下两种策略:

  • Range:该策略会把主题的若干个连续的分区分配给消费者
  • RoundRobin:该策略把主题的所有分区逐个分配给消费

8、client.id:
该属性可以是任意字符串, broker 用它来标识从客户端发送过来的消息,通常被用在日志、度量指标和配额里。

9、max.poll.records:
该属性用于控制单次调用call () 方法能够返回的记录数量,可以帮你控制在轮询里需要处理的数据量。

10、receive.buffer.bytes 和 send.buffer.bytes:
socket 在读写数据时用到的TCP 缓冲区也可以设置大小。如果它们被设为-1,就使用操作系统的默认值。如果生产者或消费者与broker处于不同的数据中心内,可以适当增大这些值,因为跨数据中心的网络一般都有比较高的延迟和比较低的带宽。

发布了82 篇原创文章 · 获赞 328 · 访问量 22万+

猜你喜欢

转载自blog.csdn.net/qq_43733123/article/details/104977576