当前位置:企业应用软件行业动态 → 正文

Neha Narkhede: 借助Apache Kafka实现大规模流处理

责任编辑:editor004 作者:Ralph Winzinger |来源:企业网D1Net  2016-06-23 11:55:11 本文摘自:INFOQ

在QCon纽约2016大会上,Neha Narkhede在演讲“借助Apache Kafka实现大规模流处理”中介绍了Kafka Streams,这是Kafka用于处理流式数据的新特性。据Narkhede介绍,因为“无界(unbounded)”数据集随处可见,所以流处理越来越流行。那不再是一个像机器学习那样的小众问题。

Narkhede首先介绍了数据操作的基本编程范式:

请求/响应周期 批处理 流处理

然后,Narkhede提供了一个来自零售领域的流处理实例:销售和发货从根本上说是无界数据集,流处理可以有效地处理这样的数据集。销售和发货是一个事件流(“发生了什么”)和基于这些事件重新计算价格(“做些什么”)的函数是流处理器。

在考虑流处理时,Narkhede提到了开发人员如今可以选择的两个最流行的选项。第一,开发人员可以自己实现,对于简单的场景而言,这可能还说得过去,但当加入像订购、扩展性、容错性或处理历史数据这样的特性时,情况会变得非常复杂。第二,开发人员可以选择像Spark或Samza这样的解决方案,它们都是重量级的,而且一般说来是为map/reduce而设计的。但在Narkhede看来,流处理更像基于事件的微服务,而不是map/reduce,而这就是Kafka Streams的设计初衷。

Kafka Streams是一个轻量级的库,可以嵌入应用程序,而且对打包或部署没有施加任何限制。Narkhede接下来概括地介绍了如何实现流处理系统的重要功能。

因为事件日志分区,所以扩展性是自动支持的。这样,基于Kafka Streams的应用程序就可以形成集群。消费者库也会在并行数据处理方面提供帮助。 容错性也是开箱即用的。Kafka Streams集群中的节点不分主次,都是同等的节点。本地状态差不多就是一个缓存,如果一个节点宕了,则数据处理只要简单地转移到另一个节点就可以了。 有状态处理也是支持的,根据需要通过连接或窗口计算实现。在这种情况下,必要的数据会被推送到处理器,以避免远程访问。 支持使用修改后的业务逻辑对数据进行再处理,允许新消费者从偏移量0(从头)开始事件处理。

接下来,Narkhede介绍了Kafka Streams的双重性,作为实现给定特性的基本原则:从根本上讲,就是表(“状态”)和流(“状态如何变化”)的概念相结合。因此,基于Kafka Streams的应用程序可以同时具备响应性和状态。另外,同时具备这两个概念还会简化架构。

Neha Narkhede在结尾时简单地介绍了一下Kafka Connect,这是一个副项目,可以连接各种数据库、Hadoop或Elasticsearch等系统,向Kafka输入数据或从Kafka获取数据。

请注意,大部分QCon讲稿都将在会后数周在InfoQ上提供,而幻灯片可以从大会的官方网站上下载。

查看英文原文:Neha Narkhede: Large-Scale Stream Processing with Apache Kafka

关键字:KafkaNarkhedeNeha

本文摘自:INFOQ

x Neha Narkhede: 借助Apache Kafka实现大规模流处理 扫一扫
分享本文到朋友圈
当前位置:企业应用软件行业动态 → 正文

Neha Narkhede: 借助Apache Kafka实现大规模流处理

责任编辑:editor004 作者:Ralph Winzinger |来源:企业网D1Net  2016-06-23 11:55:11 本文摘自:INFOQ

在QCon纽约2016大会上,Neha Narkhede在演讲“借助Apache Kafka实现大规模流处理”中介绍了Kafka Streams,这是Kafka用于处理流式数据的新特性。据Narkhede介绍,因为“无界(unbounded)”数据集随处可见,所以流处理越来越流行。那不再是一个像机器学习那样的小众问题。

Narkhede首先介绍了数据操作的基本编程范式:

请求/响应周期 批处理 流处理

然后,Narkhede提供了一个来自零售领域的流处理实例:销售和发货从根本上说是无界数据集,流处理可以有效地处理这样的数据集。销售和发货是一个事件流(“发生了什么”)和基于这些事件重新计算价格(“做些什么”)的函数是流处理器。

在考虑流处理时,Narkhede提到了开发人员如今可以选择的两个最流行的选项。第一,开发人员可以自己实现,对于简单的场景而言,这可能还说得过去,但当加入像订购、扩展性、容错性或处理历史数据这样的特性时,情况会变得非常复杂。第二,开发人员可以选择像Spark或Samza这样的解决方案,它们都是重量级的,而且一般说来是为map/reduce而设计的。但在Narkhede看来,流处理更像基于事件的微服务,而不是map/reduce,而这就是Kafka Streams的设计初衷。

Kafka Streams是一个轻量级的库,可以嵌入应用程序,而且对打包或部署没有施加任何限制。Narkhede接下来概括地介绍了如何实现流处理系统的重要功能。

因为事件日志分区,所以扩展性是自动支持的。这样,基于Kafka Streams的应用程序就可以形成集群。消费者库也会在并行数据处理方面提供帮助。 容错性也是开箱即用的。Kafka Streams集群中的节点不分主次,都是同等的节点。本地状态差不多就是一个缓存,如果一个节点宕了,则数据处理只要简单地转移到另一个节点就可以了。 有状态处理也是支持的,根据需要通过连接或窗口计算实现。在这种情况下,必要的数据会被推送到处理器,以避免远程访问。 支持使用修改后的业务逻辑对数据进行再处理,允许新消费者从偏移量0(从头)开始事件处理。

接下来,Narkhede介绍了Kafka Streams的双重性,作为实现给定特性的基本原则:从根本上讲,就是表(“状态”)和流(“状态如何变化”)的概念相结合。因此,基于Kafka Streams的应用程序可以同时具备响应性和状态。另外,同时具备这两个概念还会简化架构。

Neha Narkhede在结尾时简单地介绍了一下Kafka Connect,这是一个副项目,可以连接各种数据库、Hadoop或Elasticsearch等系统,向Kafka输入数据或从Kafka获取数据。

请注意,大部分QCon讲稿都将在会后数周在InfoQ上提供,而幻灯片可以从大会的官方网站上下载。

查看英文原文:Neha Narkhede: Large-Scale Stream Processing with Apache Kafka

关键字:KafkaNarkhedeNeha

本文摘自:INFOQ

电子周刊
回到顶部

关于我们联系我们版权声明隐私条款广告服务友情链接投稿中心招贤纳士

企业网版权所有 ©2010-2024 京ICP备09108050号-6 京公网安备 11010502049343号

^