Amazon Managed Streaming for Apache Kafka 功能

为什么选择 Amazon MSK?

Amazon Managed Streaming for Apache Kafka(Amazon MSK)提供完全托管式 Apache Kafka、Kafka Connect 和 Amazon MSK 复制器。Apache Kafka 是一种分布式数据存储,经过优化,可实时提取和处理流式传输数据。Amazon MSK 可以预置您的集群基础设施、配置您的 Apache Kafka 集群、在服务器出现故障时更换服务器、编排服务器补丁和升级、构建集群以实现高可用性、确保持久地存储和保护数据、设置监控和警报,以及执行扩展以支持负载变化。使用 Amazon MSK,您可以将更多的时间花在开发和运行流式传输事件应用程序上,而不是管理 Apache Kafka 集群。

道路鸟瞰图

可扩展的集成

Amazon MSK 是集成骨干网络,适用于位于数据摄取和处理服务以及微服务应用程序架构中心的现代消息收发和事件驱动型应用程序。可以通过多种方法与其他系统集成,包括各种其他 AWS 服务,从而使应用程序开发变得更简单、更快速。您可以自带连接器,并通过 Amazon MSK Connect 将它部署到完全托管式基础设施上。或者,您也可以从不断扩大的与其他 AWS 服务进行的原生集成清单中进行选择,例如 Amazon S3、Amazon Redshift、适用于 Apache Flink 的亚马逊托管服务以及 AWS Lambda。Amazon MSK 还与 AWS Identity and Access Management(IAM)、AWS Certificate Manager(ACM)和 AWS Key Management Service(AWS KMS)集成,以使客户端能够以安全、经过身份验证和授权的方式访问您的数据。您还可以选择通过 AWS Glue Schema Registry 实施架构治理。

城市景观

与 Apache Kafka 兼容

Amazon MSK 支持 Apache Kafka 的所有开箱即用功能,并在公开发布之后的几周内推出了更高版本的 Apache Kafka。

Amazon MSK 与 Apache Kafka 的开源客户端协议保持完全兼容,因此专为 Apache Kafka 构建的应用程序和工具开箱即可兼容 Amazon MSK,无需对应用程序代码进行更改。

您只需执行几个步骤即可在预置的集群上升级 Apache Kafka 版本,这样即可决定何时利用新版本的 Apache Kafka 中提供的功能和错误修复。Amazon MSK 自动在正在运行的集群上部署版本升级,以便为您保持客户端 I/O 可用性。

选择您自己的集群类型

使用 Amazon MSK 预置,您可以精细控制您的 Apache Kafka 集群。您可以选择代理类型、预置服务器实例、选择所需的存储类型,然后选择所选的 Apache Kafka 版本。您还可以选择何时扩展集群以及将集群扩展到何种规模,以应对工作负载的变化。

Amazon MSK 无服务器可以完全托管您的 Apache Kafka 集群,因此您无需估计工作负载需要多少容量,也不必决定何时根据流量的变化扩展容量。

无需管理服务器

无论您选择哪种集群类型,只需在 AWS 管理控制台中执行几个步骤,即可创建一个完全托管式集群,此集群极具可用性和安全性,并由 Amazon MSK 高级监控和检测系统提供支持,这些系统可以自动维护集群的运行状况。

Apache Kafka 使用 Apache Kafka Raft(KRaft)或 Apache ZooKeeper 进行元数据管理。Amazon MSK 允许您在受支持的 Apache Kafka 版本上以任一模式创建集群。Amazon MSK 还可以免费为您管理这些额外的元数据节点。

多种代理类型

快速代理是 MSK 预置中提供的一种代理。快速代理使 Apache Kafka 更易于管理、能够更经济高效地大规模运行、更具弹性并具有您期望的低延迟。快速代理具有几乎无限的弹性存储容量,不会产生管理开销,可以为每个代理提供高达 3 倍的吞吐量,还可以将扩展速度提高到 20 倍。在 Amazon Managed Streaming for Apache Kafka(MSK)服务中,您还能够以比标准 Apache Kafka 代理最多快 90% 的速度进行恢复。

