概述
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更适合异步应用程序流。
![](https://img.haomeiwen.com/i4146013/a329e25bee3a65e6.png)
ksqlDB应用
ETL流处理、实时的应用监控及分析、异常检测、用户个性化数据分析定制、传感器及IoT数据处理、ksqlDB Server、ksqlDB CLI
ksqlDB server运行sql查询引擎,包含数据处理、查询、写入.ksqlDB CLI作为ksqlDB Server的客户端。
下图展示了是否基于ksqlDB的应用架构,对比分析不难看出,对于流处理及连接器,均从之前的独立角色集成到了ksqlDB,ksqlDB除此之外通过物化视图提供了流处理过程中的查询功能。
网友评论