What are the advantages of Lambd architecture

  Lambda架构由Storm的作者Nathan Marz提出,旨在设计出一个能满足实时大数据系统关键特性的架构,具有高容错、低延时和可扩展等特性。

  Lambda整合离线计算和实时计算,融合不可变性、读写分离和复杂性隔离等一系列架构原则,可集成Hadoop、Kafka、Storm、Spark、Hbase等各类大数据组件。

1、Lambda架构理论点

  Lambda架构对系统做了如下抽象:
  Query = Function(All Data)
  简言之:查询是应用于数据集的函数。Data是自变量,Query是因变量。

  Lambda有如下两个假设:

  • 不可变假设

  Lambda架构要求Data不可变。

  • Monoid假设

  理想情况下满足Monoid假设的function可以转换为以下形式。

  query=function(all data/2)+function(all data/2)

  Monoid的概念来源于范畴学,其中一个重要特性是满足结合律。如整数的加法就满足Monoid特性:(a+b)+c=a+(b+c)。

  不满足Monoid特性的函数很多时候可以转化成多个满足Monoid特性的函数的运算。如多个数的平均值avg函数,多个平均值没法直接通过结合来得到最终的平均值,但是可以拆成分母除以分子,分母和分子都是整数的加法,从而满足Monoid特性。

2、Lambda架构

  Lambda架构分成3层:批处理层、实时处理层、服务层。

  • 批处理层:批处理数据,生成离线结果。
  • 实时处理层:实时处理在线数据,生成增量结果。
  • 服务层:结合离线、在线计算结果,推送上层。

3、Lambda架构优缺点

  Lambda架构优点如下:

  • 实时:低延迟处理数据。
  • 可重计算:由于数据不可变,重新计算后扔可以得到正确的结果。
  • 容错:由于数据不可变,有程序Bug、系统问题等,可以重新计算。
  • 复杂性分离、读写分离。

  Lambda架构缺点主要表现在:

  • 开发和运维的复杂性:Lambda需要将所有的算法实现两次,一次是为批处理系统,另一次是为实时系统,还要求查询得到的两个系统结果的合并。

4、典型推荐架构

  • 实时处理范式的需求

  • Netflix推荐架构


参考文献

  1. 《高可用架构(第1卷)》/ ISBN 978-7-121-31466-7

你可能感兴趣的:(Design)