如何使用Python、Apache Kafka和云平台构建健壮的实时数据管道

译者 | 李睿
【如何使用Python、Apache Kafka和云平台构建健壮的实时数据管道】审校 | 重楼
在当今竞争激烈的市场环境中,为了生存和发展,企业必须能够实时收集、处理和响应数据 。无论是检测欺诈、个性化用户体验还是监控系统,现在都需要接近即时的数据 。

如何使用Python、Apache Kafka和云平台构建健壮的实时数据管道

文章插图
然而,构建和运行任务关键型实时数据管道具有挑战性 。基础设施必须具有容错性、无限可扩展性,并与各种数据源和应用程序集成 。这就是ApacheKafka、Python/ target=_blank class=infotextkey>Python和云平台的用武之地 。
这个综合指南中将介绍:
  • 概述Apache Kafka架构
  • 在云中运行Kafka集群
  • 使用Python构建实时数据管道
  • 使用PySpark进行扩展处理
  • 实际示例,例如用户活动跟踪、物联网数据管道,并支持聊天分析
这里将包括大量的代码片段、配置示例和文档链接,以便获得这些非常有用的技术的实践经验 。
Apache Kafka架构介绍Apache Kafka是一个分布式、分区、复制的提交日志,用于可靠且大规模地存储数据流 。Apache Kafka的核心是提供以下功能:
  • 发布-订阅消息:Kafka允许广播来自生产者的数据流,例如页面浏览量、交易、用户事件等,并支持消费者实时消费 。
  • 消息存储:Kafka在消息到达时将其持久保存在磁盘上,并在指定的时间内保留它们 。消息通过指示日志中位置的偏移量来存储和索引 。
  • 容错:数据在可配置数量的服务器上复制 。如果一台服务器宕机,另一台服务器可以保证持续运行 。
  • 横向可扩展性:Kafka集群可以通过简单地添加更多的服务器来弹性扩展 。这允许无限的存储和处理能力 。
Kafka架构由以下主要组件组成:
(1)主题消息被发布到名为“主题”的类别中 。每个主题都充当消息提要或消息队列 。常见的场景是每个消息类型或数据流的一个主题 。Kafka主题中的每条消息都有一个唯一的标识符,称为偏移量,它代表了在主题中的位置 。一个主题可以分为多个分区,这些分区是可以存储在不同代理上的主题片段 。分区允许Kafka通过在多个消费者之间分配负载来扩展和并行化数据处理 。
(2)生产者生产者是向Kafka主题发布消息的应用程序 。它们连接到Kafka集群,序列化数据(例如JSON或Avro),分配一个密钥,并将其发送到适当的主题 。
例如,一个Web应用程序可以产生点击流事件,或者一个移动应用程序可以产生使用统计 。
(3)消费者消费者从Kafka主题中读取消息并进行处理 。处理可能涉及解析数据、验证、聚合、过滤、存储到数据库等 。
消费者连接到Kafka集群,并订阅一个或多个主题来获取消息提要,然后根据用例需求进行处理 。
(4)代理这是一个Kafka服务器,它接收来自生产者的消息,分配偏移量,将消息提交到存储中,并将数据提供给消费者 。Kafka集群由多个代理组成,以实现可扩展性和容错性 。
(5)ZooKeeperZooKeeper处理代理之间的协调和共识,例如控制器选举和主题配置 。它维护Kafka操作所需的集群状态和配置信息 。
这涵盖了Kafka的基础知识 。要深入了解,可以参考一些Kafka文档 。
以下了解如何通过在云中运行Kafka来简化管理 。
在云中运行Kafka虽然Kafka具有高度可扩展性和可靠性 , 但它的运行涉及部署、基础设施管理、监控、安全、故障处理、升级等方面的大量工作 。
值得庆幸的是 , Kafka现在是所有主要云计算提供商提供的完全托管服务:
服务
描述
定价
AWS MSK
在AWS上完全托管、高可用的Apache Kafka集群 。处理基础设施,扩展 , 安全,故障处理等 。
基于代理的数量
google Cloud Pub/Sub
基于Kafka的无服务器实时消息服务 。自动扩展,至少一次交付保证 。
基于使用指标
Confluent Cloud
完全管理的事件流平台 , 由Apache Kafka提供支持 。提供免费层 。


推荐阅读