现在开源流处理框架越来越多,大家都熟知的有 Spark Streaming, NiFi, Flink等等。
Kafka Streams 也是其中一员。
那么在众多的流处理框架中,Kafka Streams 有哪些独特的优势呢?
真 – 实时
我个人在Hadoop之后接触的第一个大数据框架就是Spark,所以自然而然曾经对Spark Streaming有着特别的偏爱。但Spark Streaming作为micro-batch结构,天生不是纯正的“真”实时处理。有着秒级别的延时,并且每次处理单个micro-batch中的所有数据记录。相对而言,Flink和Kafka Streams则是真正意义上的实时处理,每次处理单个数据记录。
Kafka系统内的轻度处理
同时,当我在工作中频繁使用Kafka作为系统中的数据总线后,一些较为轻度的数据处理,比如 filter,aggregation, join 等,如果使用Spark Streaming,需要将Kafka topic中的数据导入Spark Streaming,结果处理后再重新导入Kafka中相应的topic,显得十分繁琐。
而使用Kafka Streams可以便捷地从源topic取得数据,处理并放入另一个topic,所有工作可以在Kafka内部完成。
不再需要单独集群
Kafka Streams 直接集成于Kafka,因此不需要单独的集群来支持其运行,这大大减少了额外的维护成本。