什么是数据应用
数据应用是通过各种各样的数据分析方式将数据展示出来,给决策者、管理者、运营等人员透传数据价值的工具,帮助决策者、管理者及时调整战略目标、公司目标、业务目标,帮助运营人员更好地实现精细化运营、提升运营效率。
从整个大数据架构来看,它处于整个大数据体系的最上层,也就是数据应用层,以我所参与开发的电商业务数据应用为例,在这一层主要有以下几种类型的数据应用:
数据应用架构
整个电商数据应用架构可以分为七层,底层数据架构使用Lamda架构模式,上层数据应用使用J2EE微服务架构模式:
1、业务系统: 业务系统是离线数据和实时数据的来源,主要分为业务数据和日志数据。业务数据包括用户数据、订单数据、商品数据、销量数据等,日志数据包括行为日志数据、系统日志数据等。
2、数据接入层: 数据接入层由一系列数据采集组件构成,包括DataHub数据接入总线、Flume和FlinkCDC等日志采集服务,这些数据采集组件将业务系统产生的数据采集并存储到Kafka消息队列中。
3、消息队列: 消息队列作为分布式、高并发、高性能、高吞吐的数据存储中间件,提供过期数据清理、数据重复消费能力,主要是由多个Kafka组成的消息队列集群,不仅可以解耦数据生产方和数据使用方,而且可以快速扩展提高数据处理吞吐量。
4、数据计算层: 按对数据的实时性要求来区分,数据计算层可以分为离线数据计算、实时数据计算,目前我们使用的数据架构是Lamda架构,数据的准确性以离线数据作为参考。离线数据计算使用Spark,实时数据计算使用Flink。
5、数据存储层: 在Lamda架构数据处理基础上,将处理后的离线数据和实时数据分别存储到各自对应的存储系统中。数据存储层主要负责三类数据的存储:
(1)元数据: 使用MySQL存储,这部分数据与数据服务层或者数据应用层交互,比如指标字典数据、权限数据等,提供OLTP在线事务数据服务,完成对这些数据的增删改查操作。
(2)离线数据: 离线数仓分为五层:ODS、DWD、DWM、DWS和ADS层,数据主要使用Hive+ClickHouse存储。Hive作为离线数仓,存储ODS、DWD、DWM、DWS、ADS层的全量数据,由于这些数据需要实时查询和交互式分析,因此每天凌晨会将ADS层数据同步到ClickHouse或StarRocks中。为了降低数据应用方数据使用和理解的难度,数据经过层层加工之后,输出到ADS层的ClickHouse或者StarRocks中,以明细宽表或Cube宽表的形式提供给数据应用方使用。
(3)实时数据: 实时数仓主要分为两层:ODS层和DWD层,数据主要使用Kafka存储。Flink消费Kafka中的数据,对数据经过过滤、清洗、扩维之后,会将处理好的明细数据存储到ClickHouse或者StarRocks中。明细数据的现场计算主要由OLAP引擎负责,我们目前采用ClickHouse为主、StarRocks为辅的存储架构,它们都以MPP架构实现大规模数据的并行计算,提供准实时的结果,因此我们可以利用它们的实时计算能力完成明细数据的现场计算。
6、数据服务层: 数据服务层主要衔接数仓同学和数据应用后端开发同学,统一数据建模与使用规范,提供统一的指标管理服务、统一的指标查询服务以及统一的预警服务,这些服务采用J2EE微服务架构对外提供标准的API,统一数据出口,从而提高开发效率,降低数据使用难度,方便后续对数据应用服务进行治理和维护。
7、数据应用层: 数据应用层是数据的输出展示层,主要以各种各样的数据产品为载体,根据需求将数据展示给用户,给用户提供数据分析和预警的功能,从而帮助用户实现数据化、精细化管理。该层采用前后端分离的架构,后端采用J2EE微服务架构对外提供各种各样的数据查询API,前端使用主流的前端框架完成数据的展示。
最后,整个数据应用体系的建设目标是业务驱动、快速落地,因为数据的重要价值之一就在于它的时效性,我们可以配合快速开发的数据工具和定制化的数据应用产品完成整个数据需求的支撑,沉淀工具、流程和方法论,实现数据能力的快速输出,赋能业务部门,提高实现数据价值的效率。