Managed Service for Apache Kafka 概览

Managed Service for Apache Kafka 是一项 Google Cloud 服务,可帮助您运行安全且可伸缩的开源 Apache Kafka 集群。本页面简要介绍了该服务可为您自动执行哪些操作以及简化哪些流程。如需详细了解 Apache Kafka,请访问 Apache Kafka 网站。

简单的容量调整和伸缩

创建 Managed Service for Apache Kafka 集群时,您需要指定集群的总 vCPU 数量和内存。该服务会根据 vCPU 数量自动预配相应数量的代理。

为了满足客户的需求,您可以监控资源利用率,并在需要时通过更新 vCPU 数量和内存来扩缩集群。扩容集群可能会导致预配额外的代理。如果增加集群规模需要添加新的代理,该服务可以自动在代理之间重新平衡分区。

如需了解如何选择集群大小,请参阅规划 Kafka 集群的大小。

存储管理

Managed Service for Apache Kafka 使用分层存储。 分层存储结合了两个存储层级:

  • 少量快速本地存储,以预配置的附加到代理的磁盘的形式提供。
  • 几乎无限的远程存储空间。远程存储的费用较低,且无需预先配置。

分层存储系统可让您存储大量数据,同时降低磁盘可用空间不足的风险。与仅使用本地存储相比,它还可以节省费用。

您有责任为各个主题设置保留时间,以控制费用或满足数据保留政策的要求。

灵活的网络

该服务可让您安全地从任何 VPC 访问集群。这包括来自多个 VPC、项目和区域的访问。

如需为集群配置网络,您需要提供集群可访问的子网集。该服务会为每个子网中的引导服务器和代理预配专用 IP 地址。它还会为每个 IP 地址设置带有网址的专用 Cloud DNS。引导服务器具有负载均衡器,因此每个集群只有一个引导网址。所有 VPC 中的网址都相同,因此客户端配置在各个环境中保持一致。

这种灵活性得益于 Private Service Connect (PSC)。为集群分配的每个 IP 地址都需要一个 PSC 端点。系统会自动配置端点。

保护集群

该服务提供以下集群安全功能:身份验证、授权、加密、修补和资源隔离。它还禁止未经身份验证和未加密的连接和存储。

身份验证

该服务支持两种身份验证方法:简单身份验证和安全层 (SASL) 以及双向 TLS (mTLS)。mTLS 身份验证适用于 2025 年 6 月 24 日之后创建的集群。与受管集群的所有连接都使用 SASL 或 mTLS 通过作为 IAM 身份的主账号进行身份验证。使用 SASL 时,支持将人员账号、服务账号和联合账号作为主体。

该服务不支持其他协议,包括 SASL/GSSAPI、SASL/SCRAM-SHA-256 和 SASL/SCRAM-SHA-512。该服务也不允许未经身份验证的连接。

授权

该服务采用分层授权方法。IAM 控制集群管理操作,例如创建、更新和删除资源。经过身份验证的主体的授权取决于所用的方法:

  • SASL:使用 IAM 的主体通过Google Cloud IAM 角色绑定或集群上的 Kafka ACL 获得授权。如需了解详情,请参阅配置 SASL 身份验证。

  • mTLS:通过 mTLS 进行身份验证的主体通过 Kafka ACL 获得授权。如需了解详情,请参阅配置 mTLS 身份验证。

您可以使用 Google Cloud 工具或第三方 Kafka 工具管理 Kafka ACL。 如需详细了解如何配置 IAM 和 Kafka ACL,请参阅使用 IAM 和 Kafka ACL 进行访问权限控制。

加密

必须进行加密。与集群的所有连接都必须使用 TLS。代理提供的 TLS 证书由 Public Certificate Authority 签名。存储的数据始终处于加密状态。选择是使用 Google 管理的加密密钥还是客户管理的加密密钥 (CMEK) 来加密静态数据。

修补

服务团队会跟踪在开源代码中发现的安全漏洞。当该服务发现漏洞时,会自动修补您的集群。

资源隔离

该服务的另一项安全功能是资源隔离。此托管服务会在租户项目中部署集群,这些集群位于无法通过公共 IP 地址访问的专用 VPC 中。您的每个项目都有一个专用租户项目,其中包含一个专用服务代理账号。这有助于限制授予服务的访问权限范围。

架构注册表

为了简化生产者和消费者之间的协调,Managed Service for Apache Kafka 包含一个架构注册表 API。由服务提供的注册表充当在应用之间共享的架构的存储库。

该服务实现了 Confluent Schema Registry REST API,有助于与现有 Kafka 应用集成。支持 Apache Avro 和 Protocol Buffer (Protobuf) 协议缓冲区格式。不支持 JSON。

Managed Service for Apache Kafka 还提供用于管理架构注册表和架构的管理 API 和工具集。该工具集包括Google Cloud 控制台、gcloud CLI 和客户端库。

如需详细了解架构注册表,请参阅架构注册表概览。

使用 Kafka Connect 进行数据集成

