NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

对话 Confluent CTO :针对 Kafka 的分布式流数据查询引擎 KSQL 技术解读

  • 2017-11-01
  • 本文字数:2531 字

    阅读完需:约 8 分钟

Confluent 发布 KSQL :针对 Apache Kafka 的交互式、分布式流 SQL 引擎。KSQL 能够更容易地对 Apache Kafka 的主题进行多种流处理操作,比如聚合(aggregation)、连接(join)、时间窗口(windowing)以及会话(sessionization)。Confluent 是在最近于旧金山举行的 Kafka 峰会宣布开源这个流数据SQL 引擎的。

KSQL 允许开发人员以类似 SQL 的语法读取、写入和处理实时的流数据。关于流处理方面的样例,包括对比两个或更多的流数据来探测反常现象并实时对其作出反应。与其他的分布式流和 SQL 框架不同的是,KSQL 为 Apache Kafka 提供了一个流数据 SQL 引擎。在 KSQL 之前,开发人员需要使用 Java 或 Python 编程来处理 Kafka 中的流数据。

Neha Narkhede 是 Confluent 的联合创始人兼 CTO,在博客上阐述了 KSQL 框架的特性和使用场景,它可以用到诸如异常检测(anomaly detection)、监控和流式 ETL 中。

在底层,KSQL 使用 Kafka 的 Streams API 来操作 Kafka 主题。在 KSQL 中有两个核心的抽象,它们同时也是 Streams API 的核心抽象:Stream 和 Table。

Stream: Stream 是流处理应用中最重要的结构和一等公民。流是没有边界的结构化数据(“facts”)序列,流中已有的数据是不可变的(新的 fact 可以插入到流中,但是已有的 fact 无法进行更新或删除)。流可以通过 Kafka 主题来创建,也可以通过已有的流或表衍生出来。

Table:在 Kafka 中, Table 是 STREAM 或另外一个 TABLE 的视图,代表了可变 fact 的集合。它与传统数据库中的表是对等的,只不过每当有新事件到达时,它就会持续更新,并且还支持额外的流处理语义,比如时间窗口。表中的 fact 是可变的,这意味着新的 fact 可以插入到表中,已有的 fact 也可以更新或删除。流可以通过 Kafka 主题来创建,也可以通过已有的流或表衍生出来。

Apache Kafka 中的一个主题可以表述为 KSQL 中的一个 Stream 或一个 Table,这取决于在该主题上想要表达的语义。

下图展现了 KSQL 是如何与系统中的两个数据流协作的。

InfoQ 与 Narkhede 就 KSQL 的发布进行了交流。她介绍了为流数据创建 SQL 接口以便于运行查询的驱动力。

在他们使用 Kafka 所构建的流优先的数据架构愿景中,KSQL 是非常重要的一个组成部分。在流优先的世界中,Kafka 和 KSQL 所提供的功能都是之前在实时系统中所无法实现或实现起来非常复杂的。Kafka 日志是流数据的核心存储抽象,这意味着进入离线数据仓库的相同数据可以进行流处理了。其他所有的内容都是使用 KSQL 基于日志创建出来的流视图,比如各种数据库、搜索索引或服务于公司系统的其他数据。创建这些衍生视图所需要的数据完善功能和 ETL 都可以借助 KSQL 以流的方式来完成。

InfoQ:你能介绍一下 KSQL 在集群和故障恢复方面的技术细节吗?

Neha Narkhede:有一个执行查询的 KSQL 服务器进程。一组 KSQL 进程会以集群的方式来运行。我们可以通过启动更多的 KSQL 服务器实例动态添加处理能力。这些实例是容错的:如果其中有一个发生故障,其他的实例会接管它的工作。查询是通过交互式 KSQL 命令行客户端发起的,客户端会通过 REST API 将命令发送至集群中。命令行允许我们探查可用的流和表、提交新的查询、检查运行查询的终端的状态。在内部,KSQL 是使用 Kafka 的 Streams API 来构建的,这样就继承了它的弹性扩展、高级状态管理以及容错性,并且还支持 Kafka 最近宣布的 仅处理一次的语义(exactly-once processing semantics)。KSQL 服务器将其嵌入了进来并基于此添加了分布式 SQL 引擎(包括一些有趣的内容,比如为了提升查询性能引入的自动字节码生成功能),除此之外,还提供了用于查询和控制的 REST API。

InfoQ:相对于使用 Kafka API 来访问流数据,在使用 KSQL 查询时,有什么性能方面的考虑吗?

Narkhede:KSQL 使用 Kafka 的 Streams API 进行构建,与 Kafka 集成地非常紧密。这种与 Apache Kafka 核心基础的紧密集成能够移除额外的数据转移和序列化层,如果在 Kafka 中使用非原生方案来处理流数据的话,往往必须要通过这些分层。所以,采用 KSQL 来处理 Kafka 主题中的数据时,额外的损耗是很低的。另外值得一提的是,KSQL 依然处于开发者预览阶段,目前还没有性能基准。开发者预览阶段的目标就是与 Kafka 社区协作,确保 KSQL 能有杰出的用户体验。在接下来的几个月中,我们将精力投入到性能提升、测试以及操作稳定性上。

InfoQ:在提供标准的方式查询流数据方面,你认为 KSQL 会扮演什么样的角色?

