Lambda架构和Kappa架构
Lambda和Kappa都是为了解决大量数据的移动,以实现可靠的在线访问而提出的数据架构。 最受欢迎的架构一直是并将继续是Lambda架构。 然而,随着流式处理变得更容易获得,在不久的将来你也会听到更多关于Kappa架构的消息。
Lambda架构
数据摄取层(Ingestion layer)负责收集原始数据并将其复制以分别进行进一步的实时和批处理。
除了数据摄取层以外,Lambda架构还包含其它三个层:
- 速度或流式层(Speed or Stream): 这里的原始数据是实时传入的,由流式处理框架(例如 Flink)处理,然后传递到服务层(Serving layer)以创建实时视图,以实现接近实时数据访问的低延迟。
- 批处理层(Batch Layer):使用批处理框架(如 Spark)的对原始数据进行ETL处理,为离线历史数据访问创建可靠的批处理视图。
- 服务层(Serving Layer):这是处理后的数据暴露给用户的地方。 最新的实时数据可以从实时视图访问或与批处理视图相结合以获得完整的历史记录。历史数据可以通过批处理视图访问。
在批处理层和流式层中,不同技术的代码处理是重复的,会导致逻辑分歧。两套处理的计算资源重复的,这需要让我们管理两个计算基础设施。
分布式批处理存储是可靠的和可扩展的,即使系统崩溃,它也很容易恢复且没有错误。
Kappa架构
Kappa架构是一种处理大数据的架构,它作为Lambda架构的替代方案出现。Kappa架构的核心思想是简化数据处理流程,通过使用单一的流处理层来同时处理实时和批量数据,从而避免了Lambda架构中需要维护两套系统(批处理层和速度层)的复杂性。
Kappa架构将批处理和实时处理负载都视为流式处理的问题。
使用速度层(Speed Layer)仅为了实时和批处理访问提供数据:
主要包含两个层:
- 速度或流式层(Speed or Stream):类似于Lambda架构,但通常会包含分层存储,这意味着所有进入系统的数据都无限期地存储在不同的存储层中。例如,将S3或GCS用于历史数据,而磁盘日志用于热数据。
- 服务层(Serving Layer):与Lambda架构相同,但所有转换都在速度层(Speed Layer)中执行。
有些转换很难在速度层(Speed Layer)中执行(例如复杂的连接join),最终会被推送到 批处理存储中进行实现。
浙公网安备 33010602011771号