1. 介绍

1.1 亮点

kafka stream的出现相比flink、storm等其他实时流处理框架有以下亮点:

  1. 简单轻量:设计成简单和轻量级的客户端类库,可以和现有Java应用、部署工具轻松整合。
  2. 依赖少:除了Kafka自身外不依赖其他外部系统。
  3. 水平扩展:利用Kafka的分区模型来实现水平扩展并保证有序处理。
  4. 容错和本地状态支持:支持容错的本地状态,这使得快速高效处理一些有状态的操作(如连接和开窗聚合)成为可能。
  5. 单条记录处理:支持一次一条记录的处理方式以实现低延迟(spark streaming不支持单条消费,延迟会长),也支持基于事件时间的开窗操作(storm必须依赖trident才支持时间窗)。
  6. 两套处理原语:提供了两套流处理原语:高层的流DSL和低层的处理器API。 7.门槛低:很容易编写单机的示例程序,然后通过在多台机器上运行多个实例即可水平扩展从而达到高吞吐量。Kafka Streams利用Kafka的并发模型以实现透明的负载均衡。

1.2 缺点

  1. 不支持异步操作:需要开发者注意在处理方法中不能有高开销的动作,否则整个处理线程阻塞
  2. 不支持SQL或者ML(机器学习)能力(Spark Streaming支持)

参考资料:

  1. KafkaStreams入门指南