附录 D. 制作者配置参数


key.serializer

type: class
Importance: high

实现 org.apache.kafka.common.serialization.Serializer 接口的密钥序列化器类。

value.serializer

type: class
Importance: high

serializer 类中用于实现 org.apache.kafka.common.serialization.Serializer 接口的值。

acks

type: string
Default: 1
Valid Values: [all, -1, 0, 1]
Importance: high

在考虑一个请求完成之前,制作者需要已收到领导者的确认数量。这控制发送的记录的持久性。允许以下设置:

  • acks=0 如果设为零,则制作者将根本不等待来自服务器的任何确认。记录将立即添加到套接字缓冲区并视为发送。无法保证服务器在这种情况下收到记录,retries 配置不会生效(因为客户端通常不知道任何故障)。每个记录返回的偏移将始终设置为 -1
  • acks=1 这意味着领导将记录写入其本地日志,但不会等待所有跟随者完全确认。在这种情况下,如果领导机在确认记录后立即失败,但在后续者复制了该记录之前,该记录将会丢失。
  • acks=all 这意味着领导将等待完整的一组内同步副本确认记录。这保证不会丢失记录,只要至少有一个同步副本处于活动状态。这是可用最强的保证。这等同于 acks=-1 设置。
bootstrap.servers

type: list
Default: ""
Valid Values: non-null string
Importance: high

用于建立与 Kafka 集群的初始连接的主机/端口对列表。客户端将使用与此处为 bootstrapping 指定的服务器一样的所有服务器,此列表只会影响用于发现整套服务器的初始主机。这个列表应该采用 host1:port1,host2:port2,…​ 格式。由于这些服务器仅用于初始连接来发现完整的集群成员身份(可能会动态更改),因此该列表不需要包含完整的服务器集合(尽管,如果服务器停机,您可能希望多台服务器)。

buffer.memory

type: long
Default: 33554432
Valid Values: [0,…​]
Importance: high

制作者可使用的内存总数来缓冲等待发送到服务器的记录。如果记录的发送速度快于可以传送到 max.block.ms 的服务器,那么它会抛出异常。

此设置应当大致与制作者要使用的总内存对应,但不是硬绑定,因为制作者使用的所有内存都不是缓冲区使用的内存。些额外的内存将用于压缩(如果启用了压缩),以及用于维护机内请求。

compression.type

type: string
Default: none
Importance: high

制作者生成的所有数据的压缩类型。默认值为 none(即没有压缩)。有效值为 nonegzipsnappy lz4zstd。压缩是全部批量数据,因此批处理的效率也会影响压缩率(更多批处理意味着更好的压缩)。

retries

type: int
Default: 2147483647
Valid Values: [0,…​,21473647]
Importance: high

设置大于零的值将导致客户端重新发送任何带有潜在瞬时错误的记录。请注意,这个重试与客户端在收到错误时重新识别记录没有不同。允许重试时不将 max.in.flight.requests.per.connection 设置为 1 可能会改变记录的顺序,因为如果两个批处理被发送到单个分区,并且第一个批处理失败并重试,但第二个批处理会成功,则可能会首先显示第二个批处理中的记录。另外,如果 delivery.timeout.ms 配置的超时在成功确认前过期,则生成请求将在重试次数停止前失败。用户通常应保留此配置未设置,并使用 delivery.timeout.ms 来控制重试行为。

ssl.key.password

type: password
Default: null
Importance: high

密钥存储文件中私钥的密码,或者在 'ssl.keystore.key 中指定的 PEM 密钥的密码。客户端只有在配置了双向身份验证时才需要此参数。

ssl.keystore.certificate.chain

type: password
Default: null
Importance: high

以 'ssl.keystore.type" 指定的格式的证书链。默认 SSL 引擎工厂仅支持 PEM 格式及 X.509 证书列表。

ssl.keystore.key

type: password
Default: null
Importance: high

