KafkaStreams实战((美)小威廉·P.贝杰克(WilliamP.BejeckJr.))

书: https://pan.baidu.com/s/15VfTw9eJ2MoiHktwswP0gw?pwd=tq5x
笔记如下:

  1. “Kafka Streams 是一个用于构建实时流处理应用的轻量级库,直接集成到你的应用中,无需额外集群。”
  2. “流(Stream)与表(Table)是 Kafka Streams 的核心抽象,分别对应无界数据和有界数据的动态视图。”
  3. KStream 表示连续的事件流,而 KTable 代表可更新的状态快照,两者可通过 toStream() 和 toTable() 相互转换。”
  4. “状态存储(State Store)允许流处理应用维护本地状态,支持 RocksDB 或内存存储。”
  5. Topology 类定义了流处理逻辑的 DAG(有向无环图),包含源处理器、流操作和汇处理器。”
  6. “窗口化操作(Windowing)将无限流切分为有限的时间段,支持滚动窗口、滑动窗口和会话窗口。”
  7. join 操作可关联两个流或流与表,分为内连接(inner)、左连接(left)和外连接(outer)。”
  8. “Exactly-Once 语义通过事务和幂等生产者实现,确保每条记录仅处理一次。”
  9. Serde(Serializer/Deserializer)封装序列化逻辑,用于键值对的转换,如 StringSerde 或自定义实现。”
  10. KafkaStreams.start() 启动处理拓扑,而 close() 确保资源清理和状态一致性。”
  11. “交互式查询(Interactive Queries)允许外部应用通过 REST API 直接查询本地状态存储。”
  12. Repartitioning 在聚合或连接前重分区数据,确保相同键的记录由同一任务处理。”
  13. “处理器 API(Processor API)提供底层控制,适合复杂逻辑;而 DSL(高级API)更简洁。”
  14. StreamsConfig 配置类定义关键参数,如 APPLICATION_ID_CONFIG(应用唯一标识)和 BOOTSTRAP_SERVERS_CONFIG(Kafka集群地址)。”
  15. KafkaStreams 实例的线程数由 num.stream.threads 控制,并行处理分区数据。”
  16. “时间语义分为事件时间(Event Time)、处理时间(Processing Time)和摄入时间(Ingestion Time),通过 TimestampExtractor 自定义。”
  17. GlobalKTable 全局表广播到所有实例,适合小规模维度数据(如配置表)的广播连接。”
  18. “错误处理通过 DeserializationExceptionHandler 和 ProductionExceptionHandler 捕获序列化或生产失败。”
  19. “Kafka Streams 的弹性依赖 Kafka 自身的高可用性,任务故障会自动迁移到其他实例。”
  20. “测试使用 TopologyTestDriver 模拟流处理,无需真实 Kafka 集群即可验证逻辑。”

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注