Kafka 流數據 SQL 引擎 -- KSQL

KSQL 是什麼?

KSQL 是一個 Kafka 的 SQL 引擎,可讓咱們在流數據上持續執行 SQL 查詢web

例如,有一個用戶點擊流的topic,和一個可持續更新的用戶信息表,使用 KSQL 對點擊流數據、用戶表進行建模,並把兩者鏈接起來,以後 KSQL 會持續查詢這個topic的數據流,並放入表中數據庫

KSQL 是開源的、分佈式的,具備高可靠、可擴展、實時的特性安全

KSQL 支持強大的流處理操做,包括聚合、鏈接、窗口、會話等等app

KSQL 解決了什麼問題?

KSQL 的主要目的是爲了下降流處理的操做門檻,爲 Kafka 提供了簡單而完善的 SQL 交互接口分佈式

以前,爲了使用流處理引擎,須要熟悉一些開發語言,例如 Java, C#, Python,Kafka 的流處理引擎做爲 Kafka 項目的一部分,是一個 Java 庫,須要使用者有熟練的 Java 技能spa

相對的,KSQL 只須要使用者熟悉 SQL 便可,這使得 Kafka Stream 可以進入更廣闊的應用領域,例如商業分析,熟悉 SQL 的分析人員就能夠操做,而不用必定是開發人員命令行

KSQL 的應用場景有哪些?

1. 實時監控 實時分析

CREATE TABLE error_counts AS
SELECT error_code, count(*)FROM monitoring_stream
WINDOW TUMBLING (SIZE 1 MINUTE)
WHERE type = 'ERROR'

KSQL 可讓咱們對應用產生的事件流自定義測量指標,如日誌事件、數據庫更新事件等等日誌

例如在一個 web app 中,每當有新用戶註冊時都須要進行一些檢查,如歡迎郵件是否發送了、一個新的用戶記錄是否建立了、信用卡是否綁定了……,這些點可能分佈在多個服務中,這時可使用 KSQL 對事件流進行統一的監控分析code

2. 安全和異常檢查

好比對於欺詐、入侵等非法行爲,能夠定義出檢查模型,經過 KSQL 對實時數據流進行檢測orm

CREATE STREAM possible_fraud AS
SELECT card_number, count(*)
FROM authorization_attempts
WINDOW TUMBLING (SIZE 5 SECONDS)
GROUP BY card_number
HAVING count(*) > 3;

KSQL 能夠把事件流轉換成數值化的時間序列數據,而後經過 Kafka-Elastic connector導入到 Elastic,並經過 Grafana UI 視圖化的展現出來

KSQL 的核心概念

1. STREAM 流

stream 是一個無限的結構化數據序列,這個數據是不可修改的,新的數據能夠進入流中,但流中的數據是不能夠被修改和刪除的

stream 能夠從一個 kafka topic 中建立,或者從已存在的流或表中派生出來

CREATE STREAM pageviews (viewtime BIGINT, userid VARCHAR, pageid VARCHAR) 
WITH (kafka_topic='pageviews', value_format=’JSON’);

2. TABLE 表

table 是一個流或者其餘表的視圖,是流中數據的一個集合,table 中的數據是可變的,能夠插入,也能夠修改、刪除

table 一樣能夠從一個 kafka topic 中建立,或者從已存在的流或表中派生出來

CREATE TABLE users (registertime BIGINT, gender VARCHAR, regionid VARCHAR, userid  VARCHAR) 
WITH (kafka_topic='users', value_format='DELIMITED');

 

KSQL server 進程用來執行請求,多個 KSQL server 構成一個集羣,能夠動態增長 KSQL server 的數量來提示處理能力

KSQL server 具備自動容錯能力,若是一個失敗,其餘的會自動接替他的工做

KSQL 有一個命令行終端,輸入的命令會經過 REST API 發送到集羣,經過命令行,咱們能夠檢查全部流和表、執行查詢、查看請求的狀態信息等等

大致上看,KSQL 的構成包括:

  1. Kafka 的 Streams API 

  2. 分佈式 SQL 引擎

  3. REST API

小結

KSQL 是 confluent 剛剛發佈的,目前是開發預覽版,很快會發布正式版

KSQL 極大方便了 Kafka 中流數據的處理,雖然還不能在產品中使用,能夠提早了解一下

相關文章
相關標籤/搜索