kafka的核心配置是:
    broker.id--节点id
    log.dirs--日志路径
    zookeeper.connect--zookeeper的连接地址
节点重新配置后有3种启动方式:
    read-only:需要重新启动broker进行更新。
    per-broker:可以为每个broker动态更新。
    cluster-wide:可以作为集群范围的默认值动态更新,也可以为测试更新为每个broker的值。
下面分别看下服务器节点的配置,目前有201项配置:

1.zookeeper.connect(read-only)
该配置是用来连接zookeeper的,即可以配置连接单个,也可以连接多个zookeeper,还可以指定连接zookeeper下的存放路径,如下配置hostname1:port1,hostname2:port2,hostname3:port3/chroot/path。

2.advertised.listeners(read-only)
如果与监听器配置属性不同,可以将监听器发布到ZooKeeper供客户端使用。在IaaS环境中,这可能需要与代理绑定到的接口不同。如果没有设置此值,则将使用侦听器的值。与侦听器不同,发布0.0.0.0元地址是无效的。

3.auto.create.topics.enable(read-only)
用于表示是否自动在服务器上面创建topic,默认值是true。

4.auto.leader.rebalance.enable(read-only)
是否启用leader自平衡,默认是true。它是后台进程进行检查的,间隔检查时间是通过leader.imbalance.check.interval.seconds这个参数配置,而不平衡的阈值是leader.imbalance.per.broker.percentage这个参数进行配置的。

5.background.threads(cluster-wide)
用于设置在后台各种任务处理的线程数量,默认为10,它的作用是在集群生效的。

6.broker.id(read-only)
服务器的节点id,默认是-1。在集群中节点id是唯一的。为了避免zookeeper生成的代理id和用户配置的代理id之间的冲突,生成的代理id从reserved.broker.max.id + 1开始。

7.compression.type(cluster-wide)
最终的压缩方式,可以有gzip,snappy,lz4,zstd,uncompressed(不压缩),producer(采用生产者配置的压缩方式)等压缩方式。

8.control.plane.listener.name(read-only)
用于控制器和broker之间通信的listener的名称,默认值为null。broker将使用control.plane.listener.name在监听器列表中定位端点,监听来自controller的连接。例如,一个节点的配置如下:
    listeners = INTERNAL://192.1.1.8:9092, EXTERNAL://10.1.1.5:9093, CONTROLLER://192.1.1.8:9094
    listener.security.protocol.map = INTERNAL:PLAINTEXT, EXTERNAL:SSL, CONTROLLER:SSL
    control.plane.listener.name = CONTROLLER

在启动时,broker将使用安全协议“SSL”开始监听“192.1.1.8:9094”。
在controller端,当它通过zookeeper发现broker发布的端点时,它将使用control.plane.listener.name来查找端点,它将使用该端点建立到broker的连接。
例如当一个broker在zookeeper上发送一个端点为 "endpoints" : ["INTERNAL://broker1.example.com:9092","EXTERNAL://broker1.example.com:9093","CONTROLLER://broker1.example.com:9094"],并且controller配置如下
    listener.security.protocol.map = INTERNAL:PLAINTEXT, EXTERNAL:SSL, CONTROLLER:SSL
    control.plane.listener.name = CONTROLLER

那么controller将使用带有安全协议“SSL”的broker1.example.com:9094连接到broker。

9.delete.topic.enable(read-only)
是否允许删除主题,默认为true。如果设置为false,那么进行admin tool删除的时候是无效的。

10.leader.imbalance.check.interval.seconds(read-only)
用于检查leader几点再平衡的时间频率,默认300秒。

11.leader.imbalance.per.broker.percentage(read-only)
用于设置每个broker允许leader失衡的百分比,如果超过这个百分比就会重新进行leader再平衡操作。默认值是10%;

12.listeners(per-broker)
listener列表——用逗号分隔的uri列表listener名称。如果listener名称不是安全协议,则listener.security.protocol.map必须设置。将主机名指定为0.0.0.0以绑定到所有接口。让主机名为空以绑定到默认接口。例子如下:
    PLAINTEXT://myhost:9092,SSL://:9091
    CLIENT://0.0.0.0:9092,REPLICATION://localhost:9093

13.log.dir(read-only)
保存日志数据的目录,是log.dirs的补充,默认值是/tmp/kafka-logs。

14.log.dirs(read-only)
保存日志数据的目录。如果未设置,则log.dir会来替代它。

15.log.flush.interval.messages(cluster-wide)
在消息刷新到磁盘之前,日志分区上累积的消息数量,默认是9223372036854775807bytes。

16.log.flush.interval.ms(cluster-wide)
任何主题中的消息在刷新到磁盘之前保存在内存中的最长时间,时间单位毫秒。如果没有设置,则使用log.flush.scheduler.interval.ms中的值。

17.log.flush.offset.checkpoint.interval.ms(read-only)
更新上次刷新的持久记录的频率作为日志恢复点,单位60000毫秒,即1分钟。

18.log.flush.scheduler.interval.ms(read-only)
日志刷新器检查是否有日志需要刷新到磁盘的频率,默认值是9223372036854775807。

19.log.flush.start.offset.checkpoint.interval.ms(read-only)
更新日志起始偏移量的持久记录的频率,单位毫秒,默认60000毫秒。

20.log.retention.bytes(cluster-wide)
删除日志之前的最大日志大小,默认值是-1。

21.log.retention.hours(read-only)
删除日志文件之前保存日志文件的小时数(以小时为单位),默认值168小时。

22.log.retention.minutes(read-only)
删除日志文件之前保存它的分钟数(单位为分钟),如果未设置,则使用log.retention.hours的配置。

23.log.retention.ms(cluster-wide)
在删除日志文件之前保存它的毫秒数(以毫秒为单位),如果没有设置,则使用log.retention.minutes的配置。如果设置为-1,则不应用时间限制。

24.log.roll.hours(read-only)
新日志段生成前的最大持续时间(以小时为单位),默认值为168小时。

25.log.roll.ms(read-only)
新日志段生成前的最大持续时间(以毫秒为单位),如果未设置,则使用log.roll.hours的配置。

26.log.roll.jitter.hours(read-only)
用于logRollTimeMillis(以小时为单位)减去最大的误差时间,默认为0。

27.log.roll.jitter.ms(cluster-wide)
用于logRollTimeMillis(以毫秒为单位)减去最大的误差时间,如果未设置,则用log.roll.jitter.hours的配置。

