欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

kafka中文文档producer配置参数

程序员文章站 2022-03-18 12:52:58
...

         该文档对应的是 kafka安装目录/config/producer.properties文件的内容,也是适用于java客户端。由于原英文版的文档从句太多太难理解,我花了四天时间翻译了一份中文文档,希望给大家带来帮助,有问题请留言。

可能网页显示不全,请下载附件PDF。

名称

描述

类型

默认值

可用值 

重要性

bootstrap.servers

用于建立初始化到kafka服务器连接的主机/端口的列表。客记端将使用所有服务器,不论哪些服务器在这里是用来引导的。这个列表只影响用来发现所有服务器集合的初始化主机。这个列表应当是以下形式 host1:port1,host2:port2,....因为这些服务器只用来初始化连接到发现所有的集群成员(有可能动态改变),这个列表没有必要包括所有的服务器集合(你想要多于一个,尽管,以防一台服务器已经挂了)。

列表

 

 

key.serializer

实现Serializer接口的系列化类,用于键的系列化。

 

 

value.serializer

实现Serializer接口的系列化类,用于值的系列化。 

 

 

 

acks

生产者要求领导者在考虑一个请求完成之前收接收的确认的数量。这个控制被发送记录发送的持久性。随后的设置是被允许的:acks=0如果设为0那么生产者不会等待从服务器来的任何的确认。记录会马上被添加到套接字缓冲里然后发送。在这种情况下无法保证服务器收到这个记录,并且重试配置将不会生效(因为客户端不知道任何失败)。每条记录的返回的偏移量通常被设为-1 acks=1这将意味着领导者将把记录写到它本地的日志中但不会等待从所有的跟随者那得到确认就进行响应。在这种情况下有可能在确认记录之后领导者马上失败

字符

1

[all, -1, 0, 1]

 

但在跟随者复制它之前记录将会丢失。acks=all这意味着领导者将等待所有的但在同步的副本的集合来确认记录。这保证了记录不会被丢失并至少有一个正在同步的副本保持存活。这是最高的可用性保证。这与设置为acks=-1的作用是相同的。

 

 

 

 

buffer.memory

生产者可以用来缓冲等待发送到服务器的记录的总内存字节数。如果记录发送的速度比它们能够被发送到服务器的速度快那么生产者会因为max.block.ms被阻塞,在这个之后它会抛出一个异常。这个设置应大体上与生产者将要使用的总内存一致,但不是强硬的约束,因为不生产用的所有内存都用于缓冲。一些额外的内存将用作压缩(如果压缩被启用)也是用于快速的请求。

长整型

33554432

[0,...]

compression.type

生产者创建的所有数据的压缩类型。默认情况是无。可用的值为 none, gzip, snappy, lz4 。压缩是全批次的数据,因此批处理的效果也会影响压缩比(更多的批处理意味着更好的压缩)。 

字符

none

 

retries

设置为一个大于0的值会导致客户端重发任何发送失败的带有潜在的暂态错误的记录。注意如果客户端在接收到错误的时候进行重发,那么重试是没有什么区别的。在没有把max.in.flight.requests.per.connection设置为0的情况下允许重试会潜在地改变记录的顺序,因为如果两个批次没有发送到单个分区,并且第一个失败并重试但第二个成功,那么第二个批次中的记录会首先出现。

整型

0

[0,...,2147483647]

ssl.key.password

在密钥存储文件的私钥的密码。这是客户端可选的。

密文

null

 

ssl.keystore.location

密钥存储文件的位置。这是客户端的可选项,可用于客户端的双向身份认证。

字符

null

 

ssl.keystore.password

密钥库文件的密码。这个对客户端是可选的并且只在 ssl.keystore.location被配置时需要。

密文

null

 

ssl.truststore.location

受信任证书库文件的位置。

字符

null

 

ssl.truststore.password

受信任证书库文件的密码。如果没有设置密码,那么信任存储区的访问仍然可用,但完整性检查被禁用。 

密文

null

 

batch.size

当多个记录被发送到同一分区时,生产者将尝试将批处理记录合并到更少的请求中。这有助于在客户端和服务器端的性能。这个配置控制着批量的字节数量。大于这个大小的批量记录尝试将不会执行。发送给broker的请求将包含多个批次,每个分区有一个可发送数据的批次。小批量将使批处理不那么常见,并可能降低吞吐量(零的批大小将完全禁用批处理)。一个非常大的批量可以使内存使用出现更大浪费所以我们将常常在预期附加记录中分配指定批量大小的缓冲。

