kafka Streams学习
牢记Kafka Streams是一个Java类库,不是一个流处理框架,这点和Strom等流处理框架有明显的不同
什么是流?
无边界(源源不断)数据集的抽象表示。
为什么要用流式处理:
面向数据流的响应式编程(RP Reactive Programming)已经越来越普及,响应式编程对于无边界数据处理更有优势。
流的特性:
- 事件流是有序的。
- 流数据是自带时序的,无需人工排序。
- 事件流是不可变的数据记录。
- 现对于数据库行记录看到的只是最终的结果,流记录了每次变更,是不可变的。
- 事件流是可以重播的。
- 如果系统异常或者原有业务处理逻辑优化,可以重复使用流数据,验证、优化业务。
kafka 流的优势:
- 除了Kafka外,无任何外部依赖
- 它只是一个类库,它可以非常方便地嵌入任意Java应用中,也可以任意方式打包和部署
- 支持单事件处理、基于时间窗口连接和聚合处理。
- 充分利用Kafka分区机制实现水平扩展和顺序性保证
- 支持正好一次处理语义。
- 提供记录级的处理能力,从而实现毫秒级的低延迟
- 通过可容错的state store实现