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

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

Amazon MSK 的默认配置

在未指定自定义 MSK 配置的情况下创建 MSK 集群时,Amazon MSK 会创建默认配置,并将此配置与下表中显示的值结合使用。对于不在此表中的属性,Amazon 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 表示位于 2 个可用区中的集群。 3 表示位于 3 个可用区中的集群,2 表示位于 2 个可用区中的集群。

local.retention.bytes

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

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

local.retention.ms

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

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

log.message.timestamp.difference.max.ms

代理收到消息时的时间戳与消息中指定的时间戳之间允许的最大差异。如果 log.message.timestamp.type=CreateTime,则如果时间戳的差异超过此阈值,则消息将被拒绝。如果 log.message.timestamp.type LogAppendTime =,则忽略此配置。允许的最大时间戳差异不应大于 log.retention.ms,以避免不必要的频繁日志滚动。 9223372036854775807 Kafka 2.8.2. 分层 86400000
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 max(8, vCPUs),其中 vCPU 取决于代理的实例大小
num.network.threads 服务器用于接收来自网络的请求并向网络发送响应的线程数量。 5 max(5, vCPUs / 2),其中 vCPU 取决于代理的实例大小
num.partitions 每个主题的默认日志分区数。 1 1
num.replica.fetchers 用于从源代理复制消息的提取器线程数量。如果增加此值,则可以增加跟踪器代理中的 I/O 并行度。 2 max(2, vCPUs / 4),其中 vCPU 取决于代理的实例大小

remote.log.msk.disable.policy

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

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

remote.storage.enable

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

retention.ms

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

Amazon MSK 使用 retention.ms value 与 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 集中的副本作为最后手段充当领导,即使这可能会导致数据丢失。 true false
zookeeper.session.timeout.ms

Apache ZooKeeper 会话超时时间(以毫秒为单位)。

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

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