ksqlDB用于流处理应用

概述

ksqlDB是一个事件流数据库,专用来帮助开发人员创建基于Apache Kafka的流处理应用程序。它基于轻量级的SQL语法,大大降低了操作的复杂性要求构建流处理的应用程序,从而促使开发者建立实时系统而不需要大量的时间和开销。

ksqlDB组件

基于ksqlDB的应用主要包括三个核心的基础组件:collections, materialized views及queries。

Collections

Collections提供事件序列的持久存储,ksqlDB提供两种类型的集合:流(Streams)和表(Tables),均基于键/值对。

  • Streams 是不可变的, append-only的集合。添加相同key的多个事件只需附加到流尾部。
  • Tables 是可变的集合。只展示每个key的最新value信息。它更适于随时间变化的模型,常用于表示聚合。

ksqlDB基于kafka进行存储,创建一个新的collection相当于基于一个topic定义一个流或一个表。

Materialized Views

Materialized views用来表征流或表,使得开发者能够基于现有流或表创建新的集合。物化视图能创将相同数据在不同时间、不同状态的多种表示,对数据聚合非常必要。

Queries

Query允许开发者从应用程序或微服务中访问这些物化的视图。通过pull或push queries进行物化视图的查询

  • Pull queries 允许开发者获取当前状态的物化视图,物化视图会随着新事件的到来进行增量更新,pull类型query更适合的低延时的请求/响应流。
  • Push queries 允许开发者订阅物化视图更新及流的变化。当新事件到达时,push查询发出refinements,事件流媒体应用程序可以对新信息实时反应。push queries更适合异步应用程序流。

ksqlDB的架构及组件

ksqlDB应用

ETL流处理、实时的应用监控及分析、异常检测、用户个性化数据分析定制、传感器及IoT数据处理、ksqlDB Server、ksqlDB CLI

ksqlDB server运行sql查询引擎,包含数据处理、查询、写入.ksqlDB CLI作为ksqlDB Server的客户端。

下图展示了是否基于ksqlDB的应用架构,对比分析不难看出,对于流处理及连接器,均从之前的独立角色集成到了ksqlDB,ksqlDB除此之外通过物化视图提供了流处理过程中的查询功能。

基于ksqlDB的应用架构
基于非ksqlDB的应用架构
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容