整型

16384

[0,...]

client.id

发送请求时传递给服务器的一个标识字符串。这样做的目的是能过追踪请求的来源除了除了IP/端口。它是通过允许一个逻辑应用名称被包括在一个服务器端的请求日志来实现的。

字符

""

 

connections.max.idle.ms

 

在这个配置的毫秒的数字之后会关闭空闲连接

长整型

540000

 

linger.ms

被生产生者组织的到达请求事务进入单独批量请求之间的任何记录。正常情况生负载过轻才会发生,也就是记录的到达比它们的发送更快的时候。然而,在某些情况下,即使在中等负载下,客户机也可能希望减少请求的数量。这个设置通过添加少量人工延迟来完成。那就是,生产者不会迅速发送一条记录而是会等待达到所给定的延时来允许其它记录被发送以便发送可以批量一起。这个可以被认为是TCPNagle的算法模拟。这个设定给出了批量延时的上限:一旦我们获得一个分区的batch.size达到这个记录,它会不管这个设置被马上发送,然而我们在55555  

摇篮有比这个wfhtit的字节 

长整型

0

[0,...]

 

上发送,然而如果我们拥有的比这个分区的多字节累加少,我们会按指定的时间徘徊等待更多的记录来显示。这个设置默认为0(无延时)。设置为5时,例如,会有减少请求发送的数量的作用但在负载情况发送会增加5毫秒的延时到记录。

 

 

 

 

max.block.ms

这个配置控制着KafkaProducer.send() KafkaProducer.partitionsFor()会阻塞多久。这个方法会因为缓冲区满了或是元数据不可用而被阻塞。在用户提供的 serializers partitioner 里的阻塞将不会被计算在这个超时里。

长整型

60000

[0,...]

max.request.size

请求的最大字节数。此设置将限制记录批次的数量,生产者将发送单个请求来避免发送巨大请求。这也是有效的最大记录批量帽。注意,服务器有自己的记录批次大小的帽子,它和这个是不同的。

整型

1048576

[0,...]

partitioner.class

实现Partitioner接口的分区类 

org.apache.kafka.clients.producer.internals.DefaultPartitioner

 

receive.buffer.bytes

接收数据时TCP接收的缓存 (SO_RCVBUF) 的大小。如果这个值被设置为-1,操作系统的默认值会被使用。

整型

32768

[-1,...]

request.timeout.ms

这个配置控制客户端等待请求响应的最大时间。在超时时间消逝之前如果没有收到响应,客户端在有必要的情况下将重发请求或是在重试耗尽后把请求置为失败。这个应该比replica.lag.time.max.ms (a broker 配置)的值大,来减少因为不必要的生产者重试产生的消息重复的可能性。

整型

30000

[0,...]

sasl.jaas.config

JAASJava验证和授权API)配置文件使用的SASL(简单身份验证和安全层)连接的 JAAS登录上下文参数格式。JAAS配置文件格式在此被描述。这个格式的值为 ' (=)*;'

密文

null

 

sasl.kerberos.service.name

kafka运行Kerberos的主名称。

字符

null

 

sasl.mechanism

用于客户端连接的简单身份验证和安全层机置。这可能是任何机构的安全提供商提供的。默认为通用安全服务应用程序接口

字符

GSSAPI

 

security.protocol

broker之间通信的协议,可用的值有:PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL.

字符

PLAINTEXT

 

send.buffer.bytes

 

发送数据时TCP发送的缓存 (SO_SNDBUF) 的大小。如果这个值被设置为-1,操作系统的默认值会被使用。

整型

131072

[-1,...]

ssl.enabled.protocols

 

SSL连接的可用协议列表。

列表

TLSv1.2,TLSv1.1,TLSv1

 

ssl.keystore.type

密钥库文件的格式,这是客户端的可选项。

字符

JKS

 

ssl.protocol

用来创建SSLContextSSL协议。默认的设置为TLS,可以适用于大多数场合。在目前的JVM中允许的值有TLS, TLSv1.1   TLSv1.2. SSLSSLv2 SSLv3在老的JVM中支持,但它们由于已知的安全漏洞而不鼓励被使用。

字符

TLS

 

ssl.provider

 

用于SSL连接的安全提供商的名称。默认值为JVM的默认安全提供商。

字符

null

 

ssl.truststore.type

受信任库文件的文件格式。

字符

JKS

 

enable.idempotence

