Kafka源码解读——配置文件_Configs(间断持续更新......)
目录
- Producer Configs配置
- Consumer Configs配置
- Kafka Connect Configs配置
以下配置中没有的请查看官网原文:http://kafka.apache.org/documentation/
一、Producer Configs配置
名称 |
释义 |
key.serializer |
|
value.serializer |
|
acks |
-
设置为0,则生产者根本不会等待服务器的任何确认。记录将立即添加到套接字缓冲区并被视为已发送。在这种情况下,无法保证服务器已收到记录,重试配置将不会生效(因为客户端通常不知道任何故障)。为每个记录返回的偏移量将始终设置为-1
-
设置为1,这意味着领导者会将记录写入其本地日志,但不会等待所有追随者的完全确认。在这种情况下,如果领导者在确认记录后立即失败,但在追随者复制记录之前,则记录将丢失。
-
设置为all,这意味着领队将等待完整的同步副本集确认记录。这可以保证只要至少有一个同步副本保持活动状态,记录就不会丢失。这是最有力的保证。这相当于ACKS=-1设置。
|
bootstrap.servers |
|
buffer.memory |
- 官方默认大小:33554432字节(32mb)
- producer可用于缓冲等待发送到服务器的记录的内存总字节数。如果记录的发送速度超过了它们可以传递到服务器的速度,则生产者将阻塞,阻塞时间由ax.block.ms定义,之后将引发异常。
- 此设置应大致等于生产者将使用的总内存,但不是绝对的根据实际传输数据定义,因为并非生产者使用的所有内存都用于缓冲。一些额外的内存将用于压缩(如果启用了压缩)以及维护处理中的请求。
|
compression.type |
|
retries |
|
ssl.key.password |
|
ssl.keystore.location |
|
ssl.keystore.password |
|
ssl.truststore.location |
|
ssl.truststore.password |
|
二、Consumer Configs配置
名称 |
释义 |
key.deserializer |
|
value.deserializer |
|
bootstrap.servers |
|
fetch.min.bytes |
- 请求返回的最小数据量,如果请求的数据量不够这个值,则会继续请求,超过了请求时间之后,会立即fetch,将此值设置大于1可以提高请求吞吐量,缺点是会有延迟。
|
group.id |
- 标识消费者组的唯一字符串,如果消费者使用subscribe(topic)或基于kafka的偏移管理策略,则需要配置该属性
|
heartbeat.interval.ms |
- 用于确保消费者的会话保持活动的状态,或者在consumer加入、离开组时,保持组内平衡;
- 值必须低于<session.timeout.ms>,通常是不高于1/3,也可以更小,控制正常的、再平衡的预期时间
|
max.partition.fetch.bytes |
- 官方默认值:1048576字节(1mb)
- 服务器返给每个分区的最大数据量,由消费者批量获取,如果获取第一个非空分区的第一个批处理记录大于此值,则会回退,以防止consumer阻塞。
- 最大批记录大小由<message.max.bytes>(broker config)或<max.message.bytes>(topic config)
- <fetch.max.bytes>用于限制consumer请求的记录大小
|
session.timeout.ms |
- Kafka组管理者会检测consumer超时,consumer定期向broker节点发送心跳表示它还活着
- 如果在超时之前broker未收到consumer的心跳,那么该broker会移除当前consumer,consumer组会重新找一个consumer来消费
- 注意:此值的范围为:<group.min.session.timeout.ms>和<group.max.session.timeout.ms>之间(broker config)
|
ssl.key.password |
|
ssl.keystore.location |
|
ssl.keystore.password |
|
ssl.truststore.location |
|
ssl.truststore.password |
|
auto.offset.reset |
- 官方默认值:latest;取值范围 [latest, earliest, none]
- 如果在Kafka中没有初始化offet或者服务器上没有当前offset(例如:该数据已被删除该怎么办?)
- earliest:自动将offset设置为最早的offset
- latest:自动将offset设置为最新的offset
- none:如果在consumer组里面没有找到之前的offset,则向该consumer抛异常
- anything else:向consumer抛异常
|
|
|
|
|
|
|
三、Kafka Connect Configs配置
名称 |
释义 |
config.storage.topic |
|
group.id |
|
key.converter |
- 转换器类,用于在Kafka连接格式和写入Kafka的序列化形式之间进行转换。控制了写或读Kafka的消息中的键的格式,因为它独立于connectors,所以它允许任何connectors使用任何序列化格式。常见的例子由Json、Avro。
|
offset.storage.topic |
- 存储connectors偏移量的Kafka Topic的名称
|
status.storage.topic |
- 存储connector和task状态的Kafka Topic名称
|
value.converter |
- 与<key.converter>类似,这个设置value的转换器类。
|
bootstrap.servers |
- Kafka集群主机:端口列表
- 注意:不需要全部都配上,因为只是为了初始化连接,获取整个集群的数据,但为了保险起见,最好多配几个,防止部分主机宕机。
|
heartbeat.interval.ms |
- 默认值:3000ms
- 用于确保worker的会话保持活动的状态,或者新的worker加入、离开组时,保持组内平衡;
- 值必须低于<session.timeout.ms>,通常是不高于1/3,也可以更小,控制正常的、再平衡的预期时间
|
rebalance.timeout.ms |
- 默认值:60000ms
- 再平衡开始后,允许每个woker加入工作组的最大时间,基本上是对所有任务刷新数据量和提交偏移量所需的时间限制,超时之后,worker会从组内删除,导致提交offset失败。
|
session.timeout.ms |
- 默认值:10000ms
- 用于检测worker故障导致的超时,worker定时发送心跳,表示自己还活着,如果该worker会话超时之前未收到心跳,那么worker将会从组内移除,并进行再平衡
- 注意:此值的范围为:<group.min.session.timeout.ms>和<group.max.session.timeout.ms>之间
|
ssl.key.password |
|
ssl.keystore.location |
|
ssl.keystore.password |
|
ssl.truststore.location |
|
ssl.truststore.password |
|
client.dns.lookup |
- 控制客户端如何使用DNS查找。
- use_all_dns_ips:当查找返回一个主机的多个IP地址时,将在连接失败之前;用于引导和通知servers
- resolve_canonical_bootstrap_servers_only:没一个都将被解析,单独作为一个规范名称列表
|
connections.max.idle.ms |
- 默认值:540000ms
- 配置多长时间之后关闭空闲连接
|
receive.buffer.bytes |
- 读取数据时使用的TCP接收缓冲区(SO_RCVBUF)的大小,如果值为-1,则用系统默认值。
|
(1)Sources Connectors Configs配置
名称 |
释义 |
name |
|
connector.class |
- 连接器的类别名,必须是org.apache.kafka.connect.connector.Connector的子类,如果是org.apache.kafka.connect.file.FileStreamSinkConnector,可以用全名,可以用FileStreamSink,可以用FileStreamSinkConnector,简写。
|
tasks.max |
|
errors.retry.timeout |
- 默认值:0
- 失败重连的最长持续时间,值为-1表示无限重试
|
errors.retry.delay.max.ms |
- 连续重试尝试之间的最长持续时间,一旦达到这个限制,抖动将增加到延迟,以防止出现群体问题(不太理解,估计就是怕影响到整个Kafka集群吧)
|
errors.tolerance |
- 默认值:none
- 连接操作期间的容错行为,none表示任何错误都将导致连接任务失败,all表示跳过有问题的记录,
|
errors.log.enable |
- 默认值:false
- 值为true,将每个错误、失败操作的详细信息、有问题的记录,都将写入连接程序的日志里。默认为false,因此只有不可容忍的错误才会报错。
|
errors.log.include.messages |
- 默认值:false
- 是否将导致失败的连接记录包含到日志中,默认是false,将组织记录key、value、header写入日志文件,尽管topic和分区号仍然会被log
|
(2)Sink Connectors Configs配置
名称 |
释义 |
name |
|
connector.class |
- 连接器类别名,必须是org.apache.kafka.connect.connector.Connector的子类,可以写全名、FileStreamSink、FileStreamSinkConnector,使配置更简单
|
tasks.max |
|
topics |
|
topics.regex |
- topic列表的正则表达式,该正则会被编译成java.util.regex.Pattern,只能指定topic或topic.regex中的一个
|
四、Kafka Streams Configs配置
名称 |
释义 |
application.id |
1:默认客户端ID前缀
2:成员管理组ID
3:日志更新topic前缀
|
bootstrap.servers |
|
replication.factor |
- 默认值:1
- 流处理应用程序创建的更改日志topic和重分区topic的复制因子
|
state.dir |
|
cache.max.bytes.buffering |
|
client.id |
用于内部的消费者、生产者和原始消费者的客户端ID的前缀,格式为“--streamthread--” |