Managed Service for Apache Kafka 通过 Kafka Connect 简化了数据集成。Kafka Connect 提供了多个托管在 Connect 集群中的内置连接器插件。这些连接器用于迁移、备份、灾难恢复、高可用性和数据集成。借助这些连接器,您可以将 Managed Service for Apache Kafka 集群连接到各种系统,包括其他 Kafka 部署和 Google Cloud 服务(如 BigQuery、Cloud Storage 和 Pub/Sub)。Kafka Connect 提供可伸缩的可靠数据集成,具有较低的运营开销,并集成了监控和日志记录功能。

如需详细了解 Kafka Connect,请参阅 Kafka Connect 概览。

高可用性集群

该服务的目的是为任务关键型应用提供区域级集群。具体而言,该服务可保护您免受单个可用区或代理故障的影响。

为实现此目标,所有集群均以支持机架的三可用区配置进行预配。默认主题配置至少需要三个副本。 机架感知功能可确保在不同可用区中创建副本。默认的同步副本数下限为 2。这意味着您的集群可以容忍可用区或代理的完全丢失。

如果代理因软件、硬件或网络故障而发生故障,系统会自动替换该代理。当服务检测到代理失败时,它会自动重启代理,必要时会在另一台机器上重启。当代理可用后,Apache Kafka 会将该代理集成到集群中。如果整个可用区都发生故障,则可能无法创建新的代理。 不过,只要其他两个可用区保持可用,集群就会继续运行。

除了这些特定功能之外,越来越多的内部工具和流程会主动维护服务、Apache Kafka 代码和更新的健康状况。数据和元数据备份在多个级别进行维护,使服务能够从许多人为错误和软件故障中恢复。

该服务无法防范区域或双可用区故障。对于需要此级别保护的应用,我们建议运行两个单独的区域集群。您可以使用 Kafka Connect 中的 MirrorMaker 2.0 等工具在两个集群之间同步数据。

适合您的管理风格的工具

该服务旨在提供一套完整的工具,以满足您在集群管理和问题排查方面的需求。这包括用于管理、监控和日志记录的工具。

Managed Service for Apache Kafka 以 Google Cloud API 的形式公开。这意味着您可以使用 REST 和 gRPC API 管理集群和集群资源。这些 API 提供多个客户端和接口,包括

  • 如果您偏好使用基础设施即代码方法,则可以使用 Terraform 提供程序。
  • Google Cloud 控制台中的界面,用于在浏览器中进行互动式工作。
  • 用于在 shell 中进行交互式工作的 gcloud CLI。
  • Java、Python、Go 和其他语言版本的客户端库,用于自定义开发和脚本编写。

为了便于监控和问题排查,该服务会将指标导出到 Cloud Monitoring。部分指标可在服务界面中查看。 Cloud Monitoring 中提供了一套完整的指标,可用于交互式工作、配置提醒以及导出到其他系统。

该服务还会将代理日志导出到 Cloud Logging。这些日志可供搜索,并且可用于创建基于日志的指标和提醒。

升级和补丁

Managed Service for Apache Kafka 集群在 Apache Kafka 版本 3.7.1 上运行。 该服务会自动修补严重的安全漏洞。

底层基础设施(包括操作系统和编排层)的更新是持续且自动的。代理会通过滚动重启进行更新,不会导致集群停机。

该服务不会自动将代理上运行的 Apache Kafka 代码升级到新的次要版本。

透明的费用

Managed Service for Apache Kafka 的价格模式与您在 Compute Engine 上自行运行 Apache Kafka 时看到的费用类似。 您需要为预配的资源(vCPU、RAM 和本地存储)和消耗的资源(永久性存储和数据传输)付费。与自行设置类似系统相比,使用 Managed Service for Apache Kafka 时,永久性存储空间和 vCPU 的费用更高。相比之下,Managed Service for Apache Kafka 和自行管理的 Kafka 在数据传输和本地存储方面的价格相差不大。如需详细了解价格,请参阅 Managed Service for Apache Kafka 价格。

兼容,因为我们运行的是 Apache Kafka

最后,Managed Service for Apache Kafka 运行的开源软件与您可能已在环境中运行的软件相同。您无需更改应用代码即可将其迁移到该服务。

限制

Managed Service for Apache Kafka 具有以下限制:

  • 每个集群在三个可用区中必须具有相同的资源。不支持单可用区或双可用区 Managed Service for Apache Kafka 集群。

  • 您无法在创建集群时选择可用区。

  • 您无法配置集群上的本地存储卷。

  • Managed Service for Apache Kafka 以 KRaft 模式运行。不支持 Zookeeper 模式。

  • 不支持用于指标的 JMX API。

  • 虽然您可以随时使用 read-only 更新模式更改代理配置,但这些更改仅在代理重新启动时生效。重启会定期发生,是 Google 维护和升级流程的一部分,但没有固定的时间表,也无法手动触发。因此,您无法控制这些更改的生效时间。read-only 配置的示例包括 auto.create.topics.enable 和 background.threads。 对于更新模式为 cluster-wide 的配置(例如 message.max.bytes),更新不需要重启,并且会立即生效。

  • 部分代理配置参数由服务管理,无法更新。这包括 broker.id 和存储空间相关设置,例如 remote.log.storage.system.enable。

接下来怎么做?

Apache Kafka® 是 Apache Software Foundation 或其关联公司在美国和/或其他国家/地区的注册商标。