kappa架构和lambda架构有什么区别

3j86kqsm  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(470)

如果kappa架构直接对流进行分析,而不是将数据分成两个流,那么在kafka这样的messagin系统中,数据存储在哪里?或者可以在数据库中重新计算?
单独的批处理层比用流处理引擎重新计算批处理分析更快吗?

csga3l58

csga3l581#

你也可以在这里阅读讨论这两个问题的原文
引用原始博客文章
“这两种方法在效率和资源上的权衡多少有点不公平。lambda体系结构需要一直运行重新处理和实时处理,而我所建议的只需要在需要重新处理时运行作业的第二个副本。但是,我的建议需要在输出数据库中临时拥有2倍的存储空间,并且需要一个支持高容量写操作的数据库来重新加载。在这两种情况下,再加工的额外负荷很可能会平均下来。如果你有许多这样的工作,它们不会一次全部重新处理,因此在一个有几十个这样的工作的共享集群上,你可能会为在任何给定时间积极重新处理的少数工作额外预算百分之几的容量。
真正的优势不在于效率,而是允许人们在单个处理框架上开发、测试、调试和操作他们的系统。因此,在简单性很重要的情况下,可以将此方法视为lambda体系结构的替代方案。”

2exbekwf

2exbekwf2#

“要考虑的一个非常简单的情况是,应用于实时数据和历史数据的算法是相同的。那么使用相同的代码库来处理历史和实时数据显然是非常有益的,因此使用kappa架构来实现用例现在,用于处理历史数据和实时数据的算法并不总是相同的。在某些情况下,由于批处理算法能够访问完整的历史数据集,因此可以对其进行优化,从而优于实时算法的实现。在这里,在lambda和kappa之间的选择变成了在支持批处理执行性能而不是代码库简单性之间的选择最后,还有更复杂的用例,即使是实时和批处理算法的输出也是不同的。例如,一个机器学习应用程序,其中批量模型的生成需要大量的时间和资源,因此实时实现的最佳结果是计算并近似更新该模型。在这种情况下,批处理层和实时层不能合并,必须使用lambda体系结构”。
引用

分批和流层
更高的代码复杂度
使用单独的批处理/流提高性能
对于批处理和流处理中的不同算法更好
用数据存储代替数据库进行批量计算更便宜

只有蒸汽处理层
易于维护,复杂度低,批处理和流处理算法单一
如果从数据库中重新计算过多的数据以进行批处理,则成本会很高
如果从数据库或kafka重新计算过多的数据进行批处理,则处理速度会变慢

相关问题