该文档对应的是 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 |
被生产生者组织的到达请求事务进入单独批量请求之间的任何记录。正常情况生负载过轻才会发生,也就是记录的到达比它们的发送更快的时候。然而,在某些情况下,即使在中等负载下,客户机也可能希望减少请求的数量。这个设置通过添加少量人工延迟来完成。那就是,生产者不会迅速发送一条记录而是会等待达到所给定的延时来允许其它记录被发送以便发送可以批量一起。这个可以被认为是TCP中Nagle的算法模拟。这个设定给出了批量延时的上限:一旦我们获得一个分区的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 |
JAAS(Java验证和授权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 |
用来创建SSLContext的SSL协议。默认的设置为TLS,可以适用于大多数场合。在目前的JVM中允许的值有TLS, TLSv1.1 和 TLSv1.2. SSL,SSLv2 和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和用于协商使用TLS或SSL网络协议的网络连接的安全设置的密钥交换算法组合成的名称。 |
列表 |
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 |
低 |
相关推荐
对于Kafka的Topic配置参数,下面将详细讲解一些重要的参数。 1. cleanup.policy 这个参数用于指定日志段的清理策略。它接受"delete"或者"compact"作为值,分别表示删除策略和压缩策略。默认值为"delete",表示日志...
* 在挂载块设备时,加上 noatime 参数,该参数在文件被读取时不会更新文件访问时间,kafka 不依赖该时间,使用这个参数可以减少读文件开销。 * 不要将 kafka 的日志和其他应用日志与 kafka 的数据盘放在一起,让数据...
总结来说,`kafka_producer.zip`提供的资源展示了如何使用Python和`kafka-python`库创建一个简单的Kafka生产者,该生产者能够从配置文件读取参数,向指定的Kafka主题发送数据。理解这个过程对于任何需要在Python环境...
在大数据处理领域,Apache Kafka是一个不可或缺的组件,它作为一个...在实际部署过程中,根据具体的业务需求和环境,可能还需要调整其他配置参数。了解并熟练掌握这些配置对于高效、稳定地运行Kafka集群至关重要。
1. **配置文件**: 可能包含生产者和消费者各自的配置文件,比如`producer.properties`和`consumer.properties`,用于设置Kafka连接参数。 2. **Java源代码**: `Producer.java`和`Consumer.java`,分别实现消息的...
这里我们关注的焦点是 Kafka 的配置文件,包括 `server.properties`、`consumer.properties` 和 `producer.properties`,它们对于理解和优化 Kafka 集群的运行至关重要。 首先,我们来看 `server.properties` 文件...
可以通过`producer.properties`文件配置生产者的行为,比如`bootstrap.servers`(连接到的Kafka集群地址)、`key.serializer`和`value.serializer`(键值序列化方式)。 5. **消费者配置**:消费者使用`consumer....
本文将详细解析如何在处理大文件时,优化Kafka的配置参数,确保高效、稳定地进行数据生产和消费。 首先,我们要了解Kafka的核心组件:生产者(Producer)和消费者(Consumer)。生产者负责将数据写入Kafka的主题...
在配置方面,文档详细解析了Kafka集群的设置,如broker配置、日志管理、网络参数等,帮助管理员优化Kafka的性能和稳定性。此外,还涵盖了如何配置生产者和消费者,确保高效的数据传输和消费。 文档中还涵盖了Kafka...
`config1.json`可能是用于配置连接器到Kafka集群的参数,如bootstrap servers、主题名、序列化方式等。确保正确配置这些参数是连接成功的关键。 在实际测试过程中,你可能会使用`src`目录下的源代码来定制特定的...
Kafka的配置主要集中在`server.properties`文件中,主要包括以下几个核心参数: - `broker.id`: 每个Kafka节点的唯一标识,从0开始。 - `zookeeper.connect`: 指定Zookeeper集群的连接字符串,格式为`ip1:port1,ip2...
这个测试程序可能会包含一些硬编码的配置参数,如broker地址、主题名等,以及protobuf或avro消息的创建和序列化过程。 总的来说,实现Kafka C++生产者并结合protobuf和avro进行数据序列化,需要对Kafka的API、...
主题配置涉及到分区数量、副本因子等参数,如 `num.partitions`(分区数)、`replication.factor`(副本因子)等。 #### 3.3 Producer Configs 生产者配置主要包括消息发送策略、缓冲区大小等,如 `acks`(确认机制...
- 使用`@EnableKafka`注解开启Kafka支持,并通过配置文件(如application.properties或application.yml)设定Kafka服务器地址、端口、topic等参数。 2. **Kafka生产者(Producer)**: - 生产者是向Kafka主题...
### Kafka配置安装详解 #### 一、环境搭建与配置 Kafka是一款开源的消息队列中间件,被广泛应用于大数据处理领域。...在实际应用中,还需要根据具体需求进一步调整配置参数,以满足高性能、高可靠性的消息传输需求。
如果需要搭建Kafka集群,可以在`Server.properties`文件的基础上创建多个配置文件,并在每个文件中指定不同的broker ID和其他特定配置。 **2.2 修改Kafka配置文件** 打开`Server.properties`文件,并修改日志文件...
在Canal中,我们需要配置Kafka的生产者参数,这通常在`canal.properties`中的`canal.kafka.producer.bootstrap.servers`和`canal.kafka.topic`等字段进行设置,确保Canal知道如何将数据发布到Kafka。一旦配置完成,...
- **性能调优**:根据集群的实际运行情况调整相关配置参数,优化性能表现。 - **常见问题解答FAQ**:收集并整理常见的运维问题及解决方案,便于快速定位和解决问题。 ### 总结 Kafka作为一款优秀的分布式消息系统...