接前一篇文章:软考 系统架构设计师系列知识点之大数据设计理论与实践(16)
所属章节:
第19章. 大数据架构设计理论与实践
第5节 Lambda架构与Kappa架构的对比和设计选择
19.5.1 Lambda架构与Kappa架构的特性对比
1. 复杂度与开发、维护成本
2. 计算开销
在使用大数据系统进行数据处理时,需要知道数据的存储位置。由于数据量的持续增长,计算对I/O的需求增长速度已经远远超过网络带宽的扩容速度,故在计算时的开销也是大数据系统的考虑因素之一。
Lambda架构在计算时,需要让数据同时支持批处理层系统和流处理层系统运行,且在运行时,批处理系统和流处理系统都不能停机,否则将会有View的合并错误、计算开销大等问题。
Kappa架构的数据存储只需要面对流式计算,且只需要在必要时进行全量计算,计算消耗小。
3. 实时性
实时性要求系统对于一个服务调用可以进行快速响应。快速的定义可能从几毫秒到几秒,取决于用户对于这一功能响应速度的具体要求。在大数据系统中,用户对于快速的要求往往集中在随机读取功能。Lambda架构和Kappa架构都能够对数据进行实时处理并进行服务的响应。
Lambda架构的策略在于使用满足幺半群(Monoid)性质的数据View模型,对批处理层和速度层的输出进行统一管理,这样在新数据到达时,速度层可以实时处理数据得到最新View,然后和批处理层的View相结合,得到最新的实时结果。这样做的优点是将实时处理变成了批处理和流处理结果的结合,稳定且实时计算成本可控。
Kappa架构的策略是使用Kafka或者类似的分布式消息中间件,用消息队列进行数据的保存,采用并发计算。如果不需要全量计算,则直接读出数据;如果需要全量计算,则重新启动一个新的流式计算实例,将所有数据重新读取、计算,直到计算结果完成并超越了原来的结果,再删除原结果,使新结果成为可读取数据。在进行实时的流式数据处理时,如果有大量不同的实时流同时计算,由于算法要求进行关联,十分考验实时计算系统的能力。同时可能因为数据流的先后顺序、算法逻辑等问题导致数据丢失。
4. 历史数据处理能力
大数据系统在进行数据处理时,可能需要从大量历史数据中提取出对用户有价值的数据。
Lambda架构在设计上可以在批处理层中,对于超大规模的历史数据进行批量计算。由于批处理层和速度层使用不同的计算系统,在进行批量数据处理时,速度层的实时计算仍然可以运行且不受影响。
而Kappa架构对于大量历史数据的处理能力相对于Lambda而言则相对较弱。Kappa在设计上使用了消息队列对数据进行缓存,而消息队列对于数据量和历史数据回溯有性能的制约。在日常需求中,算法可能需要一次处理过去一年或者更久的数据,如果这些数据都存在消息队列中,对消息中间件的性能会有非常大的压力。如果数据结果中出现错误需要重新计算,这样数量级的数据对实时流式计算的稳定性和正确性也是一种考验。
至此,“19.5.1 Lambda架构与Kappa架构的特性对比”的全部内容就讲解完了。更多内容请看下回。