1.需求分析

2.Lambda架构 & Kappa架构

2.1.Lambda架构

        Lambda 架构总共由三层系统组成的:批处理层(Batch Layer),速度处理层(Speed Layer),以及用于响应查询的服务层(Serving Layer)。

更详细的架构图:

批处理层:
        使用可处理大量数据的分布式处理系统预先计算结果。它通过处理所有的已有历史数据来实现数据的准确性。这意味着它是基于完整的数据集来重新计算的,能够修复任何错误,然后更新现有的数据视图。输出通常存储在只读数据库中,更新则完全取代现有的预先计算好的视图。

速度层:
        通过提供最新数据的实时视图来最小化延迟。速度层所生成的数据视图可能不如批处理层最终生成的视图那样准确或完整,但它们几乎在收到数据后立即可用。而当同样的数据在批处理层处理完成后,在速度层的数据就可以被替代掉了。

总结:

        批处理层保证数据的完整性和准确性,速度层保证数据的时效性,但是缺点是需要维护两套逻辑代码,维护较复杂,有没有可能在批处理中实现实时计算,或者在实时处理中实现批处理计算呢?于是就有了下面的kappa架构。

2.2.Kappa架构

        与 Lambda 架构不同的是,Kappa 架构去掉了批处理层这一体系结构,而只保留了速度层。你只需要在业务逻辑改变又或者是代码更改的时候进行数据的重新处理。

借用kafka的架构来说明kappa架构:

kafka可以通过设置来决定数据的保留时长,七天、一个月、或者永久保留,且kafka是通过offset来决定从哪里读取数据,因此当我们的业务逻辑改变时,需要从新读取所有历史数据时,只需要把offset设置为0即可。

2.3.总结

  1. 如果你所面对的业务逻辑是设计一种稳健的机器学习模型来预测即将发生的事情,那么你应该优先考虑使用 Lambda 架构,因为它拥有批处理层和速度层来确保更少的错误。
  2. 如果你所面对的业务逻辑是希望实时性比较高,而且客户端又是根据运行时发生的实时事件来做出回应的,那么你就应该优先考虑使用 Kappa 架构。

3.数据平台架构

4.数仓分层架构

4.1.为什么要分层

  1. 清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。
  2. 数据血缘追踪:简单来讲可以这样理解,我们最终给业务诚信的是一能直接使用的张业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。
  3. 减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算
  4. 把复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。
  5. 屏蔽原始数据的异常:不论是数据的异常还是数据敏感性,使真实数据与统计数据解耦开
  6. 屏蔽业务的影响:不必改一次业务就需要重新接入数据。

4.2.分层定义

  • ODS:Operational Data Store原始数据层,主要包含业务数据库快照数据(rawdb)、运营埋点数据(rawdata)、其他业务等数据。
  • TMP:临时层,数据处理的辅助处理层,服务于DWD、DWS层,主要是一些临时存储的数据,根据实际情况选择创建与不创建,包括:计算任务的中间结果数据。
  • DIM:维度数据层,主要包含一些业务维度数据。实例:地区表,订单状态,支付方式,审批状态,商品分类,商品型号,渠道类型、终端类型、广告位、红包计划等
  • DWD:data warehouse detail,存储经过标准规范化处理(即数据清洗)后的运营数据,是基础事实数据明细层。实例:行为事件明细表、mysql各业务数据经过ETL处理后的实体表。
  • DWS:data warehouse service,数据服务主题层或者宽表层,按数据、业务专题进行划分,支持OLAP分析、数据分发等,其信息主要来源于DWD或TMP层汇总数据。实例:新激活用户表、日活表、历史激活用户表
  • ADS:application database service,应用数据层,面向具体应用的表,要创建在这层,可导入hbase或mysql等使用。实例:按季、月、周、天、小时等粒度计算汇总的结果存入mysql、hbase的报表
  • MDW:meta data warehouse元数据信息层,元数据机制主要支持以下五类系统管理功能:

1.描述哪些数据在数据仓库中;
2.定义要进入数据仓库中的数据和从数据仓库中产生的数据;
3.记录根据业务事件发生而随之进行的数据抽取工作时间安排;
4.记录并检测系统数据一致性的要求和执行情况;
5.衡量数据质量。

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