28.log.segment.bytes(cluster-wide)
单个日志文件的最大大小,默认1073741824bytes,即1G。

29.log.segment.delete.delay.ms(cluster-wide)
从文件系统中删除文件之前等待的时间,默认为60000毫秒,即1分钟。

30.message.max.bytes(cluster-wide)
Kafka允许的最大记录批大小(如果启用压缩,则在压缩之后),默认为1048588bytes,即大约1M。

31.min.insync.replicas(cluster-wide)
当生产者将acks设置为“all”(或“-1”)时,min.insync.replicas指定了最小的副本数量,这些副本必须确认写操作,这样才能认为写操作成功。如果不能满足这个最小值,那么生成器将抛出一个异常(NotEnoughReplicas或NotEnoughReplicasAfterAppend)。当一起使用时,min.insync.replicas和acks允许你强制执行更大的持久性保证。典型的场景是创建复制因子为3的主题,设置min.insync.replicas为2并且producer使用acks为“all”。这将确保在大多数副本没有收到写操作时,producer会引发异常。默认值为1。

32.num.io.threads(cluster-wide)
服务器用于处理请求的线程数,其中可能包括磁盘I/O,默认值为8。

33.num.network.threads(cluster-wide)
服务器用于从网络接收请求并向网络发送响应的线程数,默认值为3。

34.num.recovery.threads.per.data.dir(cluster-wide)
每个数据目录在启动时用于日志恢复和关闭时用于刷新的线程数,默认值为1。

35.num.replica.alter.log.dirs.threads(read-only)
可以在日志目录之间移动副本的线程数,其中可能包括磁盘I/O。

36.num.replica.fetchers(cluster-wide)
用于从源broker节点复制消息的获取线程数。增加这个值可以增加follower broker节点中的I/O并行度,默认值为1。

37.offset.metadata.max.bytes(read-only)
与偏移量提交关联的元数据项的最大大小,默认值为4096bytes。

38.offsets.commit.required.acks(read-only)
可以接受提交前所需的ack,默认值为-1。通常,不应该重写默认值(-1)。

39.offsets.commit.timeout.ms(read-only)
偏移量的提交将被延迟直到偏移量主题的所有副本都接收到提交或达到超时时间,默认5000毫秒。这类似于producer请求超时。

40.offsets.load.buffer.size(read-only)
加载偏移量到缓存时从偏移量段读取的批处理大小(软限制,如果记录太大则覆盖)。默认为5242880bytes。

41.offsets.retention.check.interval.ms(read-only)
检查过期偏移量的间隔时间,默认为600000毫秒,即10分钟。

42.offsets.retention.minutes(read-only)
当一个消费者组失去了它所有的消费者(即变为空的),它的偏移量在被丢弃之前将在这个保留期间保持不变。对于独立使用者(使用手动分配),偏移量将在最后一次提交加上这个保留期之后过期。默认为10080分钟。

43.offsets.topic.compression.codec(read-only)
压缩编解码器的偏移主题-压缩可用于实现“原子”提交。默认值为0。

44.offsets.topic.num.partitions(read-only)
偏移量提交主题的分区数(部署后不应更改),默认值为50。

45.offsets.topic.replication.factor(read-only)
偏移主题的复制因子(设置得更高以确保可用性)。在集群大小满足此复制因子要求之前,内部主题创建将会失败。默认值为3。

46.offsets.topic.segment.bytes(read-only)
偏移量主题段字节应该保持相对较小,以便更快地进行日志压缩和缓存加载,默认值为104857600bytes,即100M。

47.queued.max.requests(read-only)
阻塞网络线程之前,数据平面允许的排队请求数量,默认为500。

48.replica.fetch.min.bytes(read-only)
每个取回响应所需的最小字节数。如果没有足够的字节,等待replicaMaxWaitTimeMs,默认值为1。

49.replica.fetch.wait.max.ms(read-only)
follower副本发出的每个获取请求的最大等待时间。这个值应该始终小于replica.lag.time.max.ms的配置值,以防止频繁收缩ISR为低吞吐量主题,默认值为500。

50.replica.high.watermark.checkpoint.interval.ms(read-only)
数字高水印被保存到磁盘的间隔,默认为5000毫秒。

51.replica.lag.time.max.ms(read-only)
用于从isr中删除follower节点的最大等待时间,默认为30000毫秒。如果一个follower没有发送任何fetch请求,或者至少在这次没有消耗leader日志结束偏移量,leader将从isr中删除该follower。

52.replica.socket.receive.buffer.bytes(read-only)
套接字接收网络请求的缓冲区,默认为65536bytes,即64K。

53.replica.socket.timeout.ms(read-only)
网络请求的套接字超时时间,它的值至少应该是replica.fetch.wait.max.ms,默认值为30000毫秒。

54.request.timeout.ms(read-only)
配置控制客户端等待请求响应的最大时间,默认30000毫秒。如果在超时结束前没有收到响应,客户端将在必要时重新发送请求,或者在重试耗尽时请求失败。

55.socket.receive.buffer.bytes(read-only)
套接字服务器套接字的接收SO_RCVBUF缓冲区,默认值为102400bytes,即100K。如果值为-1,将使用OS默认值。

56.socket.request.max.bytes(read-only)
套接字请求中的最大字节数,默认值104857600bytes,即100M。

57.socket.send.buffer.bytes(read-only)
套接字服务器套接字的发送SO_SNDBUF缓冲区,默认值为102400bytes,即100K。如果值为-1,将使用OS默认值。

58.transaction.max.timeout.ms(read-only)
事务允许的最大超时,默认值为900000毫秒,即15分钟。如果client请求的事务时间超过这个时间,那么broker节点将在InitProducerIdRequest中返回一个错误。这样可以防止client超时时间过大,因为超时会阻止用户读取事务中包含的主题。

59.transaction.state.log.load.buffer.size(read-only)
将生成器id和事务加载到缓存时从事务日志段读取的批处理大小(软限制,如果记录太大则覆盖)。默认值为5242880bytes,即5M。

60.transaction.state.log.min.isr(read-only)
用于事务主题覆盖min.insync.replicas的配置,默认值为2。

61.transaction.state.log.num.partitions(read-only)
事务主题的分区数(部署后不应更改),默认值为50。

62.transaction.state.log.replication.factor(read-only)
事务主题的复制因子(设置较高以确保可用性),默认值为3。在集群大小满足此复制因子要求之前,内部主题创建将会失败。

