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

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

预置存储吞吐量

Amazon MSK 代理会将数据保存在存储卷上。当生成器向集群写入数据、在代理之间复制数据以及使用器读取不在内存中的数据时,都会消耗存储 I/O。卷存储吞吐量是指是向存储卷写入数据和从存储卷读取数据的速率。预置存储吞吐量是指可为集群中的代理指定该速率的能力。

您可以为代理kafka.m5.4xlarge大小或更大且存储容量为 10 GiB 或更大的集群指定预配置吞吐速率(以 MiB 每秒 MiB 为单位)。可以在创建集群期间指定预置吞吐量。您也可以为处于 ACTIVE 状态的集群启用或禁用预置吞吐量。

吞吐量瓶颈

代理吞吐量出现瓶颈的原因有很多:卷吞吐量、Amazon EC2 到 Amazon EBS 的网络吞吐量以及 Amazon EC2 的出口吞吐量。您可以启用预置存储吞吐量来调整卷吞吐量。不过,代理吞吐量限制可能是由 Amazon EC2 到 Amazon EBS 的网络吞吐量和 Amazon EC2 出口吞吐量造成。

Amazon EC2 出口吞吐量受使用器组数量和各使用器组使用器数量的影响。此外,对于较大的代理规模,Amazon EC2 到 Amazon EBS 的网络吞吐量和 Amazon EC2 的出口吞吐量都更高。

对于 10GiB 或更大的卷大小,您可以将存储吞吐量预置为每秒 250MiB 或更高值。默认为每秒 250MiB。要预配置存储吞吐量,必须选择代理大小 kafka.m5.4xlarge 或更大(或 kafka.m7g.2xlarge 或更大),并且可以指定最大吞吐量,如下表所示。

经纪人规模 最大存储吞吐量(MiB/s)
kafka.m5.4xlarge 593
kafka.m5.8xlarge 850
kafka.m5.12xlarge 1000
kafka.m5.16xlarge 1000
kafka.m5.24xlarge 1000
kafka.m7g.2xlarge 312.5
kafka.m7g.4xlarge 625
kafka.m7g.8xlarge 1000
kafka.m7g.12xlarge 1000
kafka.m7g.16xlarge 1000

测量存储吞吐量

您可以使用 VolumeReadBytesVolumeWriteBytes 指标来衡量集群的平均存储吞吐量。使用这两个指标的总和得出以字节为单位的平均存储吞吐量。要获取集群的平均存储吞吐量,请将这两个指标设置为 SUM,将时长设置为 1 分钟,然后使用以下公式。

Average storage throughput in MiB/s = (Sum(VolumeReadBytes) + Sum(VolumeWriteBytes)) / (60 * 1024 * 1024)

有关 VolumeReadBytesVolumeWriteBytes 指标的信息,请参阅 PER_BROKER 级别监控

配置更新

您可以在开启预置吞吐量之前或之后更新 Amazon MSK 配置。不过,要想看到所需的吞吐量,您必须先执行这两个操作:更新 num.replica.fetchers 配置参数和开启预置吞吐量。

在默认 Amazon MSK 配置中,num.replica.fetchers 的值为 2。要更新 num.replica.fetchers,您可以使用下表中的建议值。这些值仅供参考。建议您根据自己的用例调整这些值。

经纪人规模 num.replica.fetchers
kafka.m5.4xlarge 4
kafka.m5.8xlarge 8
kafka.m5.12xlarge 14
kafka.m5.16xlarge 16
kafka.m5.24xlarge 16

更新后的配置可能无法在 24 小时内生效,并且如果源卷未得到充分利用,则可能需要更长时间。不过,在迁移期间,过渡卷的性能至少等于源存储卷的性能。如果 1TiB 卷得到充分利用,通常约需六小时就能迁移到更新后的配置。

使用配置存储吞吐量 Amazon Web Services Management Console

  1. 登录并打开亚马逊 MSK 控制台,网址为 https://console.aws.amazon.com/msk/home?region=us-east-1#/home/。 Amazon Web Services Management Console

  2. 选择创建集群

  3. 选择自定义创建

  4. 指定集群的名称。

  5. 存储部分中选择启用

  6. 为各代理的存储吞吐量选择一个值。

  7. 选择 VPC、可用区、子网和安全组。

  8. 选择下一步

  9. 安全步骤的底部,选择下一步

  10. 监控和标记步骤的底部,选择下一步

  11. 检查集群设置,然后选择创建集群

使用配置存储吞吐量 Amazon CLI

本节举例说明如何使用创建启用了 Amazon CLI 预配置吞吐量的集群。

  1. 复制以下 JSON 并将其粘贴到文件中。将子网 ID 和安全组 ID 占位符替换为您账户的值。为文件 cluster-creation.json 命名并保存文件。

    { "Provisioned": { "BrokerNodeGroupInfo":{ "InstanceType":"kafka.m5.4xlarge", "ClientSubnets":[ "Subnet-1-ID", "Subnet-2-ID" ], "SecurityGroups":[ "Security-Group-ID" ], "StorageInfo": { "EbsStorageInfo": { "VolumeSize": 10, "ProvisionedThroughput": { "Enabled": true, "VolumeThroughput": 250 } } } }, "EncryptionInfo": { "EncryptionInTransit": { "InCluster": false, "ClientBroker": "PLAINTEXT" } }, "KafkaVersion":"2.8.1", "NumberOfBrokerNodes": 2 }, "ClusterName": "provisioned-throughput-example" }
  2. 从上一步中保存 JSON 文件的目录中运行以下 Amazon CLI 命令。

    aws kafka create-cluster-v2 --cli-input-json file://cluster-creation.json

使用 API 预置存储吞吐量

要在创建集群时配置预配置的存储吞吐量,请使用 CreateClusterV 2。