【软考架构师】大数据架构设计理论与实践 核心考点与学习笔记(超详细解析+图解)
摘要:本文为软考高级系统架构设计师(第19章:大数据架构设计理论与实践)的学习笔记。内容涵盖大数据处理系统架构特征、经典Lambda架构与Kappa架构的原理、组成、优缺点对比及选型指南,同时深入探讨了Event Sourcing、CQRS等进阶概念,并结合大型视频网络、广告平台、证券公司等经典案例进行剖析。针对抽象的数据流处理过程,本文利用 Mermaid 语法绘制了清晰的架构图,辅以历年真题解析,助你快速吃透大数据架构,顺利通过软考!
目录
- [1. 大数据处理系统概述](#1. 大数据处理系统概述)
- [1.1 传统数据处理系统的困境](#1.1 传统数据处理系统的困境)
- [1.2 大数据的核心特征与利用过程](#1.2 大数据的核心特征与利用过程)
- [1.3 大数据处理系统的架构特征(⭐⭐⭐)](#1.3 大数据处理系统的架构特征(⭐⭐⭐))
- [2. Lambda架构深度解析(⭐⭐⭐)](#2. Lambda架构深度解析(⭐⭐⭐))
- [2.1 Lambda架构的起源与核心思想](#2.1 Lambda架构的起源与核心思想)
- [2.2 Lambda架构的三层结构](#2.2 Lambda架构的三层结构)
- [2.3 典型技术栈与优缺点](#2.3 典型技术栈与优缺点)
- [3. Kappa架构深度解析(⭐⭐⭐)](#3. Kappa架构深度解析(⭐⭐⭐))
- [3.1 Kappa架构的演进与核心思想](#3.1 Kappa架构的演进与核心思想)
- [3.2 Kappa架构的两层结构](#3.2 Kappa架构的两层结构)
- [3.3 典型技术栈与优缺点](#3.3 典型技术栈与优缺点)
- [4. Lambda vs Kappa:架构选型与对比](#4. Lambda vs Kappa:架构选型与对比)
- [4.1 核心特性对比](#4.1 核心特性对比)
- [4.2 架构设计选择指南](#4.2 架构设计选择指南)
- [5. 进阶架构思想:Event Sourcing与CQRS](#5. 进阶架构思想:Event Sourcing与CQRS)
- [6. 常见Kappa架构变形与拓展](#6. 常见Kappa架构变形与拓展)
- [7. 大数据架构设计经典案例分析](#7. 大数据架构设计经典案例分析)
- [8. 历年典型真题解析](#8. 历年典型真题解析)
- [9. 总结与备考建议](#9. 总结与备考建议)
1. 大数据处理系统概述
在大数据时代,传统的单机关系型数据库已经无法满足海量、高并发、多类型数据处理的诉求。作为架构师,必须掌握大数据处理系统的核心架构特征。
1.1 传统数据处理系统的困境
传统应用的数据系统架构通常是"应用直接访问数据库"。当用户访问量剧增时,数据库负载过载,出现超时。常见的解决思路(演进路线)包括:
- 引入异步处理队列:通过工作处理层批量处理异步队列中的数据修改请求,削峰填谷。
- 数据库水平分区:通常建立 Key 分区,以主键/唯一键 Hash 值作为 Key。
- 数据库分片或重新分片:通常编写脚本自动完成,需进行充分测试。
- 读写分离:主库处理写请求,通过复制机制同步至从库,从库负责读请求。
- 分库分表:按照业务上下文边界拆分数据组织结构,拆分单数据库压力。
1.2 大数据的核心特征与利用过程
大数据并非仅仅是"数据量大",其核心特征在于:
- 体量大(Volume) 、时效性强(Velocity)。
- 类型多样(Variety):包含结构化、半结构化和非结构化数据。
- 重相关性而非因果性:大数据的应用重在发掘数据间的相关性,而非传统逻辑上的因果关系。目的是发现新知识、洞悉规律并进行科学决策。
大数据的利用过程:数据采集 -> 数据清洗 -> 数据统计 -> 数据挖掘。
1.3 大数据处理系统的架构特征(⭐⭐⭐)
这是选择题的高频考点,常以"以下哪个不是大数据架构特征"的形式出现。大数据处理系统架构需具备以下8个特征:
- 鲁棒性和容错性:节点故障时系统能正常运行。
- 低延迟读取和更新能力:满足实时业务需求。
- 横向扩容(Scale-out) :通过增加普通机器节点来扩展系统能力(非纵向扩容 Scale-up)。
- 通用性:能处理多种类型的数据和业务。
- 延展性:系统可随时增加新功能。
- 即席查询能力:支持用户随时自定义条件进行查询。
- 最少维护能力:降低运维成本。
- 可调试性:方便排查问题。
#mermaid-svg-nLp6yzYANQyQavPA{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-nLp6yzYANQyQavPA .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-nLp6yzYANQyQavPA .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-nLp6yzYANQyQavPA .error-icon{fill:#552222;}#mermaid-svg-nLp6yzYANQyQavPA .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-nLp6yzYANQyQavPA .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-nLp6yzYANQyQavPA .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-nLp6yzYANQyQavPA .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-nLp6yzYANQyQavPA .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-nLp6yzYANQyQavPA .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-nLp6yzYANQyQavPA .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-nLp6yzYANQyQavPA .marker{fill:#333333;stroke:#333333;}#mermaid-svg-nLp6yzYANQyQavPA .marker.cross{stroke:#333333;}#mermaid-svg-nLp6yzYANQyQavPA svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-nLp6yzYANQyQavPA p{margin:0;}#mermaid-svg-nLp6yzYANQyQavPA .edge{stroke-width:3;}#mermaid-svg-nLp6yzYANQyQavPA .section--1 rect,#mermaid-svg-nLp6yzYANQyQavPA .section--1 path,#mermaid-svg-nLp6yzYANQyQavPA .section--1 circle,#mermaid-svg-nLp6yzYANQyQavPA .section--1 polygon,#mermaid-svg-nLp6yzYANQyQavPA .section--1 path{fill:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-nLp6yzYANQyQavPA .section--1 text{fill:#ffffff;}#mermaid-svg-nLp6yzYANQyQavPA .node-icon--1{font-size:40px;color:#ffffff;}#mermaid-svg-nLp6yzYANQyQavPA .section-edge--1{stroke:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-nLp6yzYANQyQavPA .edge-depth--1{stroke-width:17;}#mermaid-svg-nLp6yzYANQyQavPA .section--1 line{stroke:hsl(60, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-nLp6yzYANQyQavPA .disabled,#mermaid-svg-nLp6yzYANQyQavPA .disabled circle,#mermaid-svg-nLp6yzYANQyQavPA .disabled text{fill:lightgray;}#mermaid-svg-nLp6yzYANQyQavPA .disabled text{fill:#efefef;}#mermaid-svg-nLp6yzYANQyQavPA .section-0 rect,#mermaid-svg-nLp6yzYANQyQavPA .section-0 path,#mermaid-svg-nLp6yzYANQyQavPA .section-0 circle,#mermaid-svg-nLp6yzYANQyQavPA .section-0 polygon,#mermaid-svg-nLp6yzYANQyQavPA .section-0 path{fill:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-nLp6yzYANQyQavPA .section-0 text{fill:black;}#mermaid-svg-nLp6yzYANQyQavPA .node-icon-0{font-size:40px;color:black;}#mermaid-svg-nLp6yzYANQyQavPA .section-edge-0{stroke:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-nLp6yzYANQyQavPA .edge-depth-0{stroke-width:14;}#mermaid-svg-nLp6yzYANQyQavPA .section-0 line{stroke:hsl(240, 100%, 83.5294117647%);stroke-width:3;}#mermaid-svg-nLp6yzYANQyQavPA .disabled,#mermaid-svg-nLp6yzYANQyQavPA .disabled circle,#mermaid-svg-nLp6yzYANQyQavPA .disabled text{fill:lightgray;}#mermaid-svg-nLp6yzYANQyQavPA .disabled text{fill:#efefef;}#mermaid-svg-nLp6yzYANQyQavPA .section-1 rect,#mermaid-svg-nLp6yzYANQyQavPA .section-1 path,#mermaid-svg-nLp6yzYANQyQavPA .section-1 circle,#mermaid-svg-nLp6yzYANQyQavPA .section-1 polygon,#mermaid-svg-nLp6yzYANQyQavPA .section-1 path{fill:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-nLp6yzYANQyQavPA .section-1 text{fill:black;}#mermaid-svg-nLp6yzYANQyQavPA .node-icon-1{font-size:40px;color:black;}#mermaid-svg-nLp6yzYANQyQavPA .section-edge-1{stroke:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-nLp6yzYANQyQavPA .edge-depth-1{stroke-width:11;}#mermaid-svg-nLp6yzYANQyQavPA .section-1 line{stroke:hsl(260, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-nLp6yzYANQyQavPA .disabled,#mermaid-svg-nLp6yzYANQyQavPA .disabled circle,#mermaid-svg-nLp6yzYANQyQavPA .disabled text{fill:lightgray;}#mermaid-svg-nLp6yzYANQyQavPA .disabled text{fill:#efefef;}#mermaid-svg-nLp6yzYANQyQavPA .section-2 rect,#mermaid-svg-nLp6yzYANQyQavPA .section-2 path,#mermaid-svg-nLp6yzYANQyQavPA .section-2 circle,#mermaid-svg-nLp6yzYANQyQavPA .section-2 polygon,#mermaid-svg-nLp6yzYANQyQavPA .section-2 path{fill:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-nLp6yzYANQyQavPA .section-2 text{fill:#ffffff;}#mermaid-svg-nLp6yzYANQyQavPA .node-icon-2{font-size:40px;color:#ffffff;}#mermaid-svg-nLp6yzYANQyQavPA .section-edge-2{stroke:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-nLp6yzYANQyQavPA .edge-depth-2{stroke-width:8;}#mermaid-svg-nLp6yzYANQyQavPA .section-2 line{stroke:hsl(90, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-nLp6yzYANQyQavPA .disabled,#mermaid-svg-nLp6yzYANQyQavPA .disabled circle,#mermaid-svg-nLp6yzYANQyQavPA .disabled text{fill:lightgray;}#mermaid-svg-nLp6yzYANQyQavPA .disabled text{fill:#efefef;}#mermaid-svg-nLp6yzYANQyQavPA .section-3 rect,#mermaid-svg-nLp6yzYANQyQavPA .section-3 path,#mermaid-svg-nLp6yzYANQyQavPA .section-3 circle,#mermaid-svg-nLp6yzYANQyQavPA .section-3 polygon,#mermaid-svg-nLp6yzYANQyQavPA .section-3 path{fill:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-nLp6yzYANQyQavPA .section-3 text{fill:black;}#mermaid-svg-nLp6yzYANQyQavPA .node-icon-3{font-size:40px;color:black;}#mermaid-svg-nLp6yzYANQyQavPA .section-edge-3{stroke:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-nLp6yzYANQyQavPA .edge-depth-3{stroke-width:5;}#mermaid-svg-nLp6yzYANQyQavPA .section-3 line{stroke:hsl(120, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-nLp6yzYANQyQavPA .disabled,#mermaid-svg-nLp6yzYANQyQavPA .disabled circle,#mermaid-svg-nLp6yzYANQyQavPA .disabled text{fill:lightgray;}#mermaid-svg-nLp6yzYANQyQavPA .disabled text{fill:#efefef;}#mermaid-svg-nLp6yzYANQyQavPA .section-4 rect,#mermaid-svg-nLp6yzYANQyQavPA .section-4 path,#mermaid-svg-nLp6yzYANQyQavPA .section-4 circle,#mermaid-svg-nLp6yzYANQyQavPA .section-4 polygon,#mermaid-svg-nLp6yzYANQyQavPA .section-4 path{fill:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-nLp6yzYANQyQavPA .section-4 text{fill:black;}#mermaid-svg-nLp6yzYANQyQavPA .node-icon-4{font-size:40px;color:black;}#mermaid-svg-nLp6yzYANQyQavPA .section-edge-4{stroke:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-nLp6yzYANQyQavPA .edge-depth-4{stroke-width:2;}#mermaid-svg-nLp6yzYANQyQavPA .section-4 line{stroke:hsl(150, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-nLp6yzYANQyQavPA .disabled,#mermaid-svg-nLp6yzYANQyQavPA .disabled circle,#mermaid-svg-nLp6yzYANQyQavPA .disabled text{fill:lightgray;}#mermaid-svg-nLp6yzYANQyQavPA .disabled text{fill:#efefef;}#mermaid-svg-nLp6yzYANQyQavPA .section-5 rect,#mermaid-svg-nLp6yzYANQyQavPA .section-5 path,#mermaid-svg-nLp6yzYANQyQavPA .section-5 circle,#mermaid-svg-nLp6yzYANQyQavPA .section-5 polygon,#mermaid-svg-nLp6yzYANQyQavPA .section-5 path{fill:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-nLp6yzYANQyQavPA .section-5 text{fill:black;}#mermaid-svg-nLp6yzYANQyQavPA .node-icon-5{font-size:40px;color:black;}#mermaid-svg-nLp6yzYANQyQavPA .section-edge-5{stroke:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-nLp6yzYANQyQavPA .edge-depth-5{stroke-width:-1;}#mermaid-svg-nLp6yzYANQyQavPA .section-5 line{stroke:hsl(180, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-nLp6yzYANQyQavPA .disabled,#mermaid-svg-nLp6yzYANQyQavPA .disabled circle,#mermaid-svg-nLp6yzYANQyQavPA .disabled text{fill:lightgray;}#mermaid-svg-nLp6yzYANQyQavPA .disabled text{fill:#efefef;}#mermaid-svg-nLp6yzYANQyQavPA .section-6 rect,#mermaid-svg-nLp6yzYANQyQavPA .section-6 path,#mermaid-svg-nLp6yzYANQyQavPA .section-6 circle,#mermaid-svg-nLp6yzYANQyQavPA .section-6 polygon,#mermaid-svg-nLp6yzYANQyQavPA .section-6 path{fill:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-nLp6yzYANQyQavPA .section-6 text{fill:black;}#mermaid-svg-nLp6yzYANQyQavPA .node-icon-6{font-size:40px;color:black;}#mermaid-svg-nLp6yzYANQyQavPA .section-edge-6{stroke:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-nLp6yzYANQyQavPA .edge-depth-6{stroke-width:-4;}#mermaid-svg-nLp6yzYANQyQavPA .section-6 line{stroke:hsl(210, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-nLp6yzYANQyQavPA .disabled,#mermaid-svg-nLp6yzYANQyQavPA .disabled circle,#mermaid-svg-nLp6yzYANQyQavPA .disabled text{fill:lightgray;}#mermaid-svg-nLp6yzYANQyQavPA .disabled text{fill:#efefef;}#mermaid-svg-nLp6yzYANQyQavPA .section-7 rect,#mermaid-svg-nLp6yzYANQyQavPA .section-7 path,#mermaid-svg-nLp6yzYANQyQavPA .section-7 circle,#mermaid-svg-nLp6yzYANQyQavPA .section-7 polygon,#mermaid-svg-nLp6yzYANQyQavPA .section-7 path{fill:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-nLp6yzYANQyQavPA .section-7 text{fill:black;}#mermaid-svg-nLp6yzYANQyQavPA .node-icon-7{font-size:40px;color:black;}#mermaid-svg-nLp6yzYANQyQavPA .section-edge-7{stroke:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-nLp6yzYANQyQavPA .edge-depth-7{stroke-width:-7;}#mermaid-svg-nLp6yzYANQyQavPA .section-7 line{stroke:hsl(270, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-nLp6yzYANQyQavPA .disabled,#mermaid-svg-nLp6yzYANQyQavPA .disabled circle,#mermaid-svg-nLp6yzYANQyQavPA .disabled text{fill:lightgray;}#mermaid-svg-nLp6yzYANQyQavPA .disabled text{fill:#efefef;}#mermaid-svg-nLp6yzYANQyQavPA .section-8 rect,#mermaid-svg-nLp6yzYANQyQavPA .section-8 path,#mermaid-svg-nLp6yzYANQyQavPA .section-8 circle,#mermaid-svg-nLp6yzYANQyQavPA .section-8 polygon,#mermaid-svg-nLp6yzYANQyQavPA .section-8 path{fill:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-nLp6yzYANQyQavPA .section-8 text{fill:black;}#mermaid-svg-nLp6yzYANQyQavPA .node-icon-8{font-size:40px;color:black;}#mermaid-svg-nLp6yzYANQyQavPA .section-edge-8{stroke:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-nLp6yzYANQyQavPA .edge-depth-8{stroke-width:-10;}#mermaid-svg-nLp6yzYANQyQavPA .section-8 line{stroke:hsl(330, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-nLp6yzYANQyQavPA .disabled,#mermaid-svg-nLp6yzYANQyQavPA .disabled circle,#mermaid-svg-nLp6yzYANQyQavPA .disabled text{fill:lightgray;}#mermaid-svg-nLp6yzYANQyQavPA .disabled text{fill:#efefef;}#mermaid-svg-nLp6yzYANQyQavPA .section-9 rect,#mermaid-svg-nLp6yzYANQyQavPA .section-9 path,#mermaid-svg-nLp6yzYANQyQavPA .section-9 circle,#mermaid-svg-nLp6yzYANQyQavPA .section-9 polygon,#mermaid-svg-nLp6yzYANQyQavPA .section-9 path{fill:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-nLp6yzYANQyQavPA .section-9 text{fill:black;}#mermaid-svg-nLp6yzYANQyQavPA .node-icon-9{font-size:40px;color:black;}#mermaid-svg-nLp6yzYANQyQavPA .section-edge-9{stroke:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-nLp6yzYANQyQavPA .edge-depth-9{stroke-width:-13;}#mermaid-svg-nLp6yzYANQyQavPA .section-9 line{stroke:hsl(0, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-nLp6yzYANQyQavPA .disabled,#mermaid-svg-nLp6yzYANQyQavPA .disabled circle,#mermaid-svg-nLp6yzYANQyQavPA .disabled text{fill:lightgray;}#mermaid-svg-nLp6yzYANQyQavPA .disabled text{fill:#efefef;}#mermaid-svg-nLp6yzYANQyQavPA .section-10 rect,#mermaid-svg-nLp6yzYANQyQavPA .section-10 path,#mermaid-svg-nLp6yzYANQyQavPA .section-10 circle,#mermaid-svg-nLp6yzYANQyQavPA .section-10 polygon,#mermaid-svg-nLp6yzYANQyQavPA .section-10 path{fill:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-nLp6yzYANQyQavPA .section-10 text{fill:black;}#mermaid-svg-nLp6yzYANQyQavPA .node-icon-10{font-size:40px;color:black;}#mermaid-svg-nLp6yzYANQyQavPA .section-edge-10{stroke:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-nLp6yzYANQyQavPA .edge-depth-10{stroke-width:-16;}#mermaid-svg-nLp6yzYANQyQavPA .section-10 line{stroke:hsl(30, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-nLp6yzYANQyQavPA .disabled,#mermaid-svg-nLp6yzYANQyQavPA .disabled circle,#mermaid-svg-nLp6yzYANQyQavPA .disabled text{fill:lightgray;}#mermaid-svg-nLp6yzYANQyQavPA .disabled text{fill:#efefef;}#mermaid-svg-nLp6yzYANQyQavPA .section-root rect,#mermaid-svg-nLp6yzYANQyQavPA .section-root path,#mermaid-svg-nLp6yzYANQyQavPA .section-root circle,#mermaid-svg-nLp6yzYANQyQavPA .section-root polygon{fill:hsl(240, 100%, 46.2745098039%);}#mermaid-svg-nLp6yzYANQyQavPA .section-root text{fill:#ffffff;}#mermaid-svg-nLp6yzYANQyQavPA .section-root span{color:#ffffff;}#mermaid-svg-nLp6yzYANQyQavPA .section-2 span{color:#ffffff;}#mermaid-svg-nLp6yzYANQyQavPA .icon-container{height:100%;display:flex;justify-content:center;align-items:center;}#mermaid-svg-nLp6yzYANQyQavPA .edge{fill:none;}#mermaid-svg-nLp6yzYANQyQavPA .mindmap-node-label{dy:1em;alignment-baseline:middle;text-anchor:middle;dominant-baseline:middle;text-align:center;}#mermaid-svg-nLp6yzYANQyQavPA :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 大数据处理系统
架构特征
鲁棒性与容错性
低延迟读取和更新
Scale-out
通用性
延展性
即席查询能力
最少维护能力
可调试性
2. Lambda架构深度解析(⭐⭐⭐)
2.1 Lambda架构的起源与核心思想
Lambda架构 的目的在于提供一个能满足大数据系统关键特性的架构,包括高容错、低延迟、可扩展等。它整合了离线计算 与实时计算 ,融合了不可变性、读写分离 和复杂性隔离等原则。
为什么叫Lambda? 因为它的数据流向图类似于希腊字母大写的"Λ"(Lambda),一撇处理离线数据,一捺处理实时数据。
应用场景:机器学习、物联网、流处理。
2.2 Lambda架构的三层结构
Lambda架构将系统分解为三层:批处理层、加速层和服务层。
#mermaid-svg-3GO2RtO410l7x8wp{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-3GO2RtO410l7x8wp .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-3GO2RtO410l7x8wp .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-3GO2RtO410l7x8wp .error-icon{fill:#552222;}#mermaid-svg-3GO2RtO410l7x8wp .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-3GO2RtO410l7x8wp .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-3GO2RtO410l7x8wp .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-3GO2RtO410l7x8wp .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-3GO2RtO410l7x8wp .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-3GO2RtO410l7x8wp .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-3GO2RtO410l7x8wp .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-3GO2RtO410l7x8wp .marker{fill:#333333;stroke:#333333;}#mermaid-svg-3GO2RtO410l7x8wp .marker.cross{stroke:#333333;}#mermaid-svg-3GO2RtO410l7x8wp svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-3GO2RtO410l7x8wp p{margin:0;}#mermaid-svg-3GO2RtO410l7x8wp .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-3GO2RtO410l7x8wp .cluster-label text{fill:#333;}#mermaid-svg-3GO2RtO410l7x8wp .cluster-label span{color:#333;}#mermaid-svg-3GO2RtO410l7x8wp .cluster-label span p{background-color:transparent;}#mermaid-svg-3GO2RtO410l7x8wp .label text,#mermaid-svg-3GO2RtO410l7x8wp span{fill:#333;color:#333;}#mermaid-svg-3GO2RtO410l7x8wp .node rect,#mermaid-svg-3GO2RtO410l7x8wp .node circle,#mermaid-svg-3GO2RtO410l7x8wp .node ellipse,#mermaid-svg-3GO2RtO410l7x8wp .node polygon,#mermaid-svg-3GO2RtO410l7x8wp .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-3GO2RtO410l7x8wp .rough-node .label text,#mermaid-svg-3GO2RtO410l7x8wp .node .label text,#mermaid-svg-3GO2RtO410l7x8wp .image-shape .label,#mermaid-svg-3GO2RtO410l7x8wp .icon-shape .label{text-anchor:middle;}#mermaid-svg-3GO2RtO410l7x8wp .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-3GO2RtO410l7x8wp .rough-node .label,#mermaid-svg-3GO2RtO410l7x8wp .node .label,#mermaid-svg-3GO2RtO410l7x8wp .image-shape .label,#mermaid-svg-3GO2RtO410l7x8wp .icon-shape .label{text-align:center;}#mermaid-svg-3GO2RtO410l7x8wp .node.clickable{cursor:pointer;}#mermaid-svg-3GO2RtO410l7x8wp .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-3GO2RtO410l7x8wp .arrowheadPath{fill:#333333;}#mermaid-svg-3GO2RtO410l7x8wp .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-3GO2RtO410l7x8wp .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-3GO2RtO410l7x8wp .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-3GO2RtO410l7x8wp .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-3GO2RtO410l7x8wp .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-3GO2RtO410l7x8wp .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-3GO2RtO410l7x8wp .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-3GO2RtO410l7x8wp .cluster text{fill:#333;}#mermaid-svg-3GO2RtO410l7x8wp .cluster span{color:#333;}#mermaid-svg-3GO2RtO410l7x8wp div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-3GO2RtO410l7x8wp .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-3GO2RtO410l7x8wp rect.text{fill:none;stroke-width:0;}#mermaid-svg-3GO2RtO410l7x8wp .icon-shape,#mermaid-svg-3GO2RtO410l7x8wp .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-3GO2RtO410l7x8wp .icon-shape p,#mermaid-svg-3GO2RtO410l7x8wp .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-3GO2RtO410l7x8wp .icon-shape .label rect,#mermaid-svg-3GO2RtO410l7x8wp .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-3GO2RtO410l7x8wp .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-3GO2RtO410l7x8wp .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-3GO2RtO410l7x8wp :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 服务层 Serving Layer
加速层 Speed Layer
批处理层 Batch Layer
合并生成最终数据集
数据源 Data Source
HDFS 存储主数据集
批处理计算引擎
Spark/MapReduce
批视图 Batch View
流处理引擎
Storm/Spark Streaming
实时视图 Real-time View
HBase/Cassandra 数据库
查询合并
用户查询 / 外部应用
批处理层
加速层
服务层
- 批处理层(Batch Layer) :
- 核心功能 :存储数据集,在数据集上预先计算查询函数,并构建查询所对应的 Batch View(批视图)。
- 主数据集特征 :数据是原始的 、不可变的 、永远真实的。
- 特点:可以很好地处理离线全量数据,但数据处理时延很高。
- 加速层(Speed Layer) :
- 核心功能 :处理最近的增量数据流 。为了效率,在接收到新数据后不断更新 Real-time View(实时视图),快速执行即席查询。
- 特点:只处理最近产生的实时数据;处理时延很低;但数据可能不是准确的,也不是全量的。
- 服务层(Serving Layer) :
- 核心功能 :合并 Batch View 和 Real-time View 中的结果数据集,生成最终的查询视图,用于响应用户的查询请求。这本质上是一种读写分离。
2.3 典型技术栈与优缺点
- 典型技术实现 :
- 存储主数据集:
Hadoop (HDFS) - 批处理引擎:
Spark或MapReduce - 加速层引擎:
Spark (Streaming)或Storm - 服务层数据库:
HBase或Cassandra - 查询视图构建:
Hive
- 存储主数据集:
- 优点:容错性好、查询灵活度高、易伸缩、易扩展。
- 缺点 :
- 全场景覆盖带来的编码开销(需维护离线、实时两套系统)。
- 针对具体场景重新离线训练一遍益处不大。
- 重新部署和迁移成本很高。
- 实时处理与离线处理结果可能不一致。
3. Kappa架构深度解析(⭐⭐⭐)
3.1 Kappa架构的演进与核心思想
Kappa架构是在 Lambda 基础上进行了优化,删除了批处理层(Batch Layer) ,将数据通道以**消息队列(如 Kafka)**进行替代。
其核心思想是:通过改进 Lambda 架构中的加速层,使它既能够进行实时数据处理,同时也有能力在业务逻辑更新的情况下重新处理以前处理过的历史数据。(只需重放存储的历史数据即可)。
本质:将实时和离线代码统一起来,方便维护,统一数据口径。
3.2 Kappa架构的两层结构
Kappa架构分为两层:实时层和服务层。
#mermaid-svg-gfOYIRm6oGoc6105{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-gfOYIRm6oGoc6105 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-gfOYIRm6oGoc6105 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-gfOYIRm6oGoc6105 .error-icon{fill:#552222;}#mermaid-svg-gfOYIRm6oGoc6105 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-gfOYIRm6oGoc6105 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-gfOYIRm6oGoc6105 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-gfOYIRm6oGoc6105 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-gfOYIRm6oGoc6105 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-gfOYIRm6oGoc6105 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-gfOYIRm6oGoc6105 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-gfOYIRm6oGoc6105 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-gfOYIRm6oGoc6105 .marker.cross{stroke:#333333;}#mermaid-svg-gfOYIRm6oGoc6105 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-gfOYIRm6oGoc6105 p{margin:0;}#mermaid-svg-gfOYIRm6oGoc6105 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-gfOYIRm6oGoc6105 .cluster-label text{fill:#333;}#mermaid-svg-gfOYIRm6oGoc6105 .cluster-label span{color:#333;}#mermaid-svg-gfOYIRm6oGoc6105 .cluster-label span p{background-color:transparent;}#mermaid-svg-gfOYIRm6oGoc6105 .label text,#mermaid-svg-gfOYIRm6oGoc6105 span{fill:#333;color:#333;}#mermaid-svg-gfOYIRm6oGoc6105 .node rect,#mermaid-svg-gfOYIRm6oGoc6105 .node circle,#mermaid-svg-gfOYIRm6oGoc6105 .node ellipse,#mermaid-svg-gfOYIRm6oGoc6105 .node polygon,#mermaid-svg-gfOYIRm6oGoc6105 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-gfOYIRm6oGoc6105 .rough-node .label text,#mermaid-svg-gfOYIRm6oGoc6105 .node .label text,#mermaid-svg-gfOYIRm6oGoc6105 .image-shape .label,#mermaid-svg-gfOYIRm6oGoc6105 .icon-shape .label{text-anchor:middle;}#mermaid-svg-gfOYIRm6oGoc6105 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-gfOYIRm6oGoc6105 .rough-node .label,#mermaid-svg-gfOYIRm6oGoc6105 .node .label,#mermaid-svg-gfOYIRm6oGoc6105 .image-shape .label,#mermaid-svg-gfOYIRm6oGoc6105 .icon-shape .label{text-align:center;}#mermaid-svg-gfOYIRm6oGoc6105 .node.clickable{cursor:pointer;}#mermaid-svg-gfOYIRm6oGoc6105 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-gfOYIRm6oGoc6105 .arrowheadPath{fill:#333333;}#mermaid-svg-gfOYIRm6oGoc6105 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-gfOYIRm6oGoc6105 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-gfOYIRm6oGoc6105 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-gfOYIRm6oGoc6105 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-gfOYIRm6oGoc6105 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-gfOYIRm6oGoc6105 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-gfOYIRm6oGoc6105 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-gfOYIRm6oGoc6105 .cluster text{fill:#333;}#mermaid-svg-gfOYIRm6oGoc6105 .cluster span{color:#333;}#mermaid-svg-gfOYIRm6oGoc6105 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-gfOYIRm6oGoc6105 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-gfOYIRm6oGoc6105 rect.text{fill:none;stroke-width:0;}#mermaid-svg-gfOYIRm6oGoc6105 .icon-shape,#mermaid-svg-gfOYIRm6oGoc6105 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-gfOYIRm6oGoc6105 .icon-shape p,#mermaid-svg-gfOYIRm6oGoc6105 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-gfOYIRm6oGoc6105 .icon-shape .label rect,#mermaid-svg-gfOYIRm6oGoc6105 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-gfOYIRm6oGoc6105 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-gfOYIRm6oGoc6105 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-gfOYIRm6oGoc6105 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 服务层
实时层
业务逻辑更新时
重放历史数据
输入数据 / 数据源
消息队列 Kafka
存储历史数据
流处理引擎 Flink/Spark Streaming
实时视图
数据湖 / 存储服务
外部查询
- 实时层 :处理输入数据,生成实时视图。采用流式处理引擎(如
Flink或Spark Streaming)逐条处理输入数据。 - 服务层 :使用实时视图中的结果数据集响应用户请求。实践中使用数据湖中的存储作为服务层。
3.3 典型技术栈与优缺点
- 优点:将实时和离线代码统一,方便维护,统一数据口径,避免了 Lambda 架构中离线与实时数据合并的问题。
- 缺点 :
- 消息中间件性能瓶颈:Kafka 等消息中间件缓存的数据量和回溯数据有性能瓶颈。
- 资源消耗大:一次性回溯订正大规模历史数据,对实时计算资源消耗非常大。
- 数据丢失风险:大量不同实时流关联时,依赖系统能力,可能因数据流先后顺序问题导致数据丢失。
- 稳定性:抛弃了离线计算稳定可靠的特点。
4. Lambda vs Kappa:架构选型与对比
4.1 核心特性对比(⭐⭐⭐)
| 对比内容 | Lambda架构 | Kappa架构 |
|---|---|---|
| 复杂度与开发维护成本 | 维护两套系统(引擎),复杂度高,成本高 | 维护一套系统(引擎),复杂度低,成本低 |
| 计算开销 | 周期性批处理计算 + 持续实时计算,计算开销大 | 必要时进行全量计算,计算开销相对较小 |
| 实时性 | 满足实时性 | 满足实时性 |
| 历史数据处理能力 | 批式全量处理,吞吐量大,历史数据处理能力强,但批视图与实时视图存在冲突可能 | 流式全量处理,吞吐量相对较低,历史数据处理能力相对较弱 |
| 技术依赖 | Hadoop、Spark、Storm | Flink计算引擎,偏流式计算 |
| 一致性 | 实时处理和离线处理结果可能不一致 | 实时和离线代码统一,无数据合并问题 |
4.2 架构设计选择指南(⭐⭐⭐)
作为架构师,在选择架构时需从以下维度考量:
- 业务需求与技术要求:如果是全新的流式计算场景,倾向 Kappa;如果已有大量 Hadoop 资产,倾向 Lambda。
- 复杂度:Lambda 双系统复杂,Kappa 单系统简单。
- 开发维护成本:预算有限、团队规模小选 Kappa;预算充足选 Lambda。
- 历史数据处理能力:频繁使用海量历史数据分析选 Lambda;仅使用小规模数据集选 Kappa。
- 场景适配 :Kappa 更擅长业务本身为增量数据写入 场景(如各种时序数据,天然有窗口概念);Lambda 更适合对历史数据分析查询的场景(分析师按任意条件组合探索性分析)。
5. 进阶架构思想:Event Sourcing与CQRS
这部分内容在教程中作为补充,是理解大数据架构的基石。
5.1 事件溯源(Event Sourcing)
Event Sourcing 本质上是一种数据持久化的方式,由三个核心观点构成:
- 整个系统以事件为驱动,所有业务都由事件驱动来完成。
- 事件是核心,系统的数据以事件为基础,事件要保存在某种存储上。
- 业务数据只是一些由事件产生的视图,不一定要保存到数据库中。
与Lambda的关系 :Lambda 架构中数据集的存储使用的概念与 Event Sourcing 中的思想完全一致。它们都在使用统一的数据模型对数据处理事件本身进行定义。发生错误时,可通过模型找到错误原因,对事件重新计算以丢弃错误信息,恢复正确状态,以此实现系统的容错性。
5.2 CQRS(命令查询职责分离)
CQRS 架构分离了对于数据进行的读操作(查询)和写操作(修改) 。将改变数据模型状态的命令和查询操作分离。这是领域驱动设计(DDD)的一个架构模式,主要用于解决数据库报表的输出处理方式。
与Lambda的关系 :Lambda 架构中,数据的修改通过批处理和流处理实现(写操作转换成查询对应的 View)。查询时,直接读取 View 得到结果。这实际上是一种形式的读写分离。
6. 常见Kappa架构变形与拓展
6.1 Kappa+ 架构
- 核心思想:让流计算框架直接读 HDFS 里的数据仓库数据,一并实现实时计算和历史数据 backfill(回填)计算,不需要为 backfill 作业长期保存日志或者把数据拷贝回消息队列。
- 代表技术 :
Apache Hudi框架(支持更新、删除已有 parquet 数据,支持增量消费)。 - 数据流向:不同来源数据 -> Kafka -> Hadoop (HDFS 存储中间数据) -> Spark分析 -> 上层业务查询。
6.2 混合分析系统 Kappa 架构
- 痛点:Lambda 和 Kappa 架构都存在展示层的困难点------结果视图如何支持热点数据查询分析?
- 解决方案 :在 Kappa 基础上衍生数据分析流程。在基于 Kafka + Flink 构建 Kappa 流计算架构的基础上,利用 Kafka 对接 ElasticSearch 实时分析引擎,弥补数据分析能力不足。
- 局限:ES 只适合对合理数据量级的热点数据进行索引,无法覆盖所有批处理相关的分析需求。这种混合架构某种意义上属于 Kappa 和 Lambda 间的折中方案。
7. 大数据架构设计经典案例分析
7.1 大规模视频网络(Lambda架构)
- 场景:某视频网处理奥运会大规模视频网络观看数据。
- 架构 :采用 Lambda 架构。数据计算层分为离线计算、实时计算、合并计算。
- 离线计算:存储批量离线数据,周期性使用 Spark 和 Map/Reduce 进行批处理,结果更新到批视图后,使用 Impala/Hive 建立数据仓库,结果写入 HDFS。
- 实时计算:采用 Spark Streaming,只处理实时增量数据,结果更新到实时视图。
- 合并计算:合并批视图和实时视图中的结果,生成最终数据集写入 HBase 用于响应用户查询。
7.2 广告平台(Lambda架构)
- 架构分层 :
- 批处理层:每天凌晨将 Kafka 消息同步到 HDFS -> 解析为 Hive 表 -> 计算统计结果 -> 转储到 MySQL 作为批视图。
- 加速层:Spark Streaming 实时监听 Kafka -> 计算实时数据 -> 结果存 Redis 作为实时视图。
- 服务层:Java Web 服务,对外提供 HTTP 接口,读取 MySQL 和 Redis 结果合并。
7.3 某证券公司智能决策系统(Kappa架构)
- 架构:基于 Kappa 架构的实时日志分析平台。
- 流程:Filebeat 采集日志 -> Kafka 缓存 -> Flink 实时清洗解析 -> 日志转储 ES,指标转储 OpenTSDB -> 日志监控(告警消息队列)。
7.4 电商智能决策大数据系统(Kappa架构)
- 流程:B端采集实时流数据 -> Kafka 缓存 -> Flink 过滤聚合 -> 结果转储至 Hive 日志库和 Tair 缓存 -> 后续决策服务从 Tair 获取数据进行模型训练。
8. 历年典型真题解析
真题1 :以下不属于大数据处理系统架构特征的是( )。
A. 鲁棒性
B. 容错性
C. 纵向扩容
D. 即席查询能力
解析 :答案选 C 。大数据处理系统架构特征包括鲁棒性、容错性、横向扩容(Scale-out)、通用性、延展性、即席查询能力、最少维护能力和可调试性。纵向扩容(Scale-up)是传统单机提升性能的方式,成本高昂且有物理极限,不是大数据分布式架构的特征。
真题2 :Lambda架构分为三层:(1)的核心功能是存储主数据集。(2)的核心功能是处理增量实时数据,生成实时视图,快速执行即席查询。(3)的核心功能是响应用户请求,合并批视图和实时视图中的结果数据集得到最终数据集。
(1)A.批处理层 B.流处理层 C.加速层 D.存储层
(2)A.批处理层 B.服务层 C.加速层 D.视图层
(3)A.视图层 B.流处理层 C.服务层 D.存储层
解析 :答案选 A、C、C。
- 批处理层(Batch Layer)负责存储主数据集,并周期性生成批视图。
- 加速层(Speed Layer)负责处理增量实时数据,生成实时视图。
- 服务层(Serving Layer)负责合并两个视图的数据集,生成最终结果响应用户查询。
真题3 :关于Lambda架构和Kappa架构的描述,正确的是( )。
A. Kappa架构维护两套系统,开发成本高
B. Lambda架构放弃了批处理的支持,更擅长增量数据写入
C. Lambda架构历史数据处理能力强,但实时与离线结果可能不一致
D. Kappa架构依赖Flink计算引擎,历史数据处理吞吐量远大于Lambda
解析 :答案选 C。
- A错误:Kappa维护一套系统,Lambda维护两套。
- B错误:Kappa放弃了批处理支持。Lambda直接支持批处理。
- C正确:Lambda批处理吞吐量大,历史处理强,但双系统容易导致结果不一致。
- D错误:Kappa的流式全量处理吞吐量相对较低,历史数据处理能力不如Lambda。
9. 总结与备考建议
大数据架构是软考架构师近几年非常热门的考点,不仅出现在选择题中,更是案例分析(如"系统架构设计"大题)的高频素材。
- 熟记核心概念:大数据的特征(体量大、时效性强、类型多样、重相关性)。
- 架构特征辨析 :牢记横向扩容,千万别选纵向扩容。
- 吃透 Lambda 与 Kappa:这是本章的灵魂。一定要能手画出 Lambda 的三层结构图和 Kappa 的两层结构图。
- 对比选型:熟练掌握两者在维护成本、实时性、历史数据处理能力上的差异,遇到案例题时能根据背景(如"历史数据庞大且需要频繁批处理"、"只做实时增量数据流处理")做出正确的选型。
- 技术栈匹配:Hadoop(HDFS)、Spark/Storm/Flink、HBase/Redis/ES,看到这些组件要能对应到架构的具体层。
建议结合历年真题,反复体会"Event Sourcing(事件溯源)"和"CQRS(读写分离)"与 Lambda/Kappa 架构的内在联系,这样能在论文写作中拔高立意。祝各位考友逢考必过!
标签:#软考 #系统架构设计师 #大数据架构 #Lambda架构 #Kappa架构 #架构设计 #学习笔记