都2023了!我不允许你还不了解AIGC!立即报名 了解详情
写点什么

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

  • 2016-06-22
  • 本文字数:1095 字

    阅读完需:约 4 分钟

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

2016-06-22 19:001958
用户头像

发布了 1008 篇内容, 共 358.8 次阅读, 收获喜欢 334 次。

关注

评论

发布
暂无评论
发现更多内容

模块三作业-外包学生管理系统架构设计

Diana S

架构训练营

ARM架构下的Docker环境,OpenJDK官方没有8版本镜像,如何完美解决?

程序员欣宸

Java Docker 10月月更

Kafka生产者客户端几种异常Case详解

石臻臻的杂货铺

kafka Kafka实战 10月月更

前端安全性问题以及防御措施

甜点cc

前端 安全 学习笔记 10月月更

Tapdata 创始人唐建法:以秒级响应速度,为企业提供实时数据服务 | 阿里云云原生加速器特别报道

阿里巴巴云原生

阿里云 云原生 Tapdata

JavaScript数组常用方法大全

CoderBin

JavaScript 面试 前端 数组 10月月更

熬夜整理前端高频面试题(已拿offer)

loveX001

JavaScript

offset新探索:双管齐下,加速大数据量查询

华为云开发者联盟

数据库 后端 华为云 企业号十月 PK 榜

“程”风破浪的开发者|学习力是这个时代的终极竞争力

石云升

学习方法 知行合一 10月月更 “程”风破浪的开发者

vue项目启动失败,内存不足处理

甜点cc

JavaScript Vue V8 10月月更

IP路由基础、路由器静态路由配置方法、自治系统、缺省路由的配置方法、路由选路规则、缺省路由、备份路由、等价路由、三种查询路由表命令

Python-派大星

10月月更

路由基础:三层交换机、单臂路由的特点以及配置特点、DHCP报文类型、DHCP工作原理、在路由器上配置DHCP、在交换机上配置DHCP、配置DNS服务器

Python-派大星

10月月更

架构实战训练营模块 3 作业

atcgnu

“程”风破浪的开发者|数据包分析思路方法分享

穿过生命散发芬芳

学习方法 数据包分析 10月月更 “程”风破浪的开发者

使用NeuVector开展云原生安全测试

QE_LAB

云原生 安全测试

String源码分析(一)

知识浅谈

10月月更

项目开发全流程梳理

甜点cc

团队管理 技术管理 敏捷研发 10月月更

“程”风破浪的开发者|GoFrame 如何优雅的共享变量?

王中阳Go

Go golang 学习方法 10月月更 “程”风破浪的开发者

前端一面高频react面试题(持续更新中)

beifeng1996

React

鸿蒙开发实例 | 为什么选择HarmonyOS?

TiAmo

华为 鸿蒙 10月月更

一文带你了解 Python 中的继承知识点

宇宙之一粟

Python 面向对象 继承 10月月更

阶段三作业

Johnny

#架构实战营

如何快速解决恶意进程导致CPU飙升问题 | Linux | 运维

Appleex

Linux centos 运维 cpu 服务器

面试官:聊聊长连接下的负载均衡

小小怪下士

Java 负载均衡 程序员 TCP

假如面试官问你Babel的原理该怎么回答

loveX001

JavaScript

问:React的setState为什么是异步的?

beifeng1996

React

老生常谈React的diff算法原理-面试版

beifeng1996

React

线性表数据结构和使用数组实现顺序表

石柒

10月月更

数据湖(十二):Spark3.1.2与Iceberg0.12.1整合

Lansonli

数据湖 10月月更

第九期-模块三

wuli洋

【一Go到底】第二十七天---数组注意事项及细节

指剑

Go 10月月更 goalgn

  • 需要帮助,请添加网站小助手,进入 InfoQ 技术交流群
Neha Narkhede: 借助Apache Kafka实现大规模流处理_语言 & 开发_Ralph Winzinger_InfoQ精选文章