5.阿里大数据——实时技术

数据的实效性一般分三种:

  • 离线:在今天(T)处理N天前(T-N,N>=1)的数据,延迟时间粒度为
  • 准实时:在当前小时(H)处理N小时前(H-N,N>0,如0.5小时、1小时等)的数据,延迟时间粒度为小时
  • 实时:在当前时刻处理当前的数据,延迟时间粒度为

离线和准实时都可以在批处理系统中实现,而实时数据则需要在流式处理系统中完成。

一、流式技术架构

在流式计算技术中,需要各个子系统之间相互依赖形成一条数据处理链路,才能产出结果最终对外提供实时数据服务。子系统:

  • 数据采集
  • 数据处理
  • 数据存储
  • 数据服务
流式技术架构图

1.数据采集

实时采集,两种数据:

  • 数据库变更日志
  • 引擎访问日志

日志在业务服务器上落地成文件,只要监控文静的内容发生变化,采集工具就可以把最新的数据采集下来。基于下面的原则按批次对数据进行采集:

  • 数据大小限制
  • 时间阈值限制

数据中间件:把采集到的数据分发给下游(kafka,timetunnel(阿里的kafka)等)
消息系统:业务数据库变更的消息中转

image.png

时效性和吞吐量是数据处理中的两个矛盾体,很多时候需要从业务角度来权衡使用什么样的系统来做数据中转。

2.数据处理

实时计算任务部署在流式计算系统上,通过数据中间件获取到实时源数据后进行实时加工处理。流计算引擎:

  • Storm
  • Spark Streaming
  • Flink
  • StreamCompute(阿里)

实时任务遇到的典型问题:

  • 去重指标
  • 数据倾斜
  • 事务处理

3.数据存储

三种类型的数据:

  • 中间计算结果
  • 最终结果数据
  • 维表数据

4. 数据服务

实时数据落地到存储系统中后,通过统一的数据服务获取到实时数据。

二、流式数据模型

类似于离线模型也分五层,由于实时计算的局限性,每一层中没有像离线做得那么宽,维度和指标也没有那么多,整体来看,实时数据模型是离线数据模型的一个子集。

1.数据分层

  • ODS:数据操作层,原始数据,粒度最细。
  • DWD:实时事实明细层。
  • DWS:各个维度的汇总指标,可作为通用的数据模型使用。
  • ADS:个性化维度汇总层。
  • DIM:从离线维表层导过来的。


    image.png

其中,ods层导dim层的etl处理是在离线系统中进行的,处理完成后会同步到实时计算说使用的存储系统。
ods层和dwd层会放在数据中间件中,供下游订阅使用。
dws层和ads层会落地到在线存储系统中,下游通过接口调用的形式使用。

2.多流关联

在流式计算中常常需要把两个实时流进行主键关联,以得到对应的实时明细表。


image.png

3.维表使用

关联维表一般会使用当前的实时数据(T)去关联T-2的维表数据。原因如下:

  • 数据无法及时准备好
  • 无法准确获取全量的最新数据
  • 数据的无序性

4. 大促保障

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容