KSQL 是什么?
KSQL 是一个 Kafka 的 SQL 引擎,可以让我们在流数据上持续执行 SQL 查询
例如,有一个用户点击流的topic,和一个可持续更新的用户信息表,使用 KSQL 对点击流数据、用户表进行建模,并把二者连接起来,之后 KSQL 会持续查询这个topic的数据流,并放入表中
KSQL 是开源的、分布式的,具有高可靠、可扩展、实时的特性
KSQL 支持强大的流处理操作,包括聚合、连接、窗口、会话等等
KSQL 解决了什么问题?
KSQL 的主要目的是为了降低流处理的操作门槛,为 Kafka 提供了简单而完善的 SQL 交互接口
之前,为了使用流处理引擎,需要熟悉一些开发语言,例如 Java, C#, Python,Kafka 的流处理引擎作为 Kafka 项目的一部分,是一个 Java 库,需要使用者有熟练的 Java 技能
相对的,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 对事件流进行统一的监控分析
2. 安全和异常检查
比如对于欺诈、入侵等非法行为,可以定义出检查模型,通过 KSQL 对实时数据流进行检测
CREATE STREAM possible_fr