为什么要在 Kubernetes 上运行 Apache Kafka?

复制 URL

将 Apache Kafka 部署到类似 Kubernetes 的容器编排平台上,以便从任意位置自动化、扩展和部署事件驱动型应用。也就是说,Kubernetes 放大了 Apache Kafka 上应用的固有灵活性。

随着企业 IT 部门越来越多地采用微服务云原生开发,由事件驱动应用(EDA)填充的分布式系统应运而生。在这种不断变化的开发大环境中,许多数字领域的领导者都选择了 Apache Kafka,并将其与 Kubernetes 结合在一起。

Apache Kafka 允许用户实时查看和分析业务,从而对不断变化的市场情况做出快速反应。此外,Apache Kafka 还是建立和维护与内部利益相关者及外部合作伙伴、供应商、客户之间实时连接的绝佳选择。

作为 Apache Kafka 中的一项功能,Kafka Streams 可添加到任何应用中,用于对 Kafka 事件进行简单而有效的流处理。这种对大量数据进行连续不断、并发且持续的处理和分析正是 Apache Kafka 与其他消息传递系统真正的区别所在。Apache Kafka 允许用户聚合、转换、丰富和组织相关事件以进行实时在线分析,而不必等待大数据机制来处理各种数字。对于任何需要即时响应实时数据的应用而言,Apache Kafka 的这一特性可谓至关重要。

Apache Kafka 为云原生开发奠定了良好的基础。云原生应用属于事件驱动型,而 Apache Kafka 正是管理事件的行家里手。分布式流、实时处理、高度可扩展性——Apache Kafka 支持所有这些核心事件驱动功能。

无服务器架构(继云原生之后的下一关键要素)也是基于事件的,Apache Kafka 也可以提供支持。开发人员可以依靠 Kubernetes 上的 Apache Kafka 来提供可扩展的无服务器通知、进程间通信以及无服务器功能的可见性。

Apache Kafka 经常部署在跨主机集群自动部署扩展和运维容器的 Kubernetes 容器管理系统上。Kubernetes 上的 Apache Kafka 与云原生开发(下一代应用开发技术)往往相辅相成,携手并进。云原生应用属于独立的、松散耦合的分布式服务,可通过云实现高度可扩展性。同样,基于 Kafka 构建的事件驱动应用也是松散耦合的,并可跨分布式混合云环境进行扩展。

对于在 Kubernetes 上运行 Apache Kafka 的运维团队而言,一个重大优势是将基础架构抽象化:只需配置一次,即可在任何位置运行。如今,运维团队通常需要管理各种本地和云资源,借助 Kubernetes,他们可以将这些资产视为计算资源池,还可为其分配软件资源,包括 Apache Kafka。此外,此 Kubernetes 层还允许在单个环境中管理所有 Apache Kafka 实例。

Kubernetes 与生俱来的可扩展性是对 Apache Kafka 的绝佳补充。Kubernetes 允许应用通过简单的命令来扩展和缩减资源,或者按照使用量进行自动缩放,从而最经济地利用计算、网络和存储资源。此外,Kubernetes 还为 Apache Kafka 提供了跨本地环境及公共云、私有云或混合云的可移植性,且支持使用不同的操作系统

红帽资源

手动操作 Apache Kafka 很麻烦,需要对许多组件进行各种配置。在裸机(或虚拟机)上运行 Apache Kafka 也十分复杂。尤其是部署、监控、更新和回滚节点,不仅复杂,而且困难重重。

Strimzi 开源项目解决了这一难题。Strimzi 利用操作器来平稳、无缝地部署 Apache Kafka 配置。操作器是 Kubernetes 上用于部署和管理应用的最新工具,在基础架构级别进行抽象化,因此,开发人员无需过多了解有关基础架构的信息即可部署应用,开发过程更加灵活。开发人员不需要了解技术细节(例如有多少台计算机或是什么类型的硬件),因为操作器可以自动置备基础架构并管理所有细节。

Strimzi 提供了基础架构即代码(IaC)的诸多优势,开发人员可以轻松编写类似代码一样的指令手册来定义基础架构,Strimzi 可以完美地执行这些指令。Strimzi 甚至可以简化高可用性模式下的 Apache Kafka 部署,而这一点也是其他方案难以实现的。

Strimzi 中的操作器也可以帮助解决 Apache Kafka 的许多安全问题,这也是使用 Strimzi 的另一个重要原因。不仅如此,Strimzi 还通过单点登录、加密和身份验证等功能实现了 Kubernetes 上 Apache Kafka 安全防护的自动化,因此,开发人员无需花费时间来实施基本的安全防护功能

Streams for Apache Kafka 属于红帽集成的一部分,是 Apache Kafka 和 Strimzi 项目的红帽企业发行版。Streams for Apache Kafka 带给 Apache Kafka 的大部分额外价值都集中在“在 Kubernetes 或红帽 OpenShift(Kubernetes 的红帽发行版)上使用 Apache Kafka ”)上。

OpenShift 上的 Streams for Apache Kafka 将在 Kubernetes 上提供 Apache Kafka,以支持企业级事件驱动架构,从而支持分布式数据流和基于流处理微服务的应用。Streams for Apache Kafka 尤其适用于大规模、高吞吐量的方案,因为 Apache Kafka 的内在分区有助于满足可扩展性要求。

中心

红帽官方博客

获取有关我们的客户、合作伙伴和社区生态系统的最新信息。

所有红帽产品试用

我们的免费试用可让您亲身体验红帽的产品功能,为获得认证做好准备,或评估某个产品是否适合您的企业。

扩展阅读

什么是 Podman Desktop?

Podman Desktop 是一款免费的开源工具,可简化在本地开发人员环境中使用容器的过程。

一文带你看懂 Helm 是什么?K8s 和 Helm 的关系

Helm 是一款用于 Kubernetes 的软件包管理器,内含将应用部署到集群所需的各种代码和资源。Helm 可通过 Helm 图表这种打包格式来实现应用的自动分发,从而简化这一过程。

什么是 InstructLab?

InstructLab 是一个用于增强大型语言模型(LLM)的开源项目。

开源 相关资源

特色产品

  • 红帽 OpenShift

    一个统一的应用开发平台,让您基于自选的混合云基础架构大规模构建、现代化和部署应用。

相关文章