系统架构设计师 大数据架构篇二
大数据架构 🌐
大数据处理系统分析 🔍
大数据处理系统三大挑战 🚀
- 非结构化数据处理:如何处理非结构化和半结构化数据。
- 复杂性与不确定性:大数据复杂性、不确定性特征描述的刻画方法和大数据的系统建模。
- 异构性影响:数据异构性与决策异构性的关系对大数据知识发现与管理决策的影响。
大数据处理系统架构八大特征 🏗️
- 鲁棒性和容错性 🛡️:系统能够在组件失败时继续运行。
- 低延迟读取和更新能力 ⏱️:快速响应数据读取和更新请求。
- 横向扩容 🌟:系统能够通过增加节点来扩展处理能力。
- 通用性 🌍:适用于多种类型的数据处理任务。
- 延展性 📈:系统设计允许功能和性能的扩展。
- 即席查询能力 🔎:支持用户即时发起的查询请求。
- 最少维护能力 🔧:系统设计注重减少维护工作量。
- 可调试性 🐛:系统提供有效的错误定位和调试手段。
Kappa 架构 🎓
Kappa 架构介绍 📖
Kappa 架构在Lambda的基础上进行了优化,删除了 Batch Layer,将数据通道以消息队列进行替代。因此对于Kappa 架构来说,依旧以流处理为主,数据在数据湖层面进行了存储,当需要进行离线分析或者再次计算的时候,则将数据湖的数据再次经过消息队列重播一次则可。
Kappa 架构的优缺点 📌
优点 🎯
- 代码统一 💻:将实时和离线代码统一起来,方便维护并统一了数据口径的问题。
缺点 🚫
- 性能瓶颈 🚧:消息中间件缓存的数据量和回溯数据有性能瓶颈。
- 数据丢失风险 📉:在实时数据处理时,遇到大量不同的实时流进行关联时,非常依赖实时计算系统的能力,很可能因为数据流先后顺序问题,导致数据丢失。
- 稳定性问题 🛑:Kappa 在抛弃了离线数据处理模块的时候,同时抛弃了离线计算更加稳定可靠的特点。
伪代码示例 (Kappa 架构实时数据处理)🌊
function processStream(stream):
for message in stream:
processed_data = transform(message)
store_to_data_lake(processed_data)
function store_to_data_lake(data):
data_lake.save(data)
function replay_data_for_analysis():
raw_data = data_lake.fetch_data()
for message in raw_data:
processed_data = transform(message)
store_to_data_lake(processed_data)
Kappa+ 变形架构 🌟
Kappa+ 架构核心思想 🛠️
Kappa+架构的核心思想是让流计算框架直接读取HDFS中的数据仓库数据,实现实时计算和历史数据回溯计算,无需保存日志或复制数据到消息队列。将任务分为无状态任务(并行扫描全量数据)和时间窗口任务(基于时间分区对数据进行计算)。
时间窗口任务原理 🕒
- 数据分区存储 📂:将数据按时间分区存储。
- 分区分时计算 ⏳:按时间先后顺序计算每个分区的数据,分区内数据乱序并行,全部分区计算完成后进入下一个分区。
伪代码示例 (Kappa+ 架构数据处理)🌟
function process_data_lake():
data = hdfs.read_data()
processed_data = transform(data)
store_to_service_layer(processed_data)
function transform(data):
// 转换逻辑
return transformed_data
function store_to_service_layer(data):
// 存储到服务层逻辑
service_layer.save(data)
数据分析架构 📊
在基于使用Kafka+Flink构建Kappa流计算数据架构,针对Kappa架构分析能力不足的问题,再利用 Kafka对接组合Elastic-Search实时分析引擎,部分弥补其数据分析能力。
Lambda 架构和Kappa 架构对比 🆚
对比内容
- 复杂度与开发维护成本 💼:
- Lambda 架构 🛠️:需要维护两套系统,复杂度高、开发、维护成本高。
- Kappa 架构 📝:只需要维护一套系统,复杂度低,开发维护成本低。
- 计算开销 💡:
- Lambda 架构 🔥:需要一直运行批处理和实时计算,计算开销大。
- Kappa 架构 🌐:必要时进行全量计算,计算开销小。
- 实时性 ⏱️:两者都满足实时性。
- 历史数据处理能力 📚:
- Lambda 架构 🏛️:批式全量处理,吞吐量大,历史数据处理能力强。
- Kappa 架构 🚀:流式全量处理,吞吐量相对较低,历史数据处理能力较弱。
总结 🧐
大数据架构的核心在于处理大规模数据集,提供高效率的数据处理和分析能力。Lambda架构和Kappa架构提供了不同的方法来实现这一目标,每种架构都有其优缺点。Lambda架构通过分离实时和批量数据处理,确保了系统的高容错性和灵活性,但增加了系统的复杂性。Kappa架构通过统一数据处理流程,简化了系统架构,但可能面临性能瓶颈和数据一致性的挑战。Kappa+架构尝试通过直接在数据仓库上进行流计算来解决这些问题,提供了一种更加高效的数据处理方式。
记忆口诀 🎓
- Lambda架构:“两层楼(批处理和实时处理)保稳定,但维护成本高。”
- Kappa架构:“一条流水线(统一流处理),简单高效,但可能丢数据。”
- Kappa+架构:“数据湖上直接计算,无需重复存储,性能更优。”
趣味记忆互联网案例故事 🌐
Lambda架构的故事
想象一个繁忙的机场,批处理层就像机场的行李处理系统,虽然处理速度较慢,但能够确保每件行李安全到达。实时处理层则像是机场的安检,快速响应,确保旅客能够及时登机。服务层则是机场的信息显示屏,实时更新航班信息,让旅客随时获取最新动态。
Kappa架构的故事
想象一条河流,Kappa架构就像一条流线型的船,它在河流中快速穿梭,无论是顺流而下还是逆流而上,都能够保持高速运行。但是,如果河流中的波浪太大(数据流的波动),船可能会颠簸,甚至丢失一些货物(数据丢失)。
Kappa+架构的故事
想象一个智能的水库管理系统,Kappa+架构就像水库上的一个智能闸门,它能够根据下游的需求直接调节水流,无需将水先引入另一个渠道再进行分配。这样既节省了水资源,又提高了供水效率。
参与点评
读者朋友们,如果您在阅读过程中,对文章的质量、易理解性有任何建议,欢迎在评论区指出,我会认真改进。