更准确地说,Connect的作用是Kafka与其他数据源(比如:文件,其它MQ或者数据库)之间的导入导出。目前已经支持的数据源可以在这里找到:Kafka Connect | Confluent
数据源(比如数据库,前端Web Server,传感器..)-> Kafka -> Storm / Spark -> 数据接收(比如Elastic,HDFS/HBase,Cassandra,数据仓库..)
那这个架构是完全可以用Kafka Connect + Kafka Streams,也就是:
数据源 -> Kafka Connect -> Kafka -> Kafka Streams -> Kafka -> Kafka Connect -> 数据接收
Streaming SQL for Apache Kafka
Confluent KSQL是一种流SQL引擎,可针对ApacheKafka®进行实时数据处理。 它为Kafka上的流处理提供了易于使用但功能强大的交互式SQL界面,而无需使用Java或Python之类的编程语言编写代码。 KSQL具有可伸缩性,弹性,容错能力,并且支持多种流操作,包括数据过滤,转换,聚合,联接,窗口和会话化。
https://blog.csdn.net/tianyeshiye/article/details/97751436
http://kafka.apache.org/documentation/#connect
https://docs.confluent.io/current/connect/userguide.html
http://kafka.apache.org/documentation/streams/
目前支持实时流计算的有一些框架,如: Spark (micro batch),Storm, Flink,Samza;这些系统都需要部署集群。Kafka stream是实时流计算库,依靠现有的kafka集群,提供分布式的、高容错的、抽象DSL的实时流计算实现:
一般的流计算框架用job或者topology来描述任务,它们关注的是:
kafka stream更关注于问题本身:
当你的环境中已经存在Kafka作为数据入口,后面当然也可以接 Spark、Storm、Flink等实时流处理框架。如果你的实时流计算只是做一些数据转换清洗、按key聚合计算、需要读取多个topic的数据join,不妨先看下kafka stream的流式计算支持,它能以更轻便的方式实现计算需求。如果你的数据来源涉及DB,HDFS,计算过程中涉及机器学习、NoSQL, 则需要考虑 Spark、Storm、Flink。