MSK 预置中的标准代理为配置集群的性能提供了最高的灵活性。您可以从集群的多种配置中进行选择以调整维度,包括可用性、持久性、吞吐量和延迟。在标准代理上,您还可以控制集群的存储配置,并负责管理存储预置和利用率。

存储选项

快速代理包含几乎无限的弹性存储容量,无需进行大小调整、预置或持续容量管理。存储容量会自动扩展以满足您的数据留存需求,您只需为使用的存储付费。

借助分层存储,您可以在 Amazon MSK 中存储几乎无限的数据,而无需预置和管理存储容量。您只需执行几个步骤,即可为现有的集群启用分层存储,并且只按实际使用量付费。您可以先将数据存储在经过性能优化的主存储层中,然后让 Amazon MSK 自动将数据分层到低成本层中,以延长保留时间。所有推出了 Amazon MSK 的 AWS 区域都支持这项功能。要了解如何开始使用分层存储,请访问《Amazon MSK 开发人员指南》。

极具弹性

所有集群都分布在多个(默认数量为三个)可用区中,Amazon MSK 提供了跨这些可用区复制数据的功能,无需额外付费。您的集群可用性还受到 Amazon MSK 服务水平协议的支持,此协议可以保证高达三个 9 的可用性。

Amazon MSK 拥有可快速检测和响应问题的自动化系统。若有组件发生故障,Amazon MSK 会自动进行替换以避免您的应用程序中断运行。我们还可以按需自动部署软件补丁,以确保您的集群及时更新并顺利运行。

MSK 预置中的 Amazon MSK 无服务器和快速代理将实施最佳实践配置,例如三向复制,并为复制和恢复等后台操作预留带宽,这样,您就可以更轻松地实现集群资源的可预测可用性。

使用 Amazon MSK 复制器,您可以设置连续数据复制到另一个区域中的辅助备份集群,这样即可构建极具可用性和容错能力的多区域应用程序,从而提高弹性。您还可以使用 MSK 复制器在不同的地理区域中提供延迟更低的数据访问,或者将数据分发给您的合作伙伴。

高度安全

您的 Apache Kafka 集群在 Amazon MSK 管理的 Amazon Virtual Private Cloud(Amazon VPC)中运行。您自己的 Amazon VPC 中的 Kafka 客户端可以通过 Amazon MSK 在 VPC 中部署的跨账户弹性网络接口私密访问集群。如果您的 Kafka 客户端分布在一个或多个 VPC 或 AWS 账户中,您仍然可以使用多 VPC 私有连接功能私密连接到您的集群。此功能消除了由于自我管理 AWS PrivateLink 解决方案而产生的运营开销,并随着 Amazon MSK 集群的扩展进行无缝扩展,这样无需进行其他配置更改即可保持与集群的私有连接。多 VPC 私有连接还消除了管理与其他 VPC 连接解决方案相关的非重叠 IP、复杂对等和路由表时面临的挑战。 多 VPC 私有连接功能允许在连接的 VPC 之间重叠 IP。

IAM 访问控制是一个免费的安全性选项,它可以使用 IAM 角色或用户策略来控制访问权限,从而简化集群身份验证和 Apache Kafka API 授权。使用 IAM 访问控制,您不再需要构建和运行一次性的访问管理系统来控制 Apache Kafka 的客户端身份验证和授权。系统默认使用最低权限保护您的集群。对于预置的集群,您还可以对 Apache Kafka 访问控制列表 (ACL) 使用 Simple Authentication and Security Layer (SASL)/Salted Challenge Response Authentication Mechanism (SCRAM) 或相互 Transport Layer Security (TLS) 身份验证来控制客户端访问。

Amazon MSK 无需特殊配置或第三方工具就可以加密静态数据。对于预置的集群,可以使用默认的 AWS KMS 密钥或您自己的密匙对所有静态数据进行加密。您还可以通过 TLS 在代理之间以及您的集群上的客户端与代理之间加密传输中数据。对于无服务器集群,根据原定设置,使用服务托管式密钥加密所有静态数据,通过 TLS 加密所有传输中数据。