当设置为“true”,生产者将确保准确的每个消息的一个考备写入到了流。如果是“false”,生产者因为broker失败重试,例如,可能在流里写入重试消息的副本。这个设置默认值为“false”。注意启用幂等性需要把max.in.flight.requests.per.connection设置为1并重试不能为0 。还有acks并必须设置为“all”。如果这些值都是默认的,我们将重写这些默认值到一个合适的值。如果将值设置为与幂等生产商不兼容的值,将会抛出ConfigException

布尔

FALSE

 

interceptor.classes

用作拦截器的类的列表。实现 producerinterceptor接口,在它们被发布到kafka集群之前,允许你拦截(可能修改)被生产者收到的记录。默认情况下是没有拦截器的。

列表

null

 

max.in.flight.requests.per.connection

客户端将要发送到一个单独的连接未被应答的请求在阻塞之前的最大数量。注意如果这个值被设置为大于1并且有失败的发送,由于重试会有消息重排的风险。 

整型

5

[1,...]

metadata.max.age.ms

我们强制刷新一个元数据后的毫秒时间段,即使我们没有看到任何分区领导者变为主动发现任何新的broker或分区。

长整型

300000

[0,...]

metric.reporters

用作度量报告者的类列表。实现了MetricReporter接口,允许加入会被通知到新的度量创建的类。JMX统计登记通常包括 JmxReporter

列表

""

 

metrics.num.samples

样品保持计算指标的数量。

整型

2

[1,...]

metrics.recording.level

度量的最高记录级别。

字符

INFO

[INFO, DEBUG]

metrics.sample.window.ms

一个度量样本计算的时间窗口。

长整型

30000

[0,...]

reconnect.backoff.max.ms

当一个重复的失败连接重复连接到brokert等待的以毫秒计的最大时间量。如果已提供,每个主机的回退会因为连续的连接失败而指数级的增长,直到达到这个最大值。在计算回退增长后,20%的随机抖动被添加来避免连接风暴。

长整型

1000

[0,...]

reconnect.backoff.ms

尝试重新连接到一个给定的主机之前等待的最少时间。这避免了在一个密环里重复连接到一个主机。这个后退适用于客户端连接到broker所有尝试连接。

长整型

50

[0,...]

retry.backoff.ms

尝试重试请求到一个给定的主题分区之前等待的时间。这个避免在某些失败场景下的紧密循环中重复发送请求。

长整型

100

[0,...]

sasl.kerberos.kinit.cmd

Kerberos kinit 命令路径.

字符

/usr/bin/kinit

 

sasl.kerberos.min.time.before.relogin

刷新尝试之间的线程休眠时间。

长整型

60000

 

sasl.kerberos.ticket.renew.jitter

添加到更新时间的随机抖动的百分比。

双精度

0.05

 

sasl.kerberos.ticket.renew.window.factor

登录线程将休眠,直到从最后刷新到票证到期的指定的时间窗口因子到达,此时它将尝试续订该票证。

双精度

0.8

 

ssl.cipher.suites

加密套件列表。这是一个由认证,加密,MAC和用于协商使用TLSSSL网络协议的网络连接的安全设置的密钥交换算法组合成的名称。

列表

null

 

ssl.endpoint.identification.algorithm

使用服务器证书验证服务器主机名的端识别算法。

字符

null

 

ssl.keymanager.algorithm

用于SSL连接的密钥管理工厂算法。默认情况下这个值是JVM中配置的用于SSL连接的密钥管理工厂算法

字符

SunX509

 

ssl.secure.random.implementation

用于SSL加密操作的SecureRandom的伪随机数产生算法。

字符

null

 

ssl.trustmanager.algorithm

用于SSL连接的受信任管理器工厂算法。默认值是JVM中配置的用于SSL连接的受信任管理器工厂算法

字符

PKIX

 

transaction.timeout.ms

在主动退出一个正在进行的事务之前,事务协调器等待一个事务来自生产者的状态更新需要等待的最大时间。以毫秒计算。如果这个值大于在broker中设置的max.transaction.timeout.ms,这个请求会失败并带有一个`InvalidTransactionTimeout` 错误。

整型

60000

 

transactional.id

用于事务的传递。这允许跨多个生产者会话的可靠性语义,因为它允许客户机在开始任何新事务之前保证使用相同事务ID的事务已经完成。如果没有提供事务ID,则生产者仅限于幂等传递。需要注意的是如果一个事务ID被配置,enable.idempotence必须被启用。这意味着事务不可用。

字符

null

non-empty string