文章目录
- 一、前言
- 二、传统数据库遇到的问题
-
- [2.1 问题的根源](#2.1 问题的根源)
- [2.2 传统解决方法](#2.2 传统解决方法)
- 三、大数据基础
-
- [3.1 大数据处理技术](#3.1 大数据处理技术)
- [3.2 大数据利用过程](#3.2 大数据利用过程)
- [3.3 大数据处理系统面临的挑战](#3.3 大数据处理系统面临的挑战)
- [3.4 大数据具有的属性和特征](#3.4 大数据具有的属性和特征)
- 四、Lanbda架构
-
- [4.1 批处理层](#4.1 批处理层)
- [4.2 加速层](#4.2 加速层)
- [4.3 服务层](#4.3 服务层)
- 五、Kappa架构
-
- [5.1 实时层](#5.1 实时层)
- [5.2 服务层](#5.2 服务层)
- 六、Lambda和Kappa对比
一、前言
笔记目录大纲请查阅:【软考速通笔记】系统架构设计师------导读
二、传统数据库遇到的问题
2.1 问题的根源
- 用户访问量增加:随着业务的扩展,用户数量激增导致并发请求增多。
- 数据量增长:业务数据的累积导致数据库存储压力增大。
- 性能瓶颈:数据库读写操作因数据量增加而响应时间延长,甚至超时。
2.2 传统解决方法
- 异步处理:引入消息队列等机制,减轻数据库即时处理压力。
- 数据库分区:通过Key分区或范围分区,分散数据存储和访问压力。
- 分片技术:数据库分片或重新分片,提高数据管理的灵活性和查询效率。
- 读写分离:将读操作和写操作分离,提高数据库的并发处理能力。
- 分库分表:通过物理或逻辑的方式,将数据分散存储,提升性能。
三、大数据基础
3.1 大数据处理技术
- 分布式文件系统:如Hadoop,提供高吞吐量的数据访问。
- 数据处理框架:Map/Reduce和Spark,用于大规模数据集的并行处理。
- 消息队列:如Kafka,配合Avro等二进制格式,实现高效的数据传输。
3.2 大数据利用过程
- 采集:从多个数据源收集数据。
- 清洗:去除无效或错误的数据。
- 统计:对数据进行汇总和分析。
- 挖掘:使用机器学习等技术发现数据中的模式和趋势。
3.3 大数据处理系统面临的挑战
- 非结构化数据处理:如何处理和分析非结构化和半结构化数据。
- 复杂性与不确定性:探索大数据的特征描述和系统建模方法。
- 数据异构性:数据异构性对知识发现和管理决策的影响
3.4 大数据具有的属性和特征
- 鲁棒性和容错性:系统能够处理部分节点故障。
- 低延迟:快速响应查询请求。
- 横向扩展:通过增加节点而非增强单个机器性能来扩展系统。
- 通用性:适用于多种类型的数据处理任务。
- 可扩展性:系统能够灵活扩展以适应数据量的增长。
- 即席查询:用户可以根据自己的需求进行查询。
- 维护简便:系统设计简单,易于维护。
- 可调试:系统可以根据需要调整性能和资源分配。
四、Lanbda架构
Lanbda架构是一种用于同时处理离线和实时数据的、可容错的、可扩展的分布式系统。
- 优点:容错性好,查询灵活度高,弹性伸缩,易于扩展。
- 缺点:编码量大,持续处理成本高,重新部署和迁移成本高。
4.1 批处理层
- 数据存储:使用Hadoop HDFS或HBase存储主数据集,保证数据的原始性和不可变性。
- 数据处理:使用Spark或MapReduce周期性地处理增量数据并存储到主数据集。
- 批视图生成:使用MapReduce用于生成批处理视图。
4.2 加速层
- 实时数据处理:使用Hadoop HDFS或HBase处理和存储增量实时数据。
- 实时视图实现:使用Spark或Storm进行实时数据处理和视图。
4.3 服务层
- 请求响应:合并批视图和实时视图的结果数据集,提供最终数据集。
- 数据存储:使用Hbase或Cassandra作为服务层存储。
- 查询视图:使用Hive创建可查询的视图
五、Kappa架构
Kappa架构是在Lambda架构的基础上进行了优化,删除了Batch Layer的架构,将数据通道以消息队列进行替代。
- 优点:简化了Lambda架构中的加速层,统一了离线和实时处理代码,便于维护。
- 缺点:可能存在性能瓶颈,数据关联处理开销大,牺牲了离线计算的可靠性。
5.1 实时层
- 流式处理:采用流式处理引擎逐条处理输入数据,生成实时视图。
- 数据回访:使用Kafka等消息队列回访数据,使用Flink或Spark Streaming进行处理。
5.2 服务层
- 数据湖:Kappa架构倾向于将所有原始数据存储在数据湖中,以供后续分析和处理。这有助于保留所有历史数据,并支持未来的查询和分析需求。可以使用分布式存储系统(如 Apache Hadoop HDFS)
六、Lambda和Kappa对比
对比内容 | Lambda | Kappa |
---|---|---|
复杂度 | 维护两套系统(引擎),复杂度高,成本高 | 维护一套系统(引擎),复杂度低,成本低 |
计算开销 | 周期性批处理计算,维持实时计算,计算开销大 | 必要时进行全量计算,计算开销相对较小 |
实时性 | 满足实时性 | 满足实时性 |
历史数据处理能力 | 批式全量处理,吞吐量大,历史数据处理能力强。 | 流式全量处理,吞吐量相对较低,历史数据处理能力相对较低 |
技术依赖 | 依赖Hadoop、Spark、Storm技术 | 依赖Flink计算引擎、流式计算 |
若觉得文章对你有帮助,随手『点赞』、『收藏』、『关注』,也是对我的支持。