63.transaction.state.log.segment.bytes(read-only)
事务主题段字节应该保持相对较小,以便加速日志压缩和缓存加载,默认值为104857600bytes,即100M。

64.transactional.id.expiration.ms(read-only)
对于当前事务,事务协调者将不接受任何事务状态更新在事务id到期前的等待时间,默认值为604800000毫秒。这个设置也会影响producer id的过期,producer id将会过期在使用给定producer id进行最后一次写操作之后。注意,如果由于主题的保留设置而删除了producer id的最后一次写操作,producer id可能会更早过期。

65.unclean.leader.election.enable(cluster-wide)
指示是否将不位于ISR集中的副本作为leader最后选择,即使这样做可能导致数据丢失。默认值为false。

66.zookeeper.connection.timeout.ms(read-only)
客户端等待建立到zookeeper连接的最大时间。如果未设置,则使用zookeeper.session.timeout.ms的配置。

67.zookeeper.max.in.flight.requests(read-only)
客户端在阻塞前将发送给Zookeeper的未确认请求的最大数量。默认为10。

68.zookeeper.session.timeout.ms(read-only)
zookeeper会话超时时间,默认为18000毫秒。

69.zookeeper.set.acl(read-only)
设置客户端使用安全acl,默认为false。

70.broker.id.generation.enable(read-only)
在服务器上启用自动代理id生成,默认为true。启用时从reserved.broker.max.id配置的值将会被检查。

71.broker.rack(read-only)
节点的机架名称。这将在机架感知复制分配中用于容错。例子:“RACK1”、“us-east-1d”。

72.connections.max.idle.ms(read-only)
空闲连接超时时间,默认为600000毫秒,即10分钟。服务器套接字处理器线程将关闭空闲超过这个值的连接。

73.connections.max.reauth.ms(read-only)
当显式地设置为正数(默认值为0,而不是正数)时,将在v2.2.0或更高版本的客户端进行身份验证时将不会超过配置值的会话生存期与它们通信。代理将断开在会话生命周期内没有重新身份验证的任何此类连接,然后将其用于重新身份验证以外的任何目的。配置名可以选择使用监听器前缀和小写的SASL机制名作为前缀。例如listener.name.sasl_ssl.oauthbearer.connections.max.reauth.ms=3600000

74.controlled.shutdown.enable(read-only)
是否允许控制关闭服务器,默认为true。

75.controlled.shutdown.max.retries(read-only)
有控制的关机可能由于多种原因而失败。这将确定发生此类失败时重试的次数,默认值为3。

76.controlled.shutdown.retry.backoff.ms(read-only)
在每次重试之前,系统需要一段时间从导致之前失败的状态(控制器故障转移、复制延迟等)中恢复过来。这个配置决定了在重试之前等待的时间。默认时间5000毫秒。

77.controller.socket.timeout.ms(read-only)
controller到broker通道的套接字超时时间,默认30000毫秒。

78.default.replication.factor(read-only)
自动创建的主题的默认复制因子,默认为1。

79.delegation.token.expiry.time.ms(read-only)
token在需要更新之前的有效性时间(以毫秒为单位)。默认值为1天,即86400000毫秒。

80.delegation.token.master.key(read-only)
生成和验证授权令牌的Master/secret密钥。必须在所有broker之间配置相同的密钥。如果没有设置密钥或将其设置为空字符串,broker将禁用委托令牌支持。

81.delegation.token.max.lifetime.ms(read-only)
令牌有一个最长的生命周期,超过这个时间就不能再更新了。默认值7天,即604800000毫秒。

82.delete.records.purgatory.purge.interval.requests(read-only)
删除记录请求的清除时间间隔(以请求数量计),默认为1。

83.fetch.max.bytes(read-only)
我们将为取回请求返回的最大字节数。至少是1024bytes。默认最大为57671680bytes,即55M。

84.fetch.purgatory.purge.interval.requests(read-only)
获取请求的清除时间间隔(以请求数量计),默认值为1000。

85.group.initial.rebalance.delay.ms(read-only)
在进行第一次再平衡之前,group协调者等待更多消费者加入新group的时间。更长的延迟意味着重新平衡的可能性更小,但会增加处理开始之前的时间。默认为3000毫秒。

86.group.max.session.timeout.ms(read-only)
注册使用者允许的最大会话超时,默认为1800000毫秒,即30分钟。更长的超时使使用者有更多时间处理心跳之间的消息,但检测故障的时间更长。

87.group.max.size(read-only)
单个消费者组所能容纳的最大消费者数量。默认2147483647个。

88.group.min.session.timeout.ms(read-only)
注册使用者允许的最小会话超时时间,默认6000毫秒。更短的超时时间将导致更快的故障检测,但代价是更频繁的用户心跳,这会耗尽broker资源。

89.inter.broker.listener.name(read-only)
用于在broker之间进行通信的listener的名称。如果未设置,则listener名称由security.inter.broker.protocol定义。不能同时设置这个属性和security.inter.broker.protocol属性。

90.inter.broker.protocol.version(read-only)
指定将使用哪个版本的broker间协议。这通常在所有broker都升级到新版本之后发生。

91.log.cleaner.backoff.ms(cluster-wide)
当没有要清理的日志时的睡眠时间,默认15000毫秒。

92.log.cleaner.dedupe.buffer.size(cluster-wide)
所有清理线程中用于日志重复数据删除的总内存,默认134217728bytes,也即128M。

93.log.cleaner.delete.retention.ms(cluster-wide)
删除记录保留多久?默认86400000毫秒,即24小时。

94.log.cleaner.enable(read-only)
是否服务器上面的日志清理程序进程,默认为true。如果任何一个topic包含内部偏移topic设置了cleanup.policy=compact则该设置应该设置为true,如果设置为false,那么这些主题将不会被压缩,并会不断变大。

95.log.cleaner.io.buffer.load.factor(cluster-wide)
日志清理器dedupe缓冲负载系数,默认为0.9。dedupe缓冲区可以变为满的百分比,虽然较高的值将允许一次清除更多的日志,但会导致更多的哈希冲突。

96.log.cleaner.io.buffer.size(cluster-wide)
所有清理器线程中用于日志清理器I/O缓冲区的总内存,默认524288bytes,即512K。

97.log.cleaner.io.max.bytes.per.second(cluster-wide)
日志清理器可以进行改变大小以便其读写i/o的总和平均小于这个值,默认为1.7976931348623157E308bytes。

