KAFKA 1.0 文档(五):生产者配置

来源:互联网 发布:软件测试方案模板 编辑:程序博客网 时间:2024/06/05 19:07

从0.11.0.0开始生产者配置block.on.buffer.full,metadata.fetch.timeout.ms和timeout.ms已被删除。
以下是Java生产者的配置:

name description default import bootstrap.servers 用于建立与kafka集群连接的host/port组。
数据将会在所有servers上均衡加载,不管哪些server是指定用于bootstrapping。
这个列表仅仅影响初始化的hosts(用于发现全部的servers)
这个列表格式:host1:port1,host2:port2,… 高 key.serializer 关键字的序列化类。如果没给与这项,默认情况是和消息一致 高 value.serializer 值的序列化类 高 acks 此配置是表明当一次发送消息请求被认为完成时的确认值,就是指procuder需要多少个broker返回的确认信号。此配置实际上代表了数据备份的可用性。以下设置为常用选项:
(1)acks=0: 设置为0表示producer不需要等待任何确认收到的信息。副本将立即加到socket buffer并认为已经发送。没有任何保障可以保证此种情况下server已经成功接收数据,同时重试配置不会发生作用(因为客户端不知道是否失败)回馈的offset会总是设置为-1;
(2)acks=1: 这意味着至少要等待leader已经成功将数据写入本地log,但是并没有等待所有follower是否成功写入。这种情况下,如果follower没有成功备份数据,而此时leader又挂掉,则消息会丢失。
(3)acks=all: 这意味着leader需要等待所有备份都成功写入日志,这种策略会保证只要有一个备份存活就不会丢失数据。这是最强的保证。
(4)其他的设置,例如acks=2也是可以的,这将需要给定的acks数量,但是这种策略一般很少用。 1 高 buffer.memory 生产者可用于缓冲等待发送到服务器的记录的总字节数。 如果记录的发送速度比发送到服务器的速度快,那么生产者将会阻塞max.block.ms,之后它将抛出一个异常。
这项设置将和producer能够使用的总内存相关,但并不是一个硬性的限制,因为不是producer使用的所有内存都是用于缓存。一些额外的内存会用于压缩(如果引入压缩机制),同样还有一些用于维护请求。 33554432 高 compression.type producer用于压缩数据的压缩类型。默认是无压缩。正确的选项值是none、gzip、snappy和lz4。压缩最好用于批量处理,批量处理消息越多,压缩性能越好。推荐配置一种适合的压缩算法,可以大幅度的减缓网络压力和Broker的存储压力。 string none high retries 如果设置de值大于0,客户端将重新发送之前发送失败的数据。注意,这些重试与客户端接收到发送错误时的重试没有什么不同。在不将max.in.flight.requests.per.connection设置为1的情况下允许重试将潜在的改变数据的顺序,如果这两个消息记录都是发送到同一个partition,则第一个消息失败第二个发送成功,则第二条消息会比第一条消息出现要早。 0 high 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 只要有多个记录被发送到同一个分区,生产者就会尝试将记录组合成一个batch的请求。 这有助于客户端和服务器的性能。 该配置以字节为单位控制默认的批量大小。不要尝试大于次值的批量记录。发送给broker的请求将包含多个批次。太小的批量会降低吞吐量(批量为0讲完全禁用批处理),太大的批量会浪费一些内存,因为这批量的大小是预分配的。 16384 medium client.id 当向server发出请求时,这个字符串会发送给server。 用户随意指定,但是不能重复,主要用于跟踪记录消息 “” 中 connections.max.idle.ms 空闲连接的超时关闭时间 540000 linger.ms Producer默认会把两次发送时间间隔内收集到的所有请求进行一次汇总然后再发送,以此提高吞吐量,而linger.ms则更进一步,这个参数为每次发送增加一些延迟,以此来聚合更多的Message。通常来说,这只有在记录产生速度大于发送速度的时候才能发生。一旦汇集的消息数据达到了某个partition的batch.size,他将会立即发送而不顾这项设置,然而如果我们获得消息字节数比batch.size设置要小的多,我们需要“linger”特定的时间以获取更多的消息。 这个设置默认为0,即没有延迟。设定linger.ms=5,例如,将会减少请求数目,但是同时会增加5ms的延迟。 0 中 max.block.ms 该配置控制KafkaProducer.send()和KafkaProducer.partitionsFor()将被阻塞多长时间。这些方法可能因为缓冲区已满或元数据不可用而被阻塞。用户提供的序列化程序或分区程序中的阻塞将不计入此超时。 60000 中 max.request.size 请求的最大字节数。这也是对最大记录数的有效覆盖。注意:server具有自己的记录量,或许和这个不同。此项设置将会限制producer每次批量发送请求的数目,以防发出超量的请求。 1048576 中 partitioner.class 指定计算分区的类,实现org.apache.kafka.clients.producer.Partitioner接口 中 receive.buffer.bytes TCP 接受缓存大小,当读取数据时使用 中 request.timeout.ms 生产者发送数据到broker,等待响应的时间。如果超时,则表示此次请求失败,必要时将重新发送请求。这个值应该比replica.lag.time.max.ms(broker配置)大,以减少由于不必要的生产者重试造成的消息重复的可能性。 30000 中 send.buffer.bytes TCP发送缓存大小,当发送数据时使用 131072 中 enable.idempotence 如果为true,producter保证每个消息的副本正好一次被写入流中,如果为false,producter会在broker发生错误时重试,可能在重试过程中同一消息发送了多次。默认为false。请注意,启用幂等性需要将max.in.flight.requests.per.connection设置为1,并且重试次数不能为零。另外acks必须设置为’all’。 如果这些值保留默认值,我们将覆盖默认值为合适的值。 如果这些值被设置为与幂等生产者不兼容的东西,将会抛出一个ConfigException异常。 false low max.in.flight.requests.
per.connection 在阻塞之前,客户端在单个连接上发送的未确认请求的最大数量。
请注意,如果此设置设置为大于1,并且发送失败,则由于重试(即,如果重试被启用),存在重新排序消息的风险。(i.e., if retries are enabled). 5 low interceptor.classes 用作拦截器的类的列表。 通过实现ProducerInterceptor接口,您可以在生产者发布到Kafka集群之前拦截(甚至可能会改变)生产者接收到的记录。 默认情况下,没有拦截器 null low metadata.max.age.ms 即使没有发现任何分区的leadership有变化任然在设置的时间内强制刷新元数据以主动发现新的broker或分区。单位毫秒 300000 low metric.reporters 用户衡量指标的一组类的集合,实现org.apache.kafka.common.metrics.MetricsReporter接口,允许以插件方式加入类中,并将通知新的指标创建,总会包含一个JmxReporter用于注册JMX的统计 “” low metrics.num.samples 用于维护metrics的样本数 2 low metrics.recording.level metrics的最高记录级别。 INFO low metrics.sample.window.ms 计算指标样本的时间窗口。 30000 low reconnect.backoff.max.ms 1000 low reconnect.backoff.ms 尝试重新连接到给定主机之前等待的基本时间。 这避免了在一个紧密的循环中重复连接到主机。 该退避适用于客户端向经纪人的所有连接尝试。 50 low retry.backoff.ms 尝试重试对给定主题分区的失败请求之前等待的时间量。 这样可以避免在某些故障情况下重复发送请求。 100 low transaction.timeout.ms 主动中止正在进行的事务之前,事务协调器将等待来自生产者的事务状态更新的最长时间(以毫秒为单位)。如果此值大于代理中的max.transaction.timeout.ms设置,则请求将 失败并出现InvalidTransactionTimeout错误。 60000 low transactional.id 用于事务传输的TransactionalId。 这使跨越多个生产者会话的可靠性语义成为可能,因为它允许客户保证在开始任何新的事务之前使用相同的TransactionalId的事务已经完成。 如果没有提供TransactionalId,则生产者被限制为幂等发送。 请注意,如果配置了TransactionalId,则必须启用enable.idempotence。 缺省值为空,这意味着事务无法使用。 null low sasl.kerberos.service.name Kafka运行的Kerberos主体名称。 这可以在Kafka的JAAS配置或Kafka的配置中定义。 null medium sasl.jaas.config 用于JAAS配置文件使用的格式的SASL连接的JAAS登录上下文参数。 值的格式是:’(=)*;’ null medium sasl.mechanism 用于客户端连接的SASL机制。 这可能是安全提供者可用的任何机制。 GSSAPI是默认的机制。 GSSAPI medium security.protocol 用于与broker沟通的协议。 有效值为:PLAINTEXT,SSL,SASL_PLAINTEXT,SASL_SSL。 PLAINTEXT medium ssl.enabled.protocols 对SSL连接启用的协议列表 [TLSv1.2, TLSv1.1, TLSv1] 中 ssl.keystore.type 秘钥存储文件的格式。可选 JKS 中 ssl.protocol 用于生成SSLContext的SLL协议,默认的TLS使用于大多数情况。在最新的JVM中允许的值有TLS, TLSv1.1 和TLSv1.2。或许在老的JVM中也支持SSL, SSLv2 和SSLv3,但是因为有已知的安全漏洞不鼓励使用。 TLS 中 ssl.provider 用于SSL连接的安全提供商的名称。默认是JVM的默认安全提供商。 null 中 ssl.truststore.type truststore文件的格式。 JKS 中 sasl.kerberos.kinit.cmd Kerberos kinit command path. /usr/bin/kinit low sasl.kerberos.min.
time.before.relogin Login thread sleep time between refresh attempts. 60000 low sasl.kerberos.ticket.renew.jitter Percentage of random jitter added to the renewal time. 0.05 low sasl.kerberos.ticket.
renew.window.factor Login thread will sleep until the specified window factor of time from last refresh to ticket’s expiry has been reached, at which time it will try to renew the ticket. 0.8 low ssl.cipher.suites A list of cipher suites. This is a named combination of authentication, encryption, MAC and key exchange algorithm used to negotiate the security settings for a network connection using TLS or SSL network protocol. By default all the available cipher suites are supported. null low ssl.endpoint.
identification.algorithm The endpoint identification algorithm to validate server hostname using server certificate. null low ssl.keymanager.algorithm The algorithm used by key manager factory for SSL connections. Default value is the key manager factory algorithm configured for the Java Virtual Machine. SunX509 low ssl.secure.random.
implementation The SecureRandom PRNG implementation to use for SSL cryptography operations. null low ssl.trustmanager.algorithm The algorithm used by trust manager factory for SSL connections. Default value is the trust manager factory algorithm configured for the Java Virtual Machine. PKIX low
原创粉丝点击