Kappa数据架构学习小结
Kappa 架构是一种大数据处理架构,它的核心思想是**只用一套实时流处理系统**来解决所有数据处理需求(包括实时和离线分析),而不是像传统的 Lambda 架构那样需要同时维护实时和离线两套系统。
---
### 通俗理解:
假设你有一个不断更新的日记本,每天记录自己的开销。传统方式(Lambda 架构)可能需要:
1. **实时记录**:每花一笔钱就立刻更新当天的总开销(类似实时计算)。
2. **定期复核**:每天晚上再从头核对一次所有记录,确保没有错误(类似离线批处理)。
而 Kappa 架构的做法是:
- **只用实时记录这一种方式**。如果发现之前的记录有错,不需要单独复核,而是直接从头到尾重新播放一遍所有开销记录,重新计算一遍总开销(通过流数据重播)。
---
### 举个具体例子:
假设你运营一个短视频平台,需要实时统计每个视频的播放量,同时每天生成播放量的历史报告。
#### 传统 Lambda 架构的做法:
1. **实时层**:用流处理系统(如 Flink)实时统计播放量,展示给用户当前数据。
2. **离线层**:每天用批处理系统(如 Hadoop)重新计算所有历史数据,生成最终准确的报告。
3. **合并结果**:把实时层和离线层的结果合并展示。
#### Kappa 架构的做法:
1. **只用流处理系统**:所有播放量数据通过消息队列(如 Kafka)存储,流处理系统(如 Flink)实时计算播放量。
2. **需要历史数据时**:直接从 Kafka 中重新读取所有历史数据,用流处理系统重新计算一遍,生成最终结果。
- 比如发现某天统计有误,就重新处理一次所有数据,而不是维护两套系统。
---
### Kappa 架构的关键特点:
1. **数据重播**:所有原始数据保存在消息队列(如 Kafka)中,可以反复消费。
2. **单一系统**:无需同时维护实时和离线两套代码逻辑。
3. **简化运维**:避免了 Lambda 架构中两套系统数据一致性的问题。
---
### 适用场景:
- 需要实时处理,但对历史数据重新计算需求较少。
- 数据源天然是流式数据(如 IoT 设备数据、用户行为日志)。
- 团队希望简化架构复杂度。
### 缺点:
- 如果历史数据量极大,反复重播可能效率较低。
- 对消息队列的存储能力和可靠性要求较高。
通过这种设计,Kappa 架构用“时间换空间”,牺牲一定的计算资源(反复重播数据)来换取架构的简洁性。