以 'ssl.keystore.type" 指定的格式的私钥。默认 SSL 引擎工厂仅支持使用 PKCS#8 密钥的 PEM 格式。如果密钥加密,则必须使用 'ssl.key.password' 指定密钥密码。

ssl.keystore.location

type: string
Default: null
Importance: high

密钥存储文件的位置。这对于客户端而言是可选的,可用于进行客户端的双向身份验证。

ssl.keystore.password

type: password
Default: null
Importance: high

存储密钥存储文件的密码。这对客户端是可选的,并且仅在配置了 'ssl.keystore.location' 时才需要。PEM 格式不支持密钥存储密码。

ssl.truststore.certificates

type: password
Default: null
Importance: high

以 'ssl.truststore.type" 指定的格式的可信证书。默认 SSL 引擎工厂仅支持具有 X.509 证书的 PEM 格式。

ssl.truststore.location

type: string
Default: null
Importance: high

信任存储文件的位置。

ssl.truststore.password

type: password
Default: null
Importance: high

信任存储文件的密码。如果未设置密码,仍然将使用配置的信任存储文件,但完整性检查将被禁用。PEM 格式不支持信任存储密码。

batch.size

type: int
Default: 16384
Valid Values: [0,…​]
Importance: medium

每当多个记录发送到同一分区时,生产者将尝试将多条记录组合成更少的请求。这有助于客户端和服务器的性能。此配置控制默认的批处理大小,以字节为单位。

不会尝试批量记录超过这个大小。

发送到代理的请求将包含多个批处理,每个分区都有可用的数据。

小批处理大小将降低批处理的常见程度,并可降低吞吐量(批处理数为零将完全禁用批处理)。非常大的批处理大小可能会更浪费一些,因为我们总是分配指定批处理大小的缓冲区,以预计其他记录。

client.dns.lookup

type: string
Default: use_all_dns_ips
Valid Values: [default, use_all_dns_ips, resolve_canonical_bootstrap_servers_only]
Importance: media

控制客户端如何使用 DNS 查找。如果设置为 use_all_dns_ips,按顺序连接到每个返回的 IP 地址,直到建立成功连接为止。断开连接后使用下一个 IP。所有 IP 都使用一次后,客户端会再次从主机名解析 IP(JVM 和 OS 缓存 DNS 名称查找)。如果设置为 resolve_canonical_bootstrap_servers_only,请将每个 bootstrap 地址解析为规范名称列表。bootstrap 阶段后,其行为与 use_all_dns_ips 相同。如果设置为 default (已弃用),请尝试连接到查询返回的第一个 IP 地址,即使查找返回多个 IP 地址。

client.id

type: string
Default: ""
Importance: medium

在发出请求时要传递给服务器的 id 字符串。这样做的目的是通过允许逻辑应用程序名称包含在服务器端请求日志记录中,跟踪请求源,而不仅仅是 ip/port。

connections.max.idle.ms

type: long
Default: 540000(9 分钟)
Importance: medium

在此配置指定的毫秒数后关闭空闲连接。

delivery.timeout.ms

type: int
Default: 120000(2 分钟)
Valid Values: [0,…​]
Importance: medium

在调用 send() 后报告成功或失败的时间上限。这限制了在发送记录前延迟记录的总时间、从代理等待确认的时间(如果预期)以及可重试发送失败的时间。如果遇到无法恢复的错误、重试已用尽,或者将记录添加到达到更早交付到期期限的批处理中,则生产者可能会报告在此配置早于此配置发送记录失败。此配置的值应大于或等于 request.timeout.mslinger.ms 的总和。

linger.ms

type: long
Default: 0
Valid Values: [0,…​]
Importance: medium

