Lambda 架构:
Lambda体系结构由三层系统组成:“批处理层”、“速度层”和“服务层”以响应查询。
批处理层:
使用能够处理大量数据的分布式处理系统预先计算结果。 通过处理所有现有的历史数据实现数据的准确性。 这意味着可以根据完整的数据集重新计算,然后更正错误并更新现有数据视图。 输出通常存储在只读数据库中,更新将完全替换为现有的预计算视图。
速度层:
通过提供最新数据的实时视图,将延迟最小化。 速度层生成的数据视图可能不如批处理层最终生成的视图准确,但在收到数据后立即可用。 在批处理级别处理相同的数据后,可以替换速度级别的数据。
总结:
批处理层保证数据的完整性和准确性,速度层保证数据的时效性,但缺点是需要维护两套逻辑代码,维护起来很复杂。 是否可以通过批处理实现实时计算,或者通过实时处理实现批处理计算呢? 因此,有以下kappa体系结构:
Kappa架构:
与Lambda体系结构不同,Kappa体系结构消除了批处理层这一体系结构,只保留速度层。 只需在业务逻辑更改或代码更改时重新处理数据即可。
借用kafka的体系结构来说明kappa体系结构。 kafka可以通过设置来确定数据的保留时间。 保存7天、1个月或永久。 另外,kafka通过offset决定从何处读取数据。 因此,如果业务逻辑发生变化,并且需要读取新的所有历史数据,则只需将ofset设置为0。
总结:
1、如果面临的业务逻辑是设计稳健的机器学习模型来预测即将发生的事情,Lambda架构的使用应该优先,因为它包括批处理层和速度层。
2、如果面临的业务逻辑是实时的,并且客户端希望根据运行时发生的实时事件进行响应,则必须优先考虑使用Kappa体系结构。