98.log.cleaner.max.compaction.lag.ms(cluster-wide)
消息在日志中不符合压缩条件的最长时间,默认9223372036854775807。仅适用于正在压缩的日志。

99.log.cleaner.min.cleanable.ratio(cluster-wide)
符合清理条件的日志的脏日志与总日志的最小比率,默认为0.5。如果还指定了log.cleaner.max.compaction.lag.ms或log.cleaner.min.compaction.lag.ms配置,那么日志压缩器会在以下情况下认为日志符合压缩条件:
    1)、脏比率阈值已经满足,并且日志至少在log.cleaner.min.compaction.lag.ms期间有脏(未压缩)记录
    2)、脏比率阈值已经满足,如果日志在不超过log.cleaner.max.compaction.lag.ms期间有脏(未压缩)记录。

100.log.cleaner.min.compaction.lag.ms(cluster-wide)
消息在日志中保持未压缩状态的最小时间,默认为0。仅适用于正在压缩的日志。

101.log.cleaner.threads(cluster-wide)
用于日志清理的后台线程数,默认为1。

102.log.cleanup.policy(cluster-wide)
超出保留窗口的段的默认清除策略,默认为delete。用逗号分隔的有效策略列表。有效的策略是:“delete”和“compact”。

103.log.index.interval.bytes(cluster-wide)
将一个条目添加到偏移索引中的时间间隔,每次间隔添加的大小,默认为4096bytes,即1K。

104.log.index.size.max.bytes(cluster-wide)
偏移索引的最大字节大小,默认为10485760bytes,即10M。

105.log.message.format.version(read-only)
指定broker将用于向日志追加消息的消息格式版本,该值应该是一个有效的ApiVersion,默认为当前最新版本2.5-IV0。通过设置特定的消息格式版本,用户可以确认磁盘上现有的所有消息都小于或等于指定的版本。不正确地设置此值将导致使用旧版本的用户无法使用,因为他们将接收到他们不理解的格式的消息。

106.log.message.timestamp.difference.max.ms(cluster-wide)
broker接收消息时的时间戳与消息中指定的时间戳之间允许的最大差异,默认为9223372036854775807。当设置了log.message.timestamp.type=CreateTime时,如果时间戳的差异超过此阈值,则消息将被拒绝。如果设置了log.message.timestamp.type=LogAppendTime则忽略log.message.timestamp.difference.max.ms配置。允许的最大时间戳差异不应大于log.retention.ms以避免不必要的频繁日志滚动。

107.log.message.timestamp.type(cluster-wide)
定义消息中的时间戳是消息创建时间(CreateTime)还是日志追加时间(LogAppendTime),默认为CreateTime。

108.log.preallocate(cluster-wide)
创建新段时应该预分配文件吗?如果您在Windows上使用Kafka,可能需要将其设置为true,默认为false。

109.log.retention.check.interval.ms(read-only)
日志清理器检查是否有日志适合删除的频率,默认300000毫秒,即5分钟。

110.max.connections(cluster-wide)
任何时候broker中允许的最大连接数,默认为2147483647。除了用max.connections.per.ip给配置的per-ip限制之外max.connections也会起作用。listener级别的限制也可以通过在配置名称前加上listener前缀来配置,如listener.name.internal.max.connections。应该根据broker容量配置broker范围的限制,而listener限制应该根据应用程序需求进行配置。如果达到listener或broker的限制则新连接将会被阻塞。即使达到了broker范围的限制,也允许在broker listener上连接。在这种情况下,另一个listener上最近最少使用的连接将被关闭。

111.max.connections.per.ip(cluster-wide)
每个ip地址允许的最大连接数,默认为2147483647。如果有使用max.connections.per.ip.overrides的覆盖配置,则可以将此设置为0。如果达到限制,来自该ip地址的新连接将被删除。

112.max.connections.per.ip.overrides(cluster-wide)
每个ip或主机名的逗号分隔列表覆盖到默认的最大连接数。如"hostName:100,127.0.0.1:200",它表示hostName的连接数为100,127.0.0.1连接数为200。

113.max.incremental.fetch.session.cache.slots(read-only)
我们将维护的获取增量会话的最大数量,默认为1000。

114.num.partitions(read-only)
每个主题的默认日志分区数,默认为1。

115.password.encoder.old.secret(read-only)
用于动态配置密码编码的旧秘钥。只有在秘钥被更新时才需要这样做,如果指定,所有动态编码的密码将使用这个旧秘钥进行解码,并使用password.encoder.secret重新编码当broker启动时。

116.password.encoder.secret(read-only)
用于对该broker动态配置的密码进行编码的密钥。

117.principal.builder.class(per-broker)
实现KafkaPrincipalBuilder接口的类的完全限定名,该接口用于构建授权期间使用的KafkaPrincipal对象。这个配置还支持以前用于SSL上的客户端身份验证的过期的PrincipalBuilder接口。如果没有定义主体构建器,则默认行为取决于所使用的安全协议。对于SSL身份验证,将使用ssl.principal.mapping.rules定义的规则应用于专有名称如果从客户端提供的证书,否则,如果不需要客户端身份验证,则主体名将是ANONYMOUS(匿名)的。对于SASL身份验证,如果使用GSSAPI,主体将会使用sasl.kerberos.principal.to.local.rules定义的规则派生,如果使用其他机制,则使用SASL身份验证ID派生主体。对于PLAINTEXT,主体将是ANONYMOUS(匿名)的。

118.producer.purgatory.purge.interval.requests(read-only)
生产者请求炼狱的清除时间间隔(以请求数量为单位),默认为1000。

119.queued.max.request.bytes(read-only)
在不再读取请求之前允许的排队字节数,默认为-1。

120.replica.fetch.backoff.ms(read-only)
取出分区时发生错误时的睡眠时间,默认1000毫秒。

121.replica.fetch.max.bytes(read-only)
试图为每个分区获取的消息字节数,默认为1048576bytes,即1M。这不是绝对最大值,如果fetch的第一个非空分区中的第一个记录批处理大于这个值,仍然会返回该记录批处理,以确保可以进行进度。broker接受的最大记录批处理大小通过message.max.bytes定义(broker配置)或max.message.bytes(topic配置)。

122.replica.fetch.response.max.bytes(read-only)
整个获取响应预期的最大字节数,默认10485760bytes,即10M。记录是分批获取的,如果获取的第一个非空分区中的第一个记录批大于此值,则仍将返回该记录批,以确保可以进行进度。因此,这不是一个绝对的最大值,代理接受的最大记录批处理大小通过message.max.bytes定义(broker配置)max.message.bytes(topic配置)。

