概述
Apache Kafka 是一个分布式数据流处理平台,可以实时发布、订阅、存储和处理数据流。它旨在处理多种来源的数据流,并将它们交付给多个消费者。简而言之,它可以移动大量数据,不仅是从 A 点移到 B 点,而是能从 A 到 Z 的多个点移到任何您想要的位置,并且可以同时进行。
Apache Kafka 可以取代传统的企业级消息传递系统。它最初是 Linkedin 为处理每天 1.4 万亿条消息而开发的一个内部系统,现已成为应用于各式各样企业需求的开源数据流处理解决方案。
与 Apache Kafka 异步整合
微服务已经改变了开发的格局。它们能够减少共享数据库层等依赖项,提升了开发人员的敏捷性。不过,开发人员构建的分布式应用仍然需要借助某种类型的整合来共享数据。一种常见的整合方案称为同步方法,利用应用编程接口(API)在不同的用户之间共享数据。
另一种整合方案是异步方法,涉及在中间存储中复制数据。这就要靠 Apache Kafka 了,它会流处理其他开发团队的数据并填充到数据存储中,让数据在多个团队及其应用之间实现共享。
与传统的瀑布式开发团队相比,微服务团队有不同的整合要求。这些团队需要 3 个基本功能:
- 分布式整合:基于模式的轻量型整合,可以在需要时持续部署,并且不受限于集中式的 ESB 型部署。
- API:通过基于 API 的服务来构建包含合作伙伴、客户和开发人员的生态系统,提供稳定可靠并可盈利的服务利用。
- 容器:用于开发、管理和缩放云原生及互联应用的平台。容器可以实现精简构件的开发,这些构件可以单独部署,亦可参与到 DevOps 流程中,还支持开箱即用型集群方案,确保高可用性。
这种方法被红帽称作“敏捷整合”,可让整合成为应用开发流程的一部分,打造敏捷性和适应性更强的解决方案。敏捷整合包括根据应用的具体需求来自由使用同步或异步整合。在利用异步事件驱动的整合来增强您对同步整合和 API 的利用时,Apache Kafka 是不错的选择,能够进一步支持微服务并实现敏捷整合。因此,Apache Kafka 可作为开发流程简化计划的重要部分,推动创新并节省时间,加快实现新功能、应用和服务创收。
红帽资源
何时使用 Apache Kafka
Apache Kafka 内建到在系统和/或应用之间共享数据的数据流管道中,也内置到消耗这些数据的系统和应用中。Apache Kafka 支持注重高吞吐量和可扩展性的广泛用例。Apache Kafka 能够在特定应用中最大程度减少数据共享的点对点整合需求,因而能将延迟性缩短到用毫秒计量。这意味着,数据可以更快地提供给用户使用,在 IT 运维和电子商务等需要实时数据可用性的用例中,这可以成为一个优势。
Apache Kafka 每秒可以处理数百万个数据点,是大数据挑战的理想方案。但是,Kafka 也适用于暂时无需处理此类极端数据量的公司。在许多数据处理用例中,如物联网(IoT)和社交媒体,数据呈指数级增长,或许很快就会让按照当今数据容量构建的应用不堪重负。在数据处理方面,您必须要考虑可扩展性;也就是说,要为数据的不断激增做好规划。
IT 运维
IT 运维离不开数据。IT 运维需要访问数据,而且要快。惟有如此,网站、应用和系统才能保持正常运行,并维持高性能。对于依赖于从众多数据源(如监控、变更和报告)收集数据、日志管理和网站跟踪活动的 IT 运维功能而言,Apache Kafka 是理想选择。
物联网
根据 Gartner,物联网设备数量有望在 2020 年突破 200 亿。物联网的价值在于这一数量级的传感器所产生的可操作数据。Apache Kafka 具有这样的可扩展设计,能够处理物联网所生成的海量数据。
电子商务
Apache Kafka 在电子商务中的运用机会越来越多,它能处理页面点击、点赞、搜索、订单、购物车和库存等数据。
Kubernetes 如何扩展 Apache Kafka 应用
Kubernetes 是 Apache Kafka 的理想平台。开发人员需要一个可扩展平台来托管 Kafka 应用,Kubernetes 正是适用的解决方案。
如同 Apache Kafka 一样,Kubernetes 也能让您的开发流程变得更加敏捷。Kubernetes(Google 云服务背后的技术)是用于管理容器化应用的开源系统,可以消除与容器相关的许多手动流程。在 Kubernetes 中使,用 Apache Kafka 可以简化部署、配置和管理,以及对 Apache Kafka 的利用。
通过结合使用 Kafka 和 Kubernetes,您不仅能获得 Kafka 的所有优点,也能享受到 Kubernetes 的诸多益处,如可扩展性、高可用性、可移植性和易部署性。
Kubernetes 的可扩展性是对 Kafka 的自然补充。在 Kubernetes 中,您可以通过简单的命令来扩展和缩减资源,或者按照所需的使用量进行自动缩放,从而最充分地利用您的计算、网络和存储基础架构。这种能力可以让 Apache Kafka 与其他应用共享有限的资源池。Kubernetes 也使得 Apache Kafka 能够在不同的基础架构提供商和操作系统之间进行移植。借助 Kubernetes,Apache Kafka 集群可以跨越现场和公共云、私有云或混合云,并且使用不同的操作系统。
红帽官方博客
获取有关我们的客户、合作伙伴和社区生态系统的最新信息。