Bootstrap

系统架构设计师教程 第19章 19.4 Kappa架构 笔记

19.4 Kappa架构

19.4.1 Kappa架构下对大数据处理系统的理解

数据系统=数据+查询

1.数据的特性

两个关键性质:

When,数据与时间相关的,数据在某个时间点产生

What,数据本身是不可变的,对数据操作其实就是两种:读取已存在的数据和添加新数据

2.数据的存储

存储方式:数据不可变、存储所有数据

好处:

(1)简单,存储数据时只需要简单追加数据

(2)应对人为和机器错误,通过不可变性和重新计算来处理人为和机器的错误

19.4.2 Kappa架构介绍

Kappa 只会通过流计算一条的数据链路计算并产生视图。本质是通过改进Lambda架构中的 Speed Layer, 使它既能够进行实时数据处理,同时也能在业务逻辑更新的情况下重新处理以前的历史数据。

Kappa 架构的原理就是:在Lambda的基础上进行了优化,删除了 Batch Layer 的架构,将数据通道以消息队列进行替代。

从使用场景上来看, Kappa架构与Lambda相比,主要有两点区别:

(1)Kappa是Lambda的简化版本, Kappa放弃了对批处理的支持,更 擅长业务本身为增量数据写入场景的分析需求

(2)Lambda支持批处理,更适合对历史数据分析查询的场景

19.4.3 Kappa架构的实现

以Apache Kafka为例,来描述架构过程

部署 Apache Kafka, 并设置数据日志的保留期 (Retention Period)。

如果需要重新处理历史数据,需要重启Apache Kafka作业实例,重头开始计算历史数据,并将结果输出到新的数据视图中。

当新的数据视图处理进度赶超旧的数据视图时,切换到新的数据视图上读取数据

停止旧的作业实例,删除旧的数据视图

19.4.4 Kappa架构的优缺点

优点:将实时和离线代码统一,方便维护、统一了数据接口,避免了离线数据合并问题

缺点:

1.消息中间件缓存的数据量和回溯数据有性能瓶颈

2.实时处理数据时,遇到大量实时流进行关联时,可能会因为数据流先后顺序问题,导致数据丢失

3.Kappa抛弃了离线计算更加稳定可靠的特点

19.4.5 常见Kappa架构变形

1.Kappa+ 架构

Kappa+是流式数据处理架构,它的核心思想是让流计算框架直接读 HDFS里的 数据仓库数据,一并实现实时计算和历史数据backfll 计算,不需要为 backfll 作业长期保存日 志或者把数据拷贝回消息队列。

Kappa+将数据任务分为无状态任务和时间窗口任务,无状态任务根据吞吐速度合理并发扫描全量数据即可,

时间窗口任务将数据仓库数据按照时间粒度进行分区存储,按时间先后顺序依次计算partition的数据

2.混合分析系统的 Kappa架

在 Kappa基础上衍生数据分析流程

基于使用 Kafka +Flink 构 建Kappa 流计算数据架构,

利用 Kafka对接组合 Elastic- Search 实时分析引擎,提升分析能力

;