123.replica.selector.class(read-only)
实现ReplicaSelector的完全限定类名。broker使用它来查找首选读副本。默认情况下,我们使用返回leader的实现。

124.reserved.broker.max.id(read-only)
可以用于broker.id的最大号码,默认为1000。

125.sasl.client.callback.handler.class(read-only)
实现AuthenticateCallbackHandler接口的SASL客户端回调处理程序类的完全限定名。

126.sasl.enabled.mechanisms(per-broker)
Kafka服务器中启用的SASL机制列表。该列表可以包含安全提供程序可用的任何机制。默认情况下只有GSSAPI是启用的。

127.sasl.jaas.config(per-broker)
使用JAAS配置文件使用的格式为SASL连接的JAAS登录上下文参数。该值的格式是:'loginModuleClass controlFlag (optionName=optionValue)*;'。对于broker,配置必须使用listener前缀和小写的SASL机制名称作为前缀,如listener.name.sasl_ssl.scram-sha-256.sasl.jaas.config=com.example.ScramLoginModule required;

128.sasl.kerberos.kinit.cmd(per-broker)
Kerberos kinit命令路径。默认/usr/bin/kinit。

129.sasl.kerberos.min.time.before.relogin(per-broker)
刷新尝试之间的登录线程休眠时间。默认60000毫秒。

130.sasl.kerberos.principal.to.local.rules(per-broker)
从主体名到短名称(通常是操作系统用户名)的映射规则列表,默认DEFAULT。规则将按顺序计算,第一个匹配主体名称的规则将用于将其映射为短名称。列表中以后的任何规则都将被忽略。默认情况下,形式{username}/{hostname}@{REALM}的主体名称映射到{username}。注意,如果principal.builder.class配置提供了KafkaPrincipalBuilder的扩展,则该配置将被忽略。

131.sasl.kerberos.service.name(per-broker)
Kafka运行的Kerberos主体名。这可以在Kafka的JAAS配置或Kafka的配置中定义。

132.sasl.kerberos.ticket.renew.jitter(per-broker)
随机不稳定的百分比增加到更新时间,默认0.05。法定值在0至0.25(含25%)之间。目前只适用于oauthholder。

133.sasl.kerberos.ticket.renew.window.factor(per-broker)
登录线程将休眠直到到达从上次刷新到票证到期的指定窗口时间因子,此时它将尝试更新票证,默认为0.8。

134.sasl.login.callback.handler.class(read-only)
实现AuthenticateCallbackHandler接口的SASL登录回调处理程序类的完全限定名。对于broker,登录回调处理程序配置必须带有监听器前缀和小写的SASL机制名称,如listener.name.sasl_ssl.scram-sha-256.sasl.login.callback.handler.class=com.example.CustomScramLoginCallbackHandler。

135.sasl.login.class(read-only)
实现登录接口的类的完全限定名。对于broker,登录配置必须使用监听器前缀和小写的SASL机制名称作为前缀。例如,listener.name.sasl_ssl.scram-sha-256.sasl.login.class=com.example.CustomScramLogin。

136.sasl.login.refresh.buffer.seconds(per-broker)
刷新凭据时在凭据过期前要维护的缓冲区时间,以秒为单位。如果刷新发生在比缓冲区秒数更接近过期的时候,那么刷新将被上移,以尽可能多地维护缓冲区时间。合法值在0~3600秒(1小时)之间;如果没有指定值,则使用默认值300秒(5分钟)。这个值和sasl.login.refresh.min.period.seconds都会被忽略如果他们的总和超过了凭据的剩余生命周期。目前只适用于oauthholder。

137.sasl.login.refresh.min.period.seconds(per-broker)
登录刷新线程在刷新凭据之前等待的最小时间,以秒为单位。合法值在0到900秒之间(15分钟);如果没有指定值,则使用默认值60秒(1分钟)。此值和sasl.login.refresh.buffer.seconds将会被忽略如果他们的总和超过了凭据的剩余生命周期。目前只适用于oauthholder。

138.sasl.login.refresh.window.factor(per-broker)
登录刷新线程将休眠,直到达到与凭据的生存期相关的指定窗口因子,此时它将尝试刷新凭据。合法值在0.5(50%)和1.0(100%)之间;如果没有指定值,则使用缺省值0.8(80%)。目前只适用于oauthholder。

139.sasl.login.refresh.window.jitter(per-broker)
添加到登录刷新线程睡眠时间中的相对于凭据生命周期的最大随机时基误差。法定值在0至0.25(含25%)之间;如果没有指定值,则使用默认值0.05(5%)。目前只适用于oauthholder。

140.sasl.mechanism.inter.broker.protocol(per-broker)
用于broker间通信的SASL机制。默认是GSSAPI。

141.sasl.server.callback.handler.class(read-only)
实现AuthenticateCallbackHandler接口的SASL服务器回调处理程序类的完全限定名。服务器回调处理程序必须使用监听器前缀和小写的SASL机制名称作为前缀,如listener.name.sasl_ssl.plain.sasl.server.callback.handler.class=com.example.CustomPlainCallbackHandler。

142.security.inter.broker.protocol(read-only)
用于在broker之间通信的安全协议。有效值是:PLAINTEXT,SSL,SASL_PLAINTEXT,SASL_SSL默认是PLAINTEXT。不能同时设置inter.broker.listener.name属性。

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

144.ssl.client.auth(per-broker)
配置kafka broker请求客户端身份验证,默认为none。以下设置是常见的:
    ssl.client.auth=required 如果设置为required,则需要客户端身份验证。
    ssl.client.auth=requested 这意味着客户端身份验证是可选的。与请求不同,如果设置了此选项,客户端可以选择不提供关于自身的身份验证信息。
    ssl.client.auth=none 这意味着不需要客户端身份验证。

145.ssl.enabled.protocols(per-broker)
为SSL连接启用的协议列表。在使用Java 11或更新版本运行时,默认为“TLSv1.2,TLSv1.3”,否则为“TLSv1.2”。对于Java 11的默认值,如果客户端和服务器都支持TLSv1.3,那么它们会更喜欢TLSv1.3,否则会退回到TLSv1.2(假设两者都至少支持TLSv1.2)。这个默认值应该适用于大多数情况。另外,请参阅“ssl.protocol”的配置文档。

146.ssl.key.password(per-broker)
密钥存储文件中私钥的密码。这对于客户机是可选的。