Amazon MSK 提供一种选项,可用于通过互联网安全地连接到运行 Apache Kafka 2.6.0 或更高版本的 Amazon MSK 集群的代理。通过启用公开访问,私有 Amazon VPC 外部的经过授权的客户端可以将加密数据传入和传出特定的 Amazon MSK 集群。

可扩展

您可以添加更多代理或在几分钟内迁移到更大的代理实例,以扩展 MSK 预置集群,而无需停机。同样,您可以移除代理或迁移到大小更小的代理实例,以缩减集群容量。

Amazon MSK 无服务器集群会自动调整可供工作负载使用的计算和存储资源,以响应应用程序的吞吐量需求。

Amazon MSK 与 Cruise Control 集成,后者是一款适用于 Apache Kafka 的常用开源工具,可以代表您自动管理分区分配。对于无服务器集群,Amazon MSK 自动为您管理分区分配。

您可以使用 AWS 管理控制台或 AWS Command Line Interface (AWS CLI) 无缝纵向扩展每个代理预置的存储容量,以适应存储需求的变化。您还可以创建自动扩展策略来自动扩展您的存储,以满足不断增长的串流需求。

可配置

使用 Amazon MSK,您可以选择您需要的集群可配置程度。快速代理预先配有 Amazon MSK 推荐的默认最佳实践。这样就提供了开箱即用的最佳可用性、持久性和吞吐量性能。您可以自定义精选配置,以满足工作负载的特定需求。另一方面,使用标准代理,您可以灵活地修改 30 多种不同的集群配置。这样,您就可以根据您的确切要求定制可用性、性价比和整体集群行为。您还可以访问 Kafka 的全套主题级动态配置,从而帮助您进一步完善体验。有关更多信息,请参阅自定义 MSK 配置文档。

可观测

您可以使用 CloudWatch 显示和监控关键指标,以了解并维持流式传输应用程序的性能。提供默认的一组超过 50 个的指标,无需额外付费。您还可以启用增强的代理级和主题级监控,以解决特定的问题。增强指标按标准 CloudWatch 费率进行计费。

借助 Prometheus 的开放监控功能,您可以使用 DatadogLensesNew RelicSumo Logic 或 Prometheus 服务器等解决方案监控 Amazon MSK,并轻松将您现有的监控控制面板迁移到 Amazon MSK。要了解更多信息,请参阅 Prometheus 的开放监控功能文档。

使用代理日志,您可以对 Apache Kafka 应用程序进行故障排除并分析它们与 MSK 集群的通信。您可以将 Apache Kafka 代理日志传输到下面的一种或多种目的地:Amazon CloudWatch Logs、Amazon Simple Storage Service(Amazon S3)和 Amazon Data Firehose。您还可以使用 AWS CloudTrail 记录 Amazon MSK API 调用。

已深度集成

我们在 Amazon MSK 中提供了多种 AWS 集成。这些集成包括:

  •  适用于 Apache Kafka 和服务水平 API 访问控制的 AWS Identity and Access Management(IAM)
  • 适用于 Apache Flink 的亚马逊托管服务,用于运行完全托管式 Apache Flink 应用程序,以便在 Apache Kafka 内处理流式传输数据
  • 适用于 Apache Flink Studio 的亚马逊托管服务,用于使用 Apache Flink SQL 运行交互式流式传输 SQL 和长时间运行的 SQL 作业
  • AWS Glue Schema Registry,用于集中控制和演变架构
  • AWS IoT Core,用于将物联网事件流式传输到 Amazon MSK
  • AWS Database Migration Service (AWS DMS),用于更改数据捕获和分析
  • 适用于私有客户端连接和网络隔离的 Amazon VPC
  • 适用于静态加密的 AWS KMS
  • AWS Certificate Manager Private Certificate Authority,以便相互 TLS 客户端身份验证
  • AWS Secrets Manager,以便保护 SASL/SCRAM 密钥的存储和管理
  • AWS CloudFormation,用于以代码形式部署 Amazon MSK
  • Amazon CloudWatch,适用于集群、代理、主题、使用者和分区级指标