Kafka Streams 是什么,为什么你应该关心它们?
Source: Dev.to
什么是流处理?
“流处理是一种计算范式,侧重于在数据生成的同时持续处理,而不是先存储再批量处理。它使系统能够在近实时的情况下对事件作出响应,从而实现低延迟的分析、监控和决策。流处理系统摄取数据流,应用转换或计算,并在输入仍在产生时输出结果。” – Martin Kleppmann
与其在凌晨 2:00 存储数据后再运行大批量作业,不如在数据到达的那一刻立即处理。
Kafka Streams
“Kafka Streams 是一个轻量级、基于 Java 的库,用于构建实时、可扩展的流处理应用程序,这些应用程序从 Apache Kafka 主题读取并写入数据。它提供了过滤、映射、分组、窗口和聚合等连续处理的高级抽象,同时在内部处理容错和状态管理。”
使用 Kafka Streams,我们拥有一个自然契合流处理范式的工具。
注意: 这是一种简化的思维模型,用于解释流处理和 Kafka Streams 的角色,并非 YouTube 内部架构的精确描述。像 YouTube 这样的大公司会使用多种流处理器、批处理 + 流式管道、机器学习模型、特征存储等,以提供无缝的用户体验。
设计流管道
在 Kafka Streams 中,逻辑表现为 拓扑结构——一个有向无环图(DAG),由表示对数据流进行转换步骤的处理节点组成。
我们以 观看历史 和 用户活动 作为真相来源(从 Kafka 主题读取的 Source Processor)。
1. 数据脱敏与清洗
- 消费原始用户交互事件
- 删除或掩码不必要或敏感的字段
- 标准化事件结构
此步骤确保下游处理器只在相关且安全的数据上工作,降低耦合度并提升可维护性。
2. 相似内容推荐
- 输入: 用户 ID、频道名称和类别(例如,观看 WWE 视频 → 类别 Professional Wrestling)
- 目标: 立即推荐相关的推广内容,如 AEW 或 TNA
原始 KStream 被映射或转换以提取相关元数据,然后通过 Sink Processor 将结果写入新的 Kafka 主题 similar-content。
3. 首选视频时长
(分析用户偏好的视频时长并相应标记事件的逻辑。)
4. 商品发现
(基于观看行为提供相关商品推荐的逻辑。)
一旦数据以明确的事件形式发出,下游应用即可独立分析并更高效地为用户服务——这也让你保住高薪工作,全部归功于流处理和 Kafka Streams。😉
Kafka Streams 作为转换器,而非大脑
Kafka Streams 在事件驱动架构中充当高性能的 Transformer 和 Supplier。它清洗、塑形并路由数据,使下游微服务能够基于这些数据采取行动。这正是一套设计良好的事件驱动系统的标志。
你仅仅触及了实时数据编排的表面。
为什么不直接使用传统数据库?
除了“写入量大”之外,数据库还带来结构性缺陷,例如:
- 延迟
- 对持续摄入的可扩展性有限
- 处理乱序事件的困难
流处理正面解决了这些挑战。
敬请期待第 2 部分。