亚马逊的默认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 如果没有资源模式与特定资源匹配,则该资源没有关联ACLs。在本例中,如果将此属性设置为 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

删除之前保留本地日志段的毫秒数。如果您未设置此值,亚马逊将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),其中 vCPUs 取决于代理的实例大小
num.network.threads 服务器用来接收来自网络的请求和向网络发送响应的线程数。 5 max (5, vCPUs /2),其中 vCPUs 取决于代理的实例大小
num.partitions 每个主题的默认日志分区数。 1 1
num.replica.fetchers 用于从源代理复制消息的提取器线程数量。如果增加此值,则可以增加跟踪器代理中的 I/O 并行度。 2 max (2, vCPUs /4),其中 vCPUs 取决于代理的实例大小

remote.log.msk.disable.policy

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

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

remote.storage.enable

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

retention.ms

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

亚马逊MSK使用带有 local.retention.ms 的 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 设置为安全使用的客户端ACLs。 false false

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