【系统架构设计师】二十五、大数据架构设计理论与实践②

目录

四、 Kappa架构

4.1 Kappa架构介绍

4.2 Kappa架构的优缺点

4.3 常见Kappa 架构变形

4.3.1 Kappa+ 架构

4.3.2 混合分析系统的Kappa 架构 

五、Lambda 架构与 Kappa 架构的对比和设计选择

5.1 Lambda架构与Kappa 架构的特性对比

5.2 Lambda架构与Kappa 架构的设计选择

往期推荐


四、 Kappa架构

4.1 Kappa架构介绍

        Kappa 架构的原理就是:在Lambda 的基础上进行了优化,删除了 Batch Layer的架构,将数据通道以消息队列进行替代。因此对于Kappa 架构来说,依旧以流处理为主,但是数据却在数据湖层面进行了存储,当需要进行离线分析或者再次计算的时候,则将数据湖的数据再次经过消息队列重播一次则可。 Kappa 数据处理架构如下图所示:

        如上图所示,输入数据直接由实时层的实时数据处理引擎对源源不断的源数据进行处理,再由服务层的服务后端进一步处理以提供上层的业务查询。而中间结果的数据都是需要存储的,这些数据包括历史数据与结果数据,统一存储在存储介质中。 

        从使用场景上来看, Kappa 架构与Lambda 相比,主要有两点区别:

        (1)Kappa不是 Lambda 的替代架构,而是其简化版本Kappa 放弃了对批处理的支持,更擅长业务本身为增量数据写入场景的分析需求
        (2)Lambda直接支持批处理,因此更适合对历史数据分析查询的场景

4.2 Kappa架构的优缺点

        Kappa 架构的优点在于将实时和离线代码统一起来,方便维护而且统一了数据口径的问题,避免了 Lambda 架构中与离线数据合并的问题,查询历史数据的时候只需要重放存储的历史数据即可

        Kappa 的缺点也很明显:

        (1)消息中间件缓存的数据量和回溯数据有性能瓶颈。通常算法需要过去180天的数据,如果都存在消息中间件,无疑有非常大的压力。同时,一次性回溯订正180天级别的数据,对实时计算的资源消耗也非常大。
        (2)在实时数据处理时,遇到大量不同的实时流进行关联时,非常依赖实时计算系统的能力,很可能因为数据流先后顺序问题,导致数据丢失。
        (3)Kappa在抛弃了离线数据处理模块的时候,同时抛弃了离线计算更加稳定可靠的特点。Lambda 虽然保证了离线计算的稳定性,但双系统的维护成本高且两套代码带来后期运维困难。

4.3 常见Kappa 架构变形

4.3.1 Kappa+ 架构

        Kappa+ 是 Uber提出流式数据处理架构,它的核心思想是让流计算框架直接读 HDFS 里的数据仓库数据,一并实现实时计算和历史数据backfll计算,不需要为 backfll作业长期保存日
志或者把数据拷贝回消息队列。事实上, Uber开发了 Apache hudi框架来存储数据仓库数据, hudi支持更新、删除已有parquet数据,也支持增量消费数据更新部分,从而系统性解决了问题2存储的问题。        

        上图是完整的Uber大数据处理平台,其中 Hadoop→ Spark →用户查询的流程涵盖了Kappa+ 数据处理架构。 

4.3.2 混合分析系统的Kappa 架构 

        Lambda 和 Kappa 架构都还有展示层的困难点,结果视图如何支持热点数据查询分析,一个
解决方案是在 Kappa 基础上衍生数据分析流程

        如上图所示,在基于使用Kafka +Flink构建Kappa 流计算数据架构,针对Kappa 架构分析能力不足的问题,再利用 Kafka对接组合Elastic- Search实时分析引擎,部分弥补其数据分析能力。但是ElasticSearch也只适合对合理数据量级的热点数据进行索引,无法覆盖所有批处理相关的分析需求,这种混合架构某种意义上属于 Kappa 和 Lambda 间的折中方案。

五、Lambda 架构与 Kappa 架构的对比和设计选择

5.1 Lambda架构与Kappa 架构的特性对比

对比内容Lambda 架构Kappa 架构
复杂度与开发维护成本维护两套系统(引擎)
复杂度高,成本高
维护一套系统(引擎)
复杂度低,成本低
计算开销周期性批处理计算,持续实时计算
计算开销大
必要时进行全量计算
计算开销相对较小
实时性满足实时性满足实时性
历史数据处理能力批式全量处理,吞吐量大
历史数据处理能力强
批视图与实时视图存在冲突可能
流式全量处理,吞吐量相对较低
历史数据处理能力相对较弱

5.2 Lambda架构与Kappa 架构的设计选择

        根据两种架构对比分析,将业务需求、技术要求、系统复杂度、开发维护成本和历史数据处理能力作为选择考虑因素。而计算开销虽然存在一定差别,但是相差不是很大,所以不作为考虑因素。

        (1)业务需求与技术要求。用户需要根据自己的业务需求来选择架构,如果业务对于Hadoop、Spark、Strom 等关键技术有强制性依赖,选择 Lambda 架构可能较为合适;如果处理数据偏好于流式计算,又依赖Flink计算引擎,那么选择Kappa 架构可能更为合适。

        (2)复杂度。如果项目中需要频繁地对算法模型参数进行修改,Lambda 架构需要反复修改两套代码,则显然不如 Kappa 架构简单方便。同时,如果算法模型支持同时执行批处理和流式计算,或者希望用一份代码进行数据处理,那么可以选择Kappa 架构。

        (3)开发维护成本Lambda 架构需要有一定程度的开发维护成本,包括两套系统的开发、部署、测试、维护,适合有足够经济、技术和人力资源的开发者。而 Kappa 架构只需要维护一套系统,适合不希望在开发维护上投入过多成本的开发者。

        (4)历史数据处理能力。有些情况下,项目会频繁接触海量数据集进行分析,比如过往十年内的地区降水数据等,这种数据适合批处理系统进行分析,应该选择Lambda 架构。如果始终使用小规模数据集,流处理系统完全可以使用,则应该选择Kappa 架构。

往期推荐

安全架构设计理论与实践①文章浏览阅读944次,点赞15次,收藏15次。在信息系统的整个生命周期中,安全保障应包括技术、管理、人员和工程过程的整体安全,以及相关组织机构的健全等。目前,网络与信息安全风险类别可以分为人为蓄意破坏(被动型攻击,主动型攻击)、灾害性攻击、系统故障、人员无意识行为https://shuaici.blog.csdn.net/article/details/140847010通信系统架构设计理论与实践①文章浏览阅读1.8k次,点赞61次,收藏47次。通信网络主要形式:局域网、广域网、移动通信网。局域网网络架构有 4 种类型:单核心架构、双核心架构、环型架构、层次型架构。广域网属于多级网络,通常由骨干网、分布网、接入网组成。在网络规模较小时,可仅由骨干网和接入网组成。通常,在大型网络构建中,通过广域网将分布在各地域的局域网互连起来,形成一个大的网络。移动通信网为移动互联网提供了强有力的支持,尤其是5G 网络为个人用户、垂直行业等提供了多样化的服务。https://shuaici.blog.csdn.net/article/details/140826449

        

  • 29
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅次

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值