文章目录
- 实时流式计算
- Kafka Stream
- Kafka Streams 的关键概念
- KStream
- Kafka Stream入门案例编写
- SpringBoot 集成 Kafka Stream
实时流式计算
一般流式计算会与批量计算相比较
流式计算就相当于上图的右侧扶梯,是可以源源不断的产生数据,源源不断的接收数据,没有边界
。
应用场景
- 日志分析
网站的用户访问日志进行实时的分析,计算访问量,用户画像,留存率等等,实时的进行数据分析,帮助企业进行决策 - 大屏看板统计
可以实时的查看网站注册数量,订单数量,购买数量,金额等。 - 公交实时数据
可以随时更新公交车方位,计算多久到达站牌等 - 实时文章分值计算
头条类文章的分值计算,通过用户的行为实时文章的分值,分值越高就越被推荐。
技术方案选型
- Hadoop
- Apche Storm
- Flink
- Kafka Stream
可以轻松地将其嵌入任何Java应用程序中,并与用户为其流应用程序所拥有的任何现有打包,部署和操作工具集成。
Kafka Stream
Kafka Stream
:提供了对存储于 Kafka内
的数据进行流式处理和分析的功能
特点:
- Kafka Stream提供了一个非常简单而轻量的Library,它可以非常方便地嵌入任意Java应用中,也可以任意方式打包和部署
- 除了Kafka外,无任何外部依赖
- 通过可容错的state store实现高效的状态操作(如windowed join和aggregation)
- 支持基于事件时间的窗口操作,并且可处理晚到的数据(late arrival of records)
- …
Kafka Streams 的关键概念
-
源处理器(Source Processor):源处理器是一个没有任何上游处理器的特殊类型的流处理器。它从一个或多个kafka主题生成输入流。通过消费这些主题的消息并将它们转发到下游处理器。
-
Sink处理器:sink处理器是一个没有下游流处理器的特殊类型的流处理器。它接收上游流处理器的消息发送到一个指定的Kafka主题
KStream
- 数据结构类似于map,如下图,
key-value
键值对
KStream数据流(data stream),即是一段顺序的,可以无限长,不断更新的数据集。
Kafka Stream入门案例编写
- 需求分析,求单词个数(word count)
- 创建原生的 kafka staream 入门案例
- 测试准备
- 使用生产者在 topic 为:
itcast_topic_input
中发送多条消息 - stream 接收
itcast_topic_input
的数据,进行聚合操作后,将处理结果发送到itcast_topic_out
- 使用消费者接收 topic 为:
itcast_topic_out
结果:
- 通过流式计算,会把生产者的多条消息汇总成一条发送到消费者中输出
SpringBoot 集成 Kafka Stream
- 配置
application.yml
- 在配置类中定义方法
- 可注入StreamsBuilder
- 返回值必须是KStream且放入spring容器中
- 测试
启动 springboot 项目即可自动监听