Narkhede:在我们创建 Kafka 之时,JMS 是消息处理领域的标准,Kafka 基于日志范式的简单 API 对整个业界都很新颖。如今,Kafka 不仅是消息领域的标准,还成为了管理实时数据的标准。它之所以能够成功要归因于简洁的用户体验,并且能够广泛应用于大规模流数据处理方面新的问题域之中。与之类似,KSQL 提供了类似于 SQL 的接口,它修改了 SQL 标准使其更加适用于流处理。KSQL 通过这样做,支持将流和表作为第一等的抽象,这对于充分发挥流处理的潜力并将其用到真正的用户场景中至关重要,这些场景包括流 ETL、监控、异常检测和分析。KSQL 为流处理领域带来了简洁性和操作的便利性,这会影响到查询流数据方面新标准的制订。

InfoQ:你能介绍一下 Kafka 的路线图吗,接下来读者会有哪些有趣的特性值得学习呢?

Narkhede:我们目前以开发者预览的方式发布了 KSQL,开始围绕它构建社区并收集反馈。在与开源社区协作的过程中,我们计划添加更多的功能,使其在质量、稳定性以及操作性方面成为生产环境就绪的系统,我们准备支持更丰富的 SQL 语法,包括功能更强的聚集函数以及在连续表上任意时间点上使用的SELECT语句,也就是能够基于已计算出来的结果进行查找,也支持对流连续计算的结果进行查询。

KSQL 目前基于 Apache 2.0 许可证模式处于开发者预览(Developer Preview) 阶段,团队计划在接下来的几个月中使其达到生产环境就绪(production-ready)阶段。

读者可以参考快速入门指南 KSQL Docker 镜像学习这个工具的更多情况。如果你希望参与社区的话,还有一个 KSQL Community Slack Channel 。关于 KSQL 的其他资源还有一个视频,它展现了如何使用KSQL 实现实时监控、异常探测和报警功能。

查看英文原文 Confluent Releases KSQL, a Distributed Streaming SQL Engine for Apache Kafka

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2017-11-01 19:004189

评论

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

Flink OLAP 在字节跳动的查询优化和落地实践

Apache Flink

大数据 flink 实时计算

MySQL Command Line Client登录 及系统设置

小齐写代码

手机端侧文字识别:挑战与解决方案

合合技术团队

人工智能 技术 手机 识别

京东小程序平台助力快送实现跨端 | 京东云技术团队

京东科技开发者

小程序 ide 跨端 企业号10月PK榜

页面查询多项数据组合的线程池设计 | 京东云技术团队

京东科技开发者

线程池 分页查询 企业号10月PK榜 数据组合

iPhone垃圾清理器 AnyMP4 iOS Cleaner最新中文版

胖墩儿不胖y

Mac软件 清理工具 清理器

敏捷开发的核心原则和方法实践-深入理解Scrum

顿顿顿

Scrum 敏捷开发 敏捷研发工具 敏捷管理工具 scrum管理工具

云上探索实验室-码上学堂领学员招募,正式启动!

科技热闻

实用的数据集成方式

RestCloud

数据同步 ETL 实时数据

软件测试|火焰杯”软件测试高校就业选拔赛获奖名单揭晓,我院两名学子上榜,奖金2万元!

霍格沃兹测试开发学社

Elasticsearch向量检索的演进与变革:从基础到应用

汀丶人工智能

自然语言处理 Elastic Search 语义搜索系统 向量搜索

PCB打板省钱小妙招,强烈建议收藏!

华秋电子

PCB

AI干货大FUN送!程序员节来AI Show“集市”行乐

飞桨PaddlePaddle

AI 程序员节

基于 Apache Kyuubi 实现分布式 Flink SQL 网关

网易数帆

大数据 flink 开源 Apache Kyuubi

MacOS系统设置一键切换开关 One Switch

展初云

Mac软件 一键开关

多模态GPT-V出世!36种场景分析ChatGPT Vision能力,LMM将全面替代大语言模型? | 京东云技术团队

京东科技开发者

人工智能 LLM模型 企业号10月PK榜 GPT-V

注释在编程中的重要性:理解程序员的两难选择

小魏写代码

把您的 PCB 艺术品带来 KiCon 吧:SAO Hat 作品招募中

华秋电子

kicad

Lightroom Classic 2024 for Mac(摄影后期照片编辑工具) v13.0.1中文激活版

mac

照片编辑软件 苹果mac Windows软件 Lightroom Classic lrc

邯郸学院软件学院软件工程专业教师参加“火焰杯”软件测试颁奖

测试人

软件测试

小间距LED显示屏的技术优势有哪些?

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家 户内led显示屏

软件测试|计算机系本科生获“火焰杯”软件测试高校就业选拔赛一等奖

霍格沃兹测试开发学社

专业屏幕录像软件推荐 Apeaksoft Screen Recorder免激活中文

mac大玩家j

录屏软件 Mac软件 屏幕录制软件

Mac平台好用的文件对比工具 Beyond Compare 4

展初云

Mac软件 Beyond Compare 4 for Mac 文件对比工具

CNCF即将推出平台成熟度模型丨亮点导览

SEAL安全

运维 成熟度模型 企业号10月PK榜

软件依赖管理-源码依赖、接口依赖、服务依赖

laofo

DevOps cicd 研发效能 持续交付

火山引擎DataTester:AB测试技术揭秘及应用分享

字节跳动数据平台

大数据 ab测试 对比实验 数字化增长 企业号10月PK榜

第2期 | GPTSecurity周报

云起无垠

Markdown文本写作软件 Ulysses for Mac

展初云

markdown Mac软件 写作软件

Dash for Mac(浏览API文档、管理代码片段)

晴雯哥

SMT组装工艺流程的应用场景

华秋电子

SMT

对话Confluent CTO :针对Kafka的分布式流数据查询引擎KSQL技术解读_大数据_Srini Penchikala_InfoQ精选文章