3.1 Broker Configs
基本配置如下:
1. broker.id
2. log.dirs
3. zookeeper.connect
下面将更详细地讨论主题级别的配置和默认设置。
名称 | 描述 | 类型 | 默认 | 重要性 |
---|---|---|---|---|
zookeeper.connect Zookeeper | 主机地址 | string | high | |
advertised.host.name | DEPRECATED:仅在未设置“advertised.listeners”或“listeners”时使用。用advertised.listeners 替换。 主机名发布到ZooKeeper供客户使用,会分发给所有的producer,consumer和其他broker来连接自己。。 在IaaS环境中,这可能需要与代理绑定的接口不同。 如果未设置,则将使用“host.name”的值(如果已配置)。 否则,它将使用从java.net.InetAddress.getCanonicalHostName()返回的值。 |
string | null | high |
advertised.listeners | 监听器发布到ZooKeeper供客户使用,如果与上面的监听器不同。 在IaaS环境中,这可能需要与代理绑定的接口不同。 如果没有设置,将使用listeners 的值。 |
string | null | high |
advertised.port | DEPRECATED:仅在未设置“advertised.listeners”或“listeners”时使用。 改用advertised.listeners 替代。 发布到ZooKeeper供客户端使用的端口。 在IaaS环境中,这可能需要与代理绑定的端口不同。 如果没有设置,它将使用broker绑定的相同端口。 |
int | null | high |
auto.create.topics.enable | 是否允许自动创建topic。如果设为true,那么produce,consume或者fetch metadata一个不存在的topic时,就会自动创建一个默认replication factor和partition number的topic。 | boolean | true | high |
auto.leader.rebalance.enable | 如果设为true,复制控制器会周期性的自动尝试,为所有的broker的每个partition平衡leadership,为更优先(preferred)的replica分配leadership。 | boolean | true | high |
background.threads | 一些后台任务处理的线程数,例如过期消息文件的删除等,一般情况下不需要去做修改 | int | 10 | high |
broker.id | 每一个broker在集群中的唯一表示,要求是正数。当该服务器的IP地址发生改变时,broker.id没有变化,则不会影响consumers的消息情况。如果未设置,则会生成唯一的代理标识。为避免zookeeper生成的代理标识与用户配置的代理标识之间的冲突,生成的代理标识从reserved.broker.max.id + 1开始。 | int | -1 | high |
compression.type | 为主题指定一个压缩类型,此配置接受标准压缩编码(’gzip’, ‘snappy’, lz4),另外接受’uncompressed‘相当于不压缩, ‘producer’ 意味着压缩类型由producer指定。 | string | producer | high |
delete.topic.enable | 启用删除主题。 如果此配置已关闭,则通过管理工具删除主题将不起作用。删除topic是影响注册在/admin/delete_topics的监听 | boolean | false | high |
host.name | DEPRECATED:仅在未设置“listeners”时使用。 使用listeners 来代替。 broker的主机名。 如果这个设置,它只会绑定到这个地址。 如果没有设置,它将绑定到所有interface。并将其中之一发送到ZK,但是发送到zk的不一定是正确的地址,导致消费端消费不到消息,所以这里必须要设置 |
String | “” | High |
leader.imbalance.check.interval.seconds | 分区rebalance检查的频率,由控制器触发 | long | 300 | high |
leader.imbalance.per.broker.percentage | 每个broker允许的不平衡的leader的百分比。如果每个broker超过了这个百分比,复制控制器会对分区进行重新的平衡。该值以百分比形式指定。 | int | 10 | high |
listeners | 监听器列表 - 逗号分隔的我们将监听的URI列表和监听器名称。 如果侦听器名称不是安全协议,则还必须设置listener.security.protocol.map。 指定主机名为0.0.0.0以绑定到所有接口。 保留主机名为空以绑定到默认接口。 合法侦听器列表的示例:PLAINTEXT:// myhost:9092,SSL://:9091 CLIENT://0.0.0.0:9092,REPLICATION:// localhost:9093 | string | null | high |
log.dir | 保存日志数据的目录(对log.dirs属性的补充) | string | /tmp/kafka-logs | high |
log.dirs | 一个用逗号分隔的目录列表,可以有多个,用来为Kafka存储数据。每当需要为一个新的分区分配一个目录时,会选择当前的存储分区最少的目录来存储。如果没有配置,则使用log.dir配置的值。 | string | null | high |
log.flush.interval.messages | 在将消息刷新到磁盘之前,在日志分区上累积的消息数量。强制fsync一个分区的log文件之前暂存的消息数量。因为磁盘IO操作是一个慢操作,但又是一个“数据可靠性”的必要手段,所以检查是否需要固化到硬盘的时间间隔。需要在“数据可靠性”与“性能”之间做必要的权衡,如果此值过大,将会导致每次“fsync”的时间过长(IO阻塞),如果此值过小,将会导致”fsync“的次数较多,这也就意味着整体的client请求有一定的延迟,物理server故障 |