亚马逊 MSK 的默认配置 - Amazon Managed Streaming for Apache Kafka
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

亚马逊 MSK 的默认配置

当您创建 MSK 集群但未指定自定义 MSK 配置时,Amazon MSK 会创建并使用默认配置,其值如下表所示。对于不在此表中的属性,亚马逊 MSK 使用与您的 Apache Kafka 版本相关的默认值。有关这些默认值的列表,请参阅 Apache Kafka 配置

默认配置值
名称 描述 非分层存储集群的默认值 启用分层存储的群集的默认值
allow.everyone.if.no.acl.found 如果没有与特定资源匹配的资源模式,则该资源没有关联的 ACL。在这种情况下,如果您将此属性设置为true,所有用户都可以访问资源,而不仅仅是超级用户。 true true
auto.create.topics.enable 在服务器上启用主题的自动创建。 false false
auto.leader.rebalance.enable 启用自动领导平衡。如有必要,后台线程会定期检查并启动领导者平衡。 true true
default.replication.factor 自动创建的主题的默认复制因子。 3 用于 3 个可用区中的集群,2 个可用区中的集群。 3 用于 3 个可用区中的集群,2 个可用区中的集群。

local.retention.bytes

删除旧分段之前分区的本地日志段的最大大小。如果您未设置此值,则使用 log.retention.bytes 中的值。有效值应始终小于或等于 log.retention.bytes 值。默认值为 -2 表示对本地保留没有限制。这相当于保留.ms/bytes 设置为 -1。local.retention.ms 和 local.retention.bytes 与 local.retention.bytes 类似,因为它们用于确定日志段应在本地存储中保留多长时间。现有的 log.retention.* 配置是主题分区的保留配置。这包括本地和远程存储。有效值:[-2; +Inf] 中的整数

-2 表示无限制 -2 表示无限制

local.retention.ms

删除前保留本地日志段的毫秒数。如果您未设置此值,亚马逊 MSK 将使用 log.retention.ms 中的值。有效值应始终小于或等于 log.retention.bytes 值。默认值为 -2 表示对本地保留没有限制。这相当于保留.ms/bytes 设置为 -1。

local.retention.ms 和 local.retention.bytes 的值与 log.retention.bytes 类似。MSK 使用此配置来确定日志段应在本地存储中保留多长时间。现有的 log.retention.* 配置是主题分区的保留配置。这包括本地和远程存储。有效值是大于 0 的整数。
-2 表示无限制 -2 表示无限制

log.message.timestamp.diference.ma

代理收到消息时的时间戳与消息中指定的时间戳之间允许的最大差异。如果 log.message.timestamp.tyCreateTime,如果时间戳的差异超过此阈值,则消息将被拒绝。如果 log.message.timestamp.type= 则忽略此配置LogAppendTime。允许的最大时间戳差不应大于 log.retention.ms,以避免不必要地频繁滚动日志。 9223372036854775807 86400000 适用于 Kafka 2.8.2.tiered
log.segment.bytes 单个日志文件的最大大小。 1073741824 134217728
min.insync.replicas

当生产者将 acks 的值(生产者从 Kafka 经纪人那里获得的确认信息)设置为时"all"(或"-1"),min.insync.replicas 中的值指定了必须确认写入操作才能认为写入成功的最小副本数量。如果此值未达到此最小值,则生产者会引发异常(要么NotEnoughReplicas要么NotEnoughReplicasAfterAppend)。

当您同时使用 min.insync.replicas 和 acks 中的值时,可以强制执行更高的耐久性保证。例如,您可以创建一个重复因子为 3 的主题,将 min.insync.replicas 设置为 2,然后使用 acks 生成"all"。这可确保在大多数副本未收到写操作时,创建器将引发异常。

2 用于 3 个可用区中的集群,1 个用于 2 个可用区域中的集群。 2 用于 3 个可用区中的集群,1 个用于 2 个可用区域中的集群。
num.io.threads 服务器用于生成请求的线程数,其中可能包括磁盘 I/O。 8 最大 (8, vCPU) 其中 vCPU 取决于代理的实例大小
num.network.threads 服务器用于接收来自网络的请求和向网络发送响应的线程数。 5 max (5, vCPU/2) 其中 vCPU 取决于代理的实例大小
num.partitions 每个主题的默认日志分区数。 1 1
num.replica.fetchers 用于从源代理复制消息的 fetcher 线程数。如果增加此值,则可以提高关注代理中的 I/O 并行程度。 2 max (2, vCPU/4) 其中 vCPU 取决于代理的实例大小

remote.log.msk.disable.policy

与 remote.storage.enable 一起使用以禁用分层存储。将此策略设置为 “删除”,表示在将 remote.storage.enable 设置为 false 时,分层存储中的数据将被删除。

不适用 删除
remote.log.reader.threader 远程日志读取器线程池大小,用于调度任务以从远程存储中提取数据。 不适用 max (10, vCPU * 0.67) 其中 vCPU 取决于代理的实例大小

remote.storage.enable

如果设置为 true,则为主题启用分层(远程)存储。如果设置为 false 且 remote.log.msk.disable.policy 设置为 “删除”,则禁用主题级分层存储。禁用分层存储时,将从远程存储中删除数据。当您为某个主题禁用分层存储时,您无法再次启用分层存储。 false 真实
replica.lag.time.max.ms 如果跟踪器没有发送任何提取请求,或者至少在此毫秒数内没有使用到领导的日志结束偏移量,则领导会从 ISR 中删除追随者。 30000 30000

retention.ms

必填字段。最短时间为 3 天。没有默认值,因为该设置是强制性的。

亚马逊 MSK 使用 retention.ms 值和 local.retention.ms 来确定数据何时从本地存储移动到分层存储。local.retention.ms 值指定何时将数据从本地存储移动到分层存储。retention.ms 值指定何时从分层存储中删除数据(即从集群中删除)。有效值:[-1; +Inf] 中的整数

最低 259,200,000 毫秒(3 天)。-1 表示无限保留。 最低 259,200,000 毫秒(3 天)。-1 表示无限保留。
socket.receive.buffer.bytes 套接字服务器套接字的 SO_RCVBUF 缓冲区。如果值为 -1,则使用操作系统默认值。 102400 102400
socket.request.max.bytes 套接字请求中的最大字节数。 104857600 104857600
socket.send.buffer.bytes 套接字服务器套接字的 SO_SNDBUF 缓冲区。如果值为 -1,则使用操作系统默认值。 102400 102400
unclean.leader.election.enable 表示您是否希望将不在 ISR 集合中的副本作为领导者作为最后的手段,即使这可能会导致数据丢失。 真实 false
zookeeper.session.timeout.ms

阿帕奇ZooKeeper会话超时(以毫秒为单位)。

18000 18000
zookeeper.set.acl 将客户端设置为使用安全 ACL。 false false

有关如何指定自定义配置值的信息,请参见自定义 MSK 配置