Apache Beam over Apache Kafka流处理

Ste*_*lla 2 stream-processing apache-kafka apache-beam apache-kafka-streams

在流处理方面,Apache Beam和Apache Kafka有什么区别?我也试图掌握技术和程序上的差异。

请通过您的经验报告帮助我理解。

Gui*_*ant 6

Beam是一种API,它以统一的方式使用诸如Flink,Storm等底层流处理引擎。

Kafka主要是一个集成平台,提供基于独立应用程序用来相互通信的主题的消息传递系统。

在此消息传递系统(和Producer / Consummer API)的顶部,Kafka提供了一个API,可使用消息作为数据和主题作为输入或输出来执行流处理。Kafka流处理应用程序是独立的Java应用程序,并充当常规的Kafka Consummer和Producer(这对于了解如何管理这些应用程序以及如何在流处理应用程序实例之间共享工作负载非常重要)。

简而言之,Kafka Stream处理应用程序是独立的Java应用程序,它们在Kafka Cluster之外运行,从Kafka Cluster馈送并将结果导出到Kafka Cluster。在其他流处理平台上,流处理应用程序在群集引擎内部运行(并由该引擎管理),从其他位置进行馈送并将结果导出到其他位置。

Kafka和Beam Stream API之间的一大区别是Beam会在数据流内部限制和无限制数据之间产生差异,而Kafka不会产生差异。因此,必须使用定时/会话化窗口来手动收集带有Kafka API的有限数据,以收集数据。

  • “而Kafka并没有起到什么作用”-我觉得这不是在Kafka Streams API中讨论KTables (3认同)

Mat*_*Sax 5

Beam是一种编程API,但不是您可以使用的系统或库。有多种光束参赛者可实现波束API。

Kafka是一个流处理平台,并随附有Java流处理库Kafka Streams(又名Streams API),该库旨在读取Kafka主题中的数据并将结果写回到Kafka主题中。