Amazon MSK 集群的分层存储
分层存储是 Amazon MSK 的低成本存储层,可扩展到几乎无限的存储空间,支持经济高效地构建流数据应用程序。
您可以创建配置有能平衡性能和成本的分层存储的 Amazon MSK 集群。Amazon MSK 将流数据存储在性能优化型主存储层中,直到数据达到 Apache Kafka 主题的保留期限。然后,Amazon MSK 会自动将数据移入新的低成本存储层。
当应用程序开始从分层存储中读取数据时,前几个字节的读取延迟可能会增加。开始按顺序从低成本层读取其余数据时,可能会出现与主存储层类似的延迟。您无需为低成本分层存储预置任何存储,也不需要管理基础设施。您可以存储任意数量的数据,但只需按实际用量付费。此功能与 KIP-405: Kafka Tiered Storage
以下是分层存储的一些功能:
-
您可以扩展到几乎无限的存储空间,不必猜测如何扩展 Apache Kafka 基础设施。
-
您可以在 Apache Kafka 主题中延长数据保留时间,也可以增加主题存储空间,不必增加代理数量。
-
其提供了持续时间更长的安全缓冲区来应对处理中的意外延迟。
-
您可以使用现有的流处理代码和 Kafka API 按确切的生产顺序重新处理旧数据。
-
分区重新平衡速度更快,因为二级存储上的数据不需要跨代理磁盘进行复制。
-
代理和分层存储之间的数据只会在 VPC 内移动,而不会通过互联网进行传输。
-
客户端计算机连接到启用了分层存储的新集群的过程,与连接到未启用分层存储的集群的过程相同。请参阅创建客户端计算机。
Amazon MSK 集群的分层存储要求
-
您必须使用 Apache Kafka 客户端版本 3.0.0 或更高版本来创建启用了分层存储的新主题。要将现有主题过渡到分层存储,您可以重新配置使用低于 3.0.0 的 Kafka 客户端版本(支持的最低 Apache Kafka 版本为 2.8.2.tiered)的客户端计算机来启用分层存储。请参阅 步骤 4:在 Amazon MSK 集群中创建主题。
-
启用了分层存储的 Amazon MSK 集群必须使用 3.6.0 或更高版本或者 2.8.2.tiered。
Amazon MSK 集群的分层存储约束和限制
分层存储存在以下约束和限制:
确保客户端在从 Amazon MSK 中的 remote_tier 读取时未配置为
read_committed
,除非应用程序正在主动使用事务功能。-
分层存储在 Amazon GovCloud(美国)区域不可用。
分层存储仅适用于预置模式集群。
-
分层存储不支持代理大小 t3.small。
-
低成本存储的最短保留期为 3 天。主存储不存在最短保留期。
-
分层存储不支持代理上的多个日志目录(与 JBOD 相关的功能)。
-
分层存储不支持压缩主题。确保所有已开启分层存储的主题已将 cleanup.policy 配置为只能 “删除”。
-
可以为单个主题禁用分层存储,但不能禁用整个集群的分层存储。一旦禁用,就无法再为主题启用分层存储。
如果使用 Amazon MSK 版本 2.8.2.tiered,则只能迁移到另一个支持分层存储的 Apache Kafka 版本。如果不想继续使用支持分层存储的版本,请创建一个新的 MSK 集群并将您的数据迁移到该集群。
-
kafka-log-dirs 工具无法报告分层存储的数据大小。该工具只会报告主存储中日志段的大小。