147.ssl.keymanager.algorithm(per-broker)
密钥管理器工厂用于SSL连接的算法。默认值是为Java虚拟机配置的密钥管理器工厂算法SunX509。

148.ssl.keystore.location(per-broker)
密钥存储文件的位置。这对于客户机是可选的,可以用于客户机的双向身份验证。

149.ssl.keystore.password(per-broker)
密钥存储文件的存储密码。这对于客户机是可选的,只有在ssl.keystore.location被配置时才需要。

150.ssl.keystore.type(per-broker)
密钥存储文件的文件格式。这对于客户机是可选的。

151.ssl.protocol(per-broker)
用于生成SSLContext的SSL协议。在使用Java 11或更新版本运行时,默认为“TLSv1.3”,否则为“TLSv1.2”。这个值对于大多数用例来说都是合适的。最近的jvm允许的值是“TLSv1.2”和“TLSv1.3”。旧的jvm可能支持“TLS”、“TLSv1.1”、“SSL”、“SSLv2”和“SSLv3”,但由于已知的安全漏洞,不建议使用它们。使用此配置的默认值和'ssl.enabled'。如果服务器不支持“TLSv1.3”,客户端将降级到“TLSv1.2”。如果这个配置被设置为'TLSv1.2',客户端将不会使用'TLSv1.3',即使它是ssl.enabled中的值之一。协议和服务器只支持“TLSv1.3”。

152.ssl.provider(per-broker)
用于SSL连接的安全提供程序的名称。默认值是JVM的默认安全提供程序。

153.ssl.trustmanager.algorithm(per-broker)
信任管理器工厂用于SSL连接的算法。默认值是PKIX,为Java虚拟机配置的信任管理器工厂算法。

154.ssl.truststore.location(per-broker)
信任存储库文件的位置。

155.ssl.truststore.password(per-broker)
信任存储文件的密码。如果没有设置密码,仍然可以访问信任存储库,但是禁用了完整性检查。

156.ssl.truststore.type(per-broker)
信任存储区文件的文件格式,默认JKS。

157.zookeeper.clientCnxnSocket(read-only)
当使用TLS连接到ZooKeeper时通常设置为org.apache.zookeeper.ClientCnxnSocketNetty,但是可以通过设置同名zookeeper.clientCnxnSocket的系统属性来覆盖任何显式值。

158.zookeeper.ssl.client.enable(read-only)
设置客户端在连接到ZooKeeper时使用TLS,默认值false,可以通过设置zookeeper.client.secure系统属性的显式值覆盖任何值(注意不同的名称)。如果两者都没有设置,则默认为false;如果为true,则zookeeper.clientCnxnSocket(通常是org.apache.zookeeper.ClientCnxnSocketNetty)必须设置。同时被设置的还可能包括zookeeper.ssl.cipher.suites, zookeeper.ssl.crl.enable, zookeeper.ssl.enabled.protocols, zookeeper.ssl.endpoint.identification.algorithm, zookeeper.ssl.keystore.location, zookeeper.ssl.keystore.password, zookeeper.ssl.keystore.type, zookeeper.ssl.ocsp.enable, zookeeper.ssl.protocol, zookeeper.ssl.truststore.location, zookeeper.ssl.truststore.password, zookeeper.ssl.truststore.type

159.zookeeper.ssl.keystore.location(read-only)
当使用带有到ZooKeeper的TLS连接的客户端证书时,密钥存储库的位置,可以通过设置zookeeper.ssl.keyStore.location系统属性覆盖任何显式值(注意驼峰法)。

160.zookeeper.ssl.keystore.password(read-only)
当使用带有到ZooKeeper的TLS连接的客户端证书时密钥存储库密码,可以通过设置zookeeper.ssl.keystore.password系统属性覆盖任何显式值(注意驼峰法)。请注意,ZooKeeper不支持与密钥库密码不同的密钥密码,因此请确保将密钥库中的密钥密码设置为与密钥库密码相同;否则,对Zookeeper的连接尝试将失败。

161.zookeeper.ssl.keystore.type(read-only)
当使用带有到ZooKeeper的TLS连接的客户端证书时,使用密钥存储库类型,可以通过设置zookeeper.ssl.keystore.type系统属性覆盖任何显式值(注意驼峰法)。默认值为null,意味着将根据密钥存储库的文件名扩展名自动检测类型。

162.zookeeper.ssl.truststore.location(read-only)
使用TLS连接到ZooKeeper时信任存储的位置,可以通过设置zookeeper.ssl.truststore.location系统属性覆盖任何显式值(注意驼峰法)。

163.zookeeper.ssl.truststore.password(read-only)
使用TLS连接ZooKeeper时信任存储密码,可以通过设置zookeeper.ssl.truststore.password系统属性覆盖任何显式值(注意驼峰法)。

164.zookeeper.ssl.truststore.type(read-only)
使用TLS连接到ZooKeeper时信任存储类型,可以通过设置zookeeper.ssl.truststore.type系统属性覆盖任何显式值(注意驼峰法)。默认值为null意味着将根据信任存储库的文件名扩展自动检测该类型。

165.alter.config.policy.class.name(read-only)
用于验证的alter configs策略类。这个类应该实现org.apache.kafka.server.policy.AlterConfigPolicy接口。

166.alter.log.dirs.replication.quota.window.num(read-only)
为alter log dirs复制配额在内存中保留的样本数量,默认值为11。

167.alter.log.dirs.replication.quota.window.size.seconds(read-only)
每个示例对于alter log dirs复制配额的时间跨度,默认为1秒。

168.authorizer.class.name(read-only)
实现sorg.apache.kafka.server.authorizer.Authorizer接口的类的完全限定名,broker将使用该实现类进行授权。这个配置还支持实现已被弃用的以前用于授权kafka.security.auth.Authorizer的接口。

169.client.quota.callback.class(read-only)
实现ClientQuotaCallback接口的类的完全限定名,用于确定应用于客户机请求的配额限制。默认情况下,或应用存储在ZooKeeper中的配额。对于任何给定的请求,都会应用与会话的用户主体和请求的客户机id匹配的最特定的配额。

170.connection.failed.authentication.delay.ms(read-only)
身份验证失败时关闭连接的延迟,默认100毫秒:这是身份验证失败时关闭连接的延迟时间(以毫秒为单位)。该配置必须为小于connections.max.idle.ms防止连接超时。

