当前位置: 首页 > 科技观察

KSQL,ApacheKafka的流数据SQL引擎

时间:2023-03-16 21:29:31 科技观察

ApacheKafka是一种分布式、分区、多副本的日志提交服务,用Scala编写,广泛用于水平可伸缩性和高吞吐量。Kafka最初由LinkedIn开发并于2011年初开源,目标是为实时数据处理提供一个统一的、高吞吐量、低延迟的平台。目前,越来越多的开源分布式处理系统如Cloudera、ApacheStorm、Spark等都支持与Kafka的集成。KafkaTopologyKafka的设计可以帮助用户解决很多架构问题。具有高性能、低耦合、高可靠性、不丢失数据等特点。结合实际的应用系统使用场景,可以很好的满足用户的需求。8月28日,卡夫卡峰会在旧金山举行。同一天,Confluent宣布了Kafka的新里程碑:KSQL——ApacheKafka的流数据SQL引擎。KSQL(点击查看demo)分布式、可扩展、可靠实时,支持多种流式操作,包括aggregate、join、window、session等,为Kafka的流处理提供了简单完整的SQL接口,无需需要用Java或Python等编程语言编写代码。KSQL的两个核心概念是流(Stream)和表(Table)。流表结合,可以将表示当前状态的表与表示当前事件的流连接起来。KSQL项目架构事实上,KSQL与关系型数据库中的SQL有很大区别。传统SQL是即时的一次性操作,无论是查询还是更新,都是对当前数据集进行的。KSQL的查询和更新是连续的,可以不断增加数据集。简而言之,KSQL做的其实是一个转换操作,也就是流处理。虽然该项目是基于Apache2.0协议开源的,但仍处于开发者预览阶段,不推荐在生产集群中使用。在可预见的条件下,KSQL在实时监控、安全检测、在线数据集成、应用开发等场景中具有巨大潜力。实时监控:KSQL可以自定义业务层面的衡量指标,可以实时获取。底层指标无法告诉用户应用程序的实际行为,因此根据应用程序生成的原始事件自定义指标可以更好地了解应用程序的健康状况。此外,KSQL可以用来为应用程序定义一定的标准,以检查应用程序在生产环境中的行为是否符合预期;安全检测:KSQL将事件流转化为包含值的时间序列数据,通过可视化工具将这些数据可视化显示在UI上,可以检测到很多安全威胁,比如欺诈、入侵等;在线数据集成:大部分数据处理都会经过ETL过程,此类系统通常通过定时批作业完成数据处理,但批作业带来的延迟往往让人无法接受。通过使用KSQL和Kafka连接器,可以将批量数据集成转化为在线数据集成;应用开发:对于复杂的应用,使用Kafka原生的StreamsAPI可能更合适。但是对于简单的应用,或者不喜欢Java编程的人来说,KSQL会是更好的选择。未来,该项目计划添加更多功能,包括支持更丰富的SQL语法,使KSQL成为生产就绪系统。相信KSQL为处理Kafka数据提供的简单完整的交互式SQL接口,可以降低流处理的门槛。