Kappa数据架构学习小结

ops/2025/2/8 0:46:34/

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 架构用“时间换空间”,牺牲一定的计算资源(反复重播数据)来换取架构的简洁性。


http://www.ppmy.cn/ops/156586.html

相关文章

【中间件】 Kafka

1.先导知识: 消息队列MQ(Message Queue): 将需要传输的数据临时(设置有效期)存放在队列中,进行存取消息消息队列中间件: 用来存储消息的中间件(组件) 2.消息队列的应用场景 异步处理 为什么要使用消息队列? 比较耗时的操作放在其他系统中…

Python因为网络原因安装依赖库报错

现象 在终端运行以下指令 pip install pyautogui pillow keyboard 出现报错,终端信息如下: PS D:\code\Python> pip install pyautogui pillow keyboard Collecting pyautoguiUsing cached PyAutoGUI-0.9.54.tar.gz (61 kB)Installing build depe…

SpringBoot应用跨域访问解决方案

一、什么是跨域访问 说到跨域访问,必须先解释一个名词:同源策略。所谓同源策略就是在浏览器端出于安全考量,向服务端发起请求必须满足:协议相同、Host(ip)相同、端口相同的条件,否则访问将被禁止,该访问也…

一篇关于高等数理统计结合机器学习论文的撰写(如何撰写?)

前言 在大学或者研究生阶段,大家可能都会遇到一个问题就是,在上高等数理统计课程时,老师总会让同学们写一些大作业,比如论文什么的,接下来我会从计算机领域的角度,带领大家开启一篇从0到1的高等数理统计文…

Pixflow - CL-DJI Drone LUTs 120个大疆Drone无人机相机航拍电影级镜头LUT调色预设

120组电影质感DJI大疆无人机航拍视频LOG&Rec 709还原颜色分级调色LUTs预设包Pixflow – CL-DJI Drone LUTs 使用基于城市外观和 DJI 无人机镜头的最佳 Drone Luts 颜色预设来提升您的视频。 120 个出色的颜色分级 LUTS,您可以将其与任何无人机视频素材一起使用…

在 Linux 中,进程的状态 I 表示什么

在 Linux 中,进程的状态 I 表示 Idle(空闲)状态。进程处于 I 状态通常表示它处于 内核休眠 状态,即正在等待某些 I/O 操作或者资源。 不过,I 状态在进程列表中并不常见,它通常出现在 内核线程(…

第八天 继续学习ArkTS,掌握基础语法和组件创建

当然,继续学习ArkTS(Ark TypeScript)是一个很好的选择,它主要用于构建华为ArkUI框架中的应用程序。ArkTS结合了TypeScript的语法糖和ArkUI的声明式UI框架,使得开发更高效和便捷。以下是一些基础语法和组件创建的指南&a…

Django4:模板(上)—常用的标签介绍_django4 标签语法

[for...in...empty](#forinempty_94)[with](#with_104)[url](#url_124)[spaceclass](#spaceclass_152)[autoescape](#autoescape_163)[verbatim](#verbatim_184)模板介绍 在之前的章节中,视图函数只是直接返回文本,而在实际生产环境中其实很少这样用&am…