171.create.topic.policy.class.name(read-only)
应用于验证的create topic策略类。这个类应该实现org.apache.kafka.server.policy.CreateTopicPolicy接口。

172.delegation.token.expiry.check.interval.ms(read-only)
扫描间隔以删除过期的委托令牌,默认3600000毫秒,即1小时。

173.kafka.metrics.polling.interval.secs(read-only)
可以在kafka.metrics.reporters中使用的度量轮询间隔(以秒为单位)的实现,默认10秒。

174.kafka.metrics.reporters(read-only)
用作Yammer度量自定义报告器的类列表。自定义报告器应该实现kafka.metrics.KafkaMetricsReporter特征。如果客户端希望在定制报告器上公开JMX操作,那么定制报告器需要另外实现一个扩展kafka.metrics.KafkaMetricsReporterMBean特性,同时注册的MBean符合标准MBean约定。

175.listener.security.protocol.map(per-broker)
在侦听器名称和安全协议之间映射,默认为PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL。为了使同一个安全协议能够在多个端口或IP中使用,必须定义这一点,例如,内部和外部通信可以分离,即使两者都需要SSL,具体地说,用户可以用名称内部和外部定义监听器,这个属性为:'INTERNAL:SSL,EXTERNAL:SSL',键和值用冒号分隔,映射项用逗号分隔。每个侦听器名称应该只在映射中出现一次。可以为每个侦听器配置不同的安全(SSL和SASL)设置,方法是在配置名中添加一个规范化的前缀(侦听器名称是小写的),例如,要为内部监听器设置不同的密钥存储,那么就需要设置一个名为listener.name.internal.ssl.keystore.location的配置。如果没有设置监听器名称的配置,该配置将退回到通用配置(即ssl.keystore.location)。

176.log.message.downconversion.enable(cluster-wide)
此配置控制是否启用消息格式的向下转换以满足消费请求,默认为true。当设置为false时,broker将不会为希望使用旧消息格式的用户执行向下转换。broker将会以UNSUPPORTED_VERSION错误响应来自这样旧的客户端的消费请求。此配置不适用将可能需要的任何消息格式向下转换复制到followers。

177.metric.reporters(cluster-wide)
用作度量报告器的类列表。实现org.apache.kafka.common.metrics.MetricsReporter接口允许插入将被通知新度量创建的类。JmxReporter一直包含用来注册JMX统计信息。

178.metrics.num.samples(read-only)
计算指标而维护的样本数量,默认为2。

179.metrics.recording.level(read-only)
度量标准的最高记录级别,默认info,可选项为INFO, DEBUG。

180.metrics.sample.window.ms(read-only)
度量样本计算结束的时间窗口,默认30000毫秒。

181.password.encoder.cipher.algorithm(read-only)
用于动态配置密码编码的密码算法,默认为AES/CBC/PKCS5Padding。

182.password.encoder.iterations(read-only)
用于编码动态配置的密码的迭代计数,默认4096,最小1024。

183.password.encoder.key.length(read-only)
用于对动态配置的密码进行编码的密钥长度,默认128,最小为8。

184.password.encoder.keyfactory.algorithm(read-only)
用于动态配置密码编码的SecretKeyFactory算法。如果可用,默认是PBKDF2WithHmacSHA512,否则是PBKDF2WithHmacSHA1。

185.quota.window.num(read-only)
保留在内存中用于客户端配额的样本数量,默认11。

186.quota.window.size.seconds(read-only)
客户端配额的每个示例的时间跨度,默认1秒。

187.replication.quota.window.num(read-only)
保留在内存中用于复制配额的样本数量,默认为11。

188.replication.quota.window.size.seconds(read-only)
每个示例的复制配额时间跨度,默认1秒。

189.security.providers(read-only)
可配置创建器类的列表,每个创建器类返回实现安全算法的提供程序,需要实现org.apache.kafka.common.security.auth.SecurityProviderCreator接口。

190.ssl.endpoint.identification.algorithm(per-broker)
使用服务器证书验证服务器主机名的端点识别算法,默认https。

191.ssl.principal.mapping.rules(read-only)
从客户端证书的专有名称到短名称的映射规则列表。规则将按顺序计算,第一个匹配主体名称的规则将用于将其映射为短名称,列表中以后的任何规则都将被忽略。默认情况下,X.500证书的专有名称将是主体,默认值采用DEFAULT。注意,如果principal.builder.class配置提供了KafkaPrincipalBuilder的扩展,则该配置将被忽略。

192.ssl.secure.random.implementation(per-broker)
用于SSL加密操作的SecureRandom PRNG实现。

193.transaction.abort.timed.out.transaction.cleanup.interval.ms(read-only)
回滚超时事务的时间间隔,默认10000毫秒。

194.transaction.remove.expired.transaction.cleanup.interval.ms(read-only)
删除由于transactional.id.expiration.ms而过期的事务的间隔,默认3600000毫秒,即1小时。

195.zookeeper.ssl.cipher.suites(read-only)
指定在ZooKeeper TLS协商(csv)中使用的已启用密码套件。可以通过设置zookeeper.ssl.ciphersuites系统属性覆盖任何显式值(注意ciphersuites)。默认值null表示已启用的密码套件列表由所使用的Java运行时确定。

196.zookeeper.ssl.crl.enable(read-only)
指定是否在ZooKeeper TLS协议中启用证书撤销列表,默认false。可以通过设置zookeeper.ssl.crl系统属性覆盖任何显式值(注意简写)。

197.zookeeper.ssl.enabled.protocols(read-only)
指定ZooKeeper TLS协商(csv)中启用的协议。可以通过设置zookeeper.ssl.enabledProtocols系统属性覆盖任何显式值(注意驼峰法)。默认值为null意味着启用的协议将是zookeeper.ssl.protocol配置属性。

198.zookeeper.ssl.endpoint.identification.algorithm(read-only)
指定是否在ZooKeeper TLS协商过程中启用主机名验证,使用(不区分大小写)“https”表示ZooKeeper主机名验证是启用的,而显式的空白值表示禁用(禁用仅用于测试目的),默认值HTTPS。可以通过显示设置zookeeper.ssl.hostnameVerification系统属性覆盖任何true或false值(注意不同的名称和值;true表示https, false表示空白)。

199.zookeeper.ssl.ocsp.enable(read-only)
指定是否在ZooKeeper TLS协议中启用在线证书状态协议,默认为false。可以通过设置zookeeper.ssl.ocsp系统属性覆盖任何显式值(注意简写)。

