写点什么

数据分析设计模式

作者:agnostic
  • 2023-01-15
    上海
  • 本文字数:1074 字

    阅读完需:约 4 分钟

在我们日常的架构设计中,除了在线的交易处理之外,往往还有一类异步的数据分析能力需求。对于这类的需求,我们有几种设计模式可以选择。


这类需求具备如下几个特点:

  • 首先,数据分析需求往往不会是核心链路的需求。也就是这类数据分析功能不会影响核心交易链路的执行。

  • 其次,数据分析需求的实效性一般不高,根据 case 的不同,可以接受从 1 分钟到 1 天不等的延迟。

  • 第三,数据分析需求可以分成单笔和聚合分析两类。对于聚合分析,往往数据处理量比较大。

  • 最后,数据分析需求往往需要具备重试的能力。


对于数据分析类的需求,我们根据实效性和数据量的不同,可以用不同的设计模式来应对。

  • 实效性要求高、数据量小:这种一般是单笔的数据分析。

  • 对于准实时的需求我们可以采用 Event Trigger 的模式实现,实时发送消息,应用监听消息进行实时分析。

  • 对于可以有分钟级延迟的需求,我们可以采用高频定时任务的模式实现。

  • 实效性要求高、数据量大:这种一般是实时小批量的聚合,我们可以引入流计算引擎来实现。比如 spark、flink 等。

  • 实效性要求低、数据量小:这种一般是定时的数据分析需求,可以采用两种设计模式:

  • 如果数据量极小,对于正常的交易几乎无影响,可以采用定时任务的模式来实现。

  • 如果数据量对于正常交易还是会产生影响,可以采用数据同步+定时任务的模式来实现。就是通过 binlog、ETL 等将需要处理的数据抽取到离线库后,对离线库进行定时任务处理。

  • 实效性要求低、数据量大:这种一般是 dashboard、报表类的需求,可以采用离线数仓+BI 报表的模式来实现。


在我们正在进行的「系统风险处置」项目中,有大量的数据分析工作:

  • 首先,对于指标的分析。这类的分析分为两类,一类是对于交易的分析,另一类是对于用户数据的分析。

  • 对于交易数据,实时性要求高,数据量不大,我们采用高频(分钟)定时任务的方式进行处理。

  • 对于聚合类的用户数据,我们根据聚合频率的不同,对于小时/分钟级别的聚合,基于流计算引擎实现。对于天/月级的聚合,基于数仓实现。

  • 其次,对于分析后产生的风险事件,需要对风险事件进行定级和分析。风险事件需要尽快被分析和处置。所以对于这部分,我们采用 Event Trigger 的方式,用风险事件 Event 触发相应的处理。

  • 最后,对于风险事件的处理情况,我们需要有事后的统计报表。这类报表的目的主要是对风险事件的处理效率进行分析和跟踪,实效性要求不高。我们采用离线数仓+BI 报表的模式实现。


对于不同的实现模式,我们采用不同的方式保证处理的完整性:

  • Event Trigger:消息持久化和保证送到机制。

  • 定时任务:依据数据的状态进行重试处理。

  • 流计算:多轮计算保证数据处理的完整性。

  • 离线数仓:多次抽取保证数据的完整性。


发布于: 刚刚阅读数: 5
用户头像

agnostic

关注

常识、KISS、高可用、合规架构、架构治理 2019-02-14 加入

二十年架构经验,互联网金融专业架构师。Open Group Master Certified Architect

评论

发布
暂无评论
数据分析设计模式_数据分析模式_agnostic_InfoQ写作社区