制作者将所有在请求传输之间到达的记录分组到一个批处理请求中。通常,这只在记录到达速度快于发出时才会发生。但在某些情况下,客户端可能希望减少请求数量,即使是中等负载。此设置通过添加少量人为延迟来实现此目的,即,不会立即发送一条制作者将等待至给定延迟的记录,以允许发送其他记录,从而将发送邮件组合在一起。这可被视为类似于 TCP 中的 Nagle 算法。这个设置给出了批处理延迟的上限:一旦我们获得一个分区的 batch.size 值得记录,无论此设置是什么,都会立即发送,但是,如果我们比这个分区累积的这个字节小,我们将在指定时间等待更多记录出现时"闲置"时间。此设置默认为 0(即无延迟)。例如,设置 linger.ms=5 将导致减少发送的请求数量,但会在没有负载的情况下为发送的记录添加 5毫秒的延迟。

max.block.ms

type: long
Default: 60000(1 minute)
Valid Values: [0,…​]
Importance: medium

配置控制 KafkaProducer’s `send()partitionsFor()initTransactions()sendOffsetsToTransaction()commitTransaction()abortTransaction() 方法将阻止的时长。对于 send(),这个超时会绑定等待元数据获取和缓冲区分配的总时间(用户提供的序列程序或者分区器中的阻塞不会根据这个超时计算)。对于 partitionsFor(),这个超时会绑定等待元数据的时间(如果不可用)。与交易相关的方法始终会阻止,但如果交易协调员无法发现或没有在超时内做出响应,则可能会超时。

max.request.size

type: int
Default: 1048576
Valid Values: [0,…​]
Importance: medium

请求的最大大小,以字节为单位。此设置将限制生产者在单个请求中发送的记录批处理数量,以避免发送大型请求。这实际上也是最大未压缩记录批处理大小的上限。请注意,服务器在记录批处理大小上具有自己的上限(如果启用压缩,则在压缩后),这可能与此不同。

partitioner.class

type: class
Default: org.apache.kafka.clients.producer.internals.DefaultPartitioner
Importance: media

实现 org.apache.kafka.clients.producer.Partitioner 接口的分区器类。

receive.buffer.bytes

type: int
Default: 32768(32 kibibytes)
Valid Values: [-1,…​]
Importance: medium

读取数据时使用的 TCP 接收缓冲区(SO_RCVBUF)的大小。如果值为 -1,将使用 OS 默认值。

request.timeout.ms

type: int
Default: 30000(30 秒)
Valid Values: [0,…​]
Importance: medium

配置控制客户端等待请求响应的最大时间。如果在超时前未收到响应,客户端将在必要时重新发送请求,或者在重试结束时失败请求。这应该大于 replica.lag.time.max.ms (代理配置),以减少因为不必要的制作者重试而出现消息重复的可能性。

sasl.client.callback.handler.class

type: class
Default: null
Importance: medium

实施 AuthenticateCallbackHandler 接口的 SASL 客户端回调处理程序类的完全限定名称。

sasl.jaas.config

type: password
Default: null
Importance: medium

用于 SASL 连接的 JAAS 登录上下文参数,采用 JAAS 配置文件使用的格式。JAAS 配置文件格式 如下所述。该值的格式为: loginModuleClass controlFlag (optionName=optionValue)*;。对于代理,配置必须加上监听器前缀和 SASL 机制名称(小写)。例如,listener.name.sasl_ssl.scram-sha-256.sasl.jaas.config=com.example.ScramLoginModule 需要;。

sasl.kerberos.service.name

type: string
Default: null
Importance: medium

Kafka 运行的 Kerberos 主体名称。这可以在 Kafka 的 JAAS 配置或 Kafka 的 config 中定义。

sasl.login.callback.handler.class

type: class
Default: null
Importance: medium

实施 AuthenticateCallbackHandler 接口的 SASL 登录回调处理程序类的完全限定名称。对于代理,登录回调处理程序配置必须以小写的监听器前缀和 SASL 机制名称作为前缀。例如,listener.name.sasl_ssl.scram-sha-256.sasl.login.callback.handler.class=com.example.CustomScramLoginCallbackHandler。

sasl.login.class

type: class
Default: null
Importance: medium

实施登录接口的类的完全限定名称。对于代理,登录配置必须加上监听器前缀和 SASL 机制名称(小写)。For example, listener.name.sasl_ssl.scram-sha-256.sasl.login.class=com.example.CustomScramLogin.

sasl.mechanism

type: string
Default: GSSAPI
Importance: medium

用于客户端连接的 SASL 机制.这可能是提供安全提供程序的任何机制。GSSAPI 是默认机制。

security.protocol

type: string
Default: PLAINTEXT
Importance: medium

用于与代理通信的协议.有效值为:PLAINTEXT、SSL、SASL_PLAINTEXT、SASL_SSL.

send.buffer.bytes

type: int
Default: 131072(128 Kbibytes)
Valid Values: [-1,…​]
Importance: media

发送数据时使用的 TCP 发送缓冲区(SO_SNDBUF)的大小。如果值为 -1,将使用 OS 默认值。

socket.connection.setup.timeout.max.ms

type: long
Default: 30000(30 秒)
Importance: medium

客户端在套接字连接建立前等待的最大时间。连接设置超时将为每个连续连接失败的指数级增长,最高为此最大值。为避免连接风暴,超时将应用 0.2 的随机因数,因此在计算值之上的 20% 到 20% 之间的随机范围。

socket.connection.setup.timeout.ms

type: long
Default: 10000(10 秒)
Importance: medium

客户端等待套接字连接建立的时间。如果连接没有在超时前构建,客户端会关闭套接字频道。

ssl.enabled.protocols

type: list
Default: TLSv1.2,TLSv1.3
Importance: medium

为 SSL 连接启用的协议列表。使用 Java 11 或更新版本运行时,默认为 'TLSv1.2,TLSv1.3',否则为 'TLSv1.2'。使用 Java 11 的默认值时,如果支持 TLSv1.3,否则客户端和服务器都支持 TLSv1.3,否则客户端和服务器都将首选 TLSv1.2(假设至少支持 TLSv1.2)。对于大多数情况,此默认值应当适用。另请参阅 ssl.protocol 的配置文档。

ssl.keystore.type

type: string
Default: JKS
Importance: medium

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

ssl.protocol

type: string
Default: TLSv1.3
Importance: medium

用于生成 SSLContext 的 SSL 协议。使用 Java 11 或更新版本运行时,默认为 'TLSv1.3',否则为 'TLSv1.2'。这个值应该适用于大多数用例。最近 JVM 中的允许值是 'TLSv1.2' 和 'TLSv1.3'。'TLS'、'TLSv1.1'、'SSL'、'SSLv2' 和 'SSLv3' 可能会在旧的 JVM 中受到支持,但会因为已知的安全漏洞而鼓励使用它们。使用这个配置的默认值和 'ssl.enabled.protocols',如果服务器不支持 'TLSv1.3',客户端将降级为 'TLSv1.2'。如果此配置被设置为 'TLSv1.2',客户端将不会使用 'TLSv1.3',即使它是 ssl.enabled.protocols 中的值之一,服务器只支持 'TLSv1.3'。

ssl.provider

type: string
Default: null
Importance: medium

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

ssl.truststore.type

type: string
Default: JKS
Importance: medium

信任存储文件的文件格式。

enable.idempotence

type: boolean
Default: false
Importance: low

当设置为 'true' 时,制作者将确保流中正好写入每个消息的一个副本。如果 'false',生产者因代理失败而重试等,可能会在流中写入重试的消息重复。请注意,启用幂等性需要 max.in.flight.requests.per.connection 小于或等于 5,retries 必须大于 0,acks 必须是 'all'。如果用户未明确设置这些值,则会选择合适的值。如果设置了不兼容的值,则将抛出 ConfigException

interceptor.classes

type: list
Default: ""
Valid Values: non-null string
Importance: low

用作拦截器的类的列表。通过实施 org.apache.kafka.clients.producer.ProducerInterceptor 接口,您可以截获(并可能修改)生产者在将记录发布到 Kafka 集群前收到的记录。默认情况下,没有拦截器。

max.in.flight.requests.per.connection

type: int
Default: 5
Valid Values: [1,…​]
Importance: low

客户端在阻止之前在单个连接上发送的最大未确认请求数。请注意,如果将此设置设置为大于 1,并且发送失败,则可能会因为重试而重新排序消息(即,如果已启用重试)。

metadata.max.age.ms

type: long
Default: 300000(5 分钟)
Valid Values: [0,…​]
Importance: low

在经过这一时间之后,我们强制刷新元数据,即使我们尚未看到任何分区领导变化来主动发现任何新的代理或分区。

metadata.max.idle.ms

type: long
Default: 300000(5 分钟)
Valid Values: [5000,…​]
Importance: low

控制制作者为空闲的主题缓存元数据的时长。如果上次生成某个主题的时间超过元数据空闲时间,则忽略该主题的元数据,下一次访问它将强制元数据获取请求。

metric.reporters

type: list
Default: ""
Valid Values: non-null string
Importance: low

用作指标报告器的类的列表。实施 org.apache.kafka.common.metrics.MetricsReporter 接口允许在类中插入,这些类将通知新指标创建。JmxReporter 始终包含在内,用于注册 JMX 统计数据。

metrics.num.samples

type: int
Default: 2
Valid Values: [1,…​]
Importance: low

维护到计算指标的示例数量。

metrics.recording.level

type: string
Default: INFO
Valid Values: [INFO, DEBUG, TRACE]
Importance: low

指标的最高记录级别。

metrics.sample.window.ms

type: long
Default: 30000(30 秒)
Valid Values: [0,…​]
Importance: low

指标样本计算完的时间窗口。

reconnect.backoff.max.ms

type: long
Default: 1000(1 second)
Valid Values: [0,…​]
Importance: low

重新连接到一个代理时需要等待的时间上限(以毫秒为单位),且该代理重复无法连接。如果提供,每个主机的 backoff 都会为每个连续连接失败呈指数级增长,最高可达此最大值。计算 backoff 后,添加 20% 的随机 jitter,以避免连接风暴。

reconnect.backoff.ms

type: long
Default: 50
Valid Values: [0,…​]
Importance: low

尝试重新连接到给定主机前等待的基本时间。这可避免在紧凑循环中重复连接主机。这个后端适用于客户端对代理的所有连接尝试。

retry.backoff.ms

type: long
Default: 100
Valid Values: [0,…​]
Importance: low

尝试将失败的请求重试到给定主题分区前等待的时间。这可避免在某些故障情况下在紧凑循环中重复发送请求。

sasl.kerberos.kinit.cmd

type: string
Default: /usr/bin/kinit
Importance: low

Kerberos kinit 命令路径.

sasl.kerberos.min.time.before.relogin

type: long
Default: 60000
Importance: low

刷新尝试之间的登录线程睡眠时间.

sasl.kerberos.ticket.renew.jitter

type: double
Default: 0.05
Importance: low

添加到续订时间的随机 jitter 百分比.

sasl.kerberos.ticket.renew.window.factor

type: double
Default: 0.8
Importance: low

登录线程将休眠,直到达到上次刷新到票据过期时间的指定窗口因素,此时将尝试续订票据。

sasl.login.refresh.buffer.seconds

type: short
Default: 300
Valid Values: [0,…​,3600]
Importance: low

刷新凭证时凭据过期前的缓冲时间(以秒为单位)。否则,如果刷新的时间比缓冲区秒数接近到期,则将移动刷新以尽可能保留缓冲区时间。法律值介于 0 到 3600(1 小时)之间;如果没有指定值,则使用默认值 300(5 分钟)。如果总和超过凭证剩余生命周期,则这个值和 sasl.login.refresh.min.period.seconds 都会被忽略。目前仅适用于 OAUTHBEARER。

sasl.login.refresh.min.period.seconds

type: short
Default: 60
Valid Values: [0,…​,900]
Importance: low

登录刷新线程在刷新凭据前所需的最短时间(以秒为单位)。法律值介于 0 到 900(15 分钟)之间;如果没有指定值,则使用默认值 60(1 分钟)。如果值和 sasl.login.refresh.buffer.seconds 的剩余生命周期超过其剩余生命周期,则该值和 sasl.login.refresh.buffer.seconds 都会被忽略。目前仅适用于 OAUTHBEARER。

sasl.login.refresh.window.factor

type: double
Default: 0.8
Valid Values: [0.5,…​,1.0]
Importance: low

登录刷新线程将休眠,直到达到相对于凭证生命周期的指定窗口因子,此时将尝试刷新凭证。法律值介于 0.5(50%)和 1.0(100%)之间;如果没有指定值,则使用默认值 0.8(80%)。目前仅适用于 OAUTHBEARER。

sasl.login.refresh.window.jitter

type: double
Default: 0.05
Valid Values: [0.0,…​,0.25]
Importance: low

与凭证生命周期相关的最大随机 jitter 数量,添加到登录刷新线程的睡眠时间。法律值介于 0 到 0.25(25%)之间;如果没有指定值,则使用默认值 0.05(5%)。目前仅适用于 OAUTHBEARER。

security.providers

type: string
Default: null
Importance: low

可配置创建者列表每个返回实施安全算法的供应商。这些类应该实施 org.apache.kafka.common.security.auth.SecurityProviderCreator 接口。

ssl.cipher.suites

type: list
Default: null
Importance: low

密码套件列表。这是身份验证、加密、MAC 和密钥交换算法的命名组合,用于使用 TLS 或 SSL 网络协议协商网络连接的安全设置。默认情况下,支持所有可用的密码套件。

ssl.endpoint.identification.algorithm

type: string
Default: https
Importance: low

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

ssl.engine.factory.class

type: class
Default: null
Importance: low

kind org.apache.kafka.common.security.auth.SslEngineFactory 的类型,以提供 SSLEngine 对象。Default value is org.apache.kafka.common.security.ssl.DefaultSslEngineFactory.

ssl.keymanager.algorithm

type: string
Default: SunX509
Importance: low

密钥管理器工厂用于 SSL 连接的算法。默认值为为 Java 虚拟机配置的关键管理器工厂算法。

ssl.secure.random.implementation

type: string
Default: null
Importance: low

用于 SSL 加密操作的 SecureRandom PRNG 实施。

ssl.trustmanager.algorithm

type: string
Default: PKIX
Importance: low

信任管理器用于 SSL 连接的算法。默认值为为 Java 虚拟机配置的信任管理器工厂算法。

transaction.timeout.ms

type: int
Default: 60000(1 分钟)
Importance: low

在主动中止持续交易前,交易协调员将等待来自生产者的交易状态更新的最大时间(以毫秒为单位)。如果这个值大于代理中的 transaction.max.timeout.ms 设置,则请求将失败,并显示 InvalidTxnTimeoutException 错误。

transactional.id

type: string
Default: null
Valid Values: non-empty string
Importance: low

用于事务传输的 TransactionalId。这实现了跨越多个制作者会话的可靠性语义,因为它允许客户端确保在开始任何新交易之前,使用同一 TransactionalId 的交易已完成。如果没有提供 TransactionalId,则制作者仅限于幂等交付。如果配置了 TransactionalId,则暗示 enable.idempotence。默认情况下不配置 TransactionId,这意味着无法使用事务。请注意,默认情况下,事务需要一个至少有三个代理的集群,该代理是生产环境的建议设置;对于开发,您可以通过调整代理设置 transaction.state.log.replication.factor 来改变这种情况。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.