200.zookeeper.ssl.protocol(read-only)
指定在ZooKeeper TLS协商中使用的协议,默认为TLSv1.2。可以通过设置zookeeper.ssl.protocol系统属性覆盖任何显式值。

201.zookeeper.sync.time.ms(read-only)
一个ZK follower与一个ZK leader时间间隔有多久,默认2000毫秒。

通过上面的这些命令,我们可以清楚的了解到那些配置是可以动态修改的,那些配置是只能通过重启才能起作用,接下来我们看下修改broker id为0的日志清理线程的命令:

> bin/kafka-configs.sh --bootstrap-server localhost:9092 --entity-type brokers --entity-name 0 --alter --add-config log.cleaner.threads=2

看下broker id为0的当前动态配置

> bin/kafka-configs.sh --bootstrap-server localhost:9092 --entity-type brokers --entity-name 0 --describe

现在我们删除上面的配置并恢复默认配置

> bin/kafka-configs.sh --bootstrap-server localhost:9092 --entity-type brokers --entity-name 0 --alter --delete-config log.cleaner.threads

对于一些命令它是cluster-wide的,一次修改就可以在整个集群中的所有broker上面起作用,如上面的日志清理线程的命令,我们可以通过下面的方式进行cluster-wide启动:

> bin/kafka-configs.sh --bootstrap-server localhost:9092 --entity-type brokers --entity-default --alter --add-config log.cleaner.threads=2

可以看出上面2个日志清理线程命令不同的地方就在于是否指定了entity-name。
因为配置的定义有多种方式,因此它们之间的定义方式肯定也存在先后顺序,优先级从高到低依次为:

    1.动态的在每个broker上面定义配置,其存储在zookeeper上面;

    2.动态的通过集群方式(cluster-wide)定义的配置,起存储也在zookeeper上面;

    3.通过server.properties定义的配置;

    4.kafka默认提供的配置。

针对于密码密钥的更新,我们只能在server.properties上面配置,每次配置完成后必须重启broker节点才能生效,为了避免新旧密码的解析错误,我们必须通过password.encoder.old.secret配置来先解析以前的密码,然后在通过password.encoder.secret在进行新密码的加解密解析,并且所有的密码信息都会存储在zookeeper中。如果在命令中包含了密码的更新操作,那么在这个命令中我们还必须包含password.encoder.secret的配置,当然还可以提供其他的密码相关配置,如下,我们在broker 0上面更新listener INTERNAL的SSL密钥密码会有以下的命令:

> bin/kafka-configs.sh --zookeeper localhost:2181 --entity-type brokers --entity-name 0 --alter --add-config
  'listener.name.internal.ssl.key.password=key-password,password.encoder.secret=secret,password.encoder.iterations=8192'

其中listener.name.internal.ssl.key.password将会被持久化存储在zookeeper中,其他的2个命令只是会被暂时存储

更新现有的秘钥存储库,其更新是动态更新的,配置名必须以listener前缀listener.name.{listenerName}作为前缀,这样只更新特定listener的密钥存储库配置。只能在每个broker上面单独更新:
    ssl.keystore.type
    ssl.keystore.location
    ssl.keystore.password
    ssl.key.password

需要注意的是如果listener是broker间的listener,则仅当新密钥存储库受到为该listener配置的信任存储库的信任时,才允许更新。对于其他listener,broker不会对密钥存储库执行信任验证。证书必须由签署旧证书的同一证书权威机构签署,以避免任何客户端身份验证失败。

更新SSL truststore也是可以动态更新的在每个broker上面,但是配置名称也必须以listener前缀listener.name.{listenerName}作为前缀,这样只更新特定listener的密钥存储库配置。配置有:
    ssl.truststore.type
    ssl.truststore.location
    ssl.truststore.password

这个注意事项同秘钥存储库的更新。

更新默认的topic配置,它可以针对所有的broker节点有效,配置有:
    log.segment.bytes
    log.roll.ms
    log.roll.hours
    log.roll.jitter.ms
    log.roll.jitter.hours
    log.index.size.max.bytes
    log.flush.interval.messages
    log.flush.interval.ms
    log.retention.bytes
    log.retention.ms
    log.retention.minutes
    log.retention.hours
    log.index.interval.bytes
    log.cleaner.delete.retention.ms
    log.cleaner.min.compaction.lag.ms
    log.cleaner.max.compaction.lag.ms
    log.cleaner.min.cleanable.ratio
    log.cleanup.policy
    log.segment.delete.delay.ms
    unclean.leader.election.enable
    min.insync.replicas
    max.message.bytes
    compression.type
    log.preallocate
    log.message.timestamp.type
    log.message.timestamp.difference.max.ms

其中unclean.leader.election.enable在2.0.0+版本中是动态更新的,在1.1.x中当新的controller被选择时将会有效,我们也可以通过命令进行手动有效,如:

> bin/zookeeper-shell.sh localhost
rmr /controller

日志清理的更新也是可以针对所有broker节点有效的,其配置有:
    log.cleaner.threads
    log.cleaner.io.max.bytes.per.second
    log.cleaner.dedupe.buffer.size
    log.cleaner.io.buffer.size
    log.cleaner.io.buffer.load.factor
    log.cleaner.backoff.ms

更新线程配置也是可以针对所有broker节点有效的,其有效的大小在currentSize/2到currentSize*2之间,currentSize是指broker使用的各种线程池的大小,其配置有:
    num.network.threads
    num.io.threads
    num.replica.fetchers
    num.recovery.threads.per.data.dir
    log.cleaner.threads
    background.threads

更新每个ip/主机的连接数,针对所有broker节点有效的,其配置有:
    max.connections.per.ip
    max.connections.per.ip.overrides

新增和删除listener都可以动态进行,当添加一个新的listener时,listener的安全性配置必须以listener前缀listener.name.{listenerName}被提供。如果新的listener使用SASL,listener的JAAS配置则必须使用JAAS配置属性sasl.jaas.config和前缀机制。在Kafka1.1版本中,broker间listener使用的listener可能不会动态更新,如果要将broker间listener更新为新listener,可以在所有broker上添加新listener,而无需重新启动broker,然后需要滚动重启来更新inter.broker.listener.name。除了新的listener的安全配置,还需要在各个broker上添加以下配置:
    listeners
    advertised.listeners
    listener.security.protocol.map

broker间listener必须使用静态代理配置配置inter.broker.listener.name 或 inter.broker.security.protocol。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