架构总览
数据中台通常采用分层架构,各层应用采用微服务化方式构建。针对不同的行业,系统托管方式各不一样,比如传统企业更倾向于采用私有云或自建机房,小型互联网企业倾向采用公有云等;针对不同应用场景的不同,技术架构也不相同,比如推荐场景,往往采用实时数据架构,传统报表应用采用离线数据架构;针对数据获取途径,所采用 的技术选型也不相同,比如电商行业的数据通常来源于业务数据库和点击日志等,基于Hadoop生态的数据仓库即可满足查询分析应用,工业企业的数据来源于传感器采集的实时数据,因为工业数据量更大,于是采用的数据采集方式和存储系统的选型差别很大,基于Hadoop的生态存储反而无法满足需求。本文以面向传统工业如燃气、水务等行业为例,讨论如何搭建数据中台,其中主要架构原则要点;
a. 技术成熟稳定
b. 系统组合最小化
c. 选型适度超前
下图是一个基本的总体架构面貌:
大数据系统从底向上涉及到的系统或者基础设施依次为:
a. 客户业务系统:如企业资源计划ERP系统、客户关系管理系统CRM以及各类物联网数据采集设备等;
b. 数据传输网络:业务系统数据的存储位置可以是公有云、私有云、混合云以及自建的专有云等,数据从业务系统上传到数据存储系统或者通过5G网络设备上传等;
c. 统一数据采集平台:支持离线数据迁移和实时数据迁移以及按需上报等方式。离线迁移通常采用T-1模式定时从客户业务系统同步到数据存储系统;实时迁移通常基于业务系统的日志实时汇聚到数据存储系统;按需上报的方式通常提供业务系统数据上报接口,随时上报;
d. 大数据基础平台:包括大数据存储和计算平台,数据存储在分布式文件系统或者对象存储系统,比如HDFS、S3等;数据计算平台分为离线计算平台和实时计算平台,离线计算平台包括Hive、Spark等,实时计算平台分为Storm、Flink等。大数据平台根据数据使用场景方式又可以分为大数据分析平台和算法开发平台;
e: 数据中台:在大数据基础平台之上,通过平台的赋能实现敏捷开发、快速部署等,如通过屏蔽底层系统的接入门槛和使用差异,将开发流程简化为页面操作,提供简洁、易用的敏捷数据开发平台;通过沉淀通用的业务功能进一步赋能业务开发和价值挖掘,如按照行业标准构建通用的数据模型创建的企业级数据仓库通过公共数据服务接口赋能上层应用。大数据中台包含数据仓库系统、数据治理系统、数据血缘系统等;
f: 数据服务层:提供统一的数据服务API,上游应用系统通过接口访问数据中台的数据;
g: 数据应用层:接入数据中台的上层业务应用系统,如智能决策、移动推送等。
数据流程
系统架构图也反映了数据加工处理的流程和方向,如果从数据流向的角度来看,大概是这样:
接入到系统的数据源经过一系列处理之后向上层提供服务,因为数据按照应用场景的时效性要求不同,一般会有离线批处理和实时处理两条链路,实时链路作为离线链路的补充,提供增量数据,在提供给上层应用查询之前,需要合并以反映最终全量的数据,这种架构就是典型的lambda数据架构。
数据中台系统架构
为支撑上述数据流程的实施,需要数据中台一揽子功能组件的支持和配合,从应用系统功能组件的视角来看是这样子:
其中绿色部分表示重要且紧急的功能,是构成数据中台的最小必备选项,而红色表示重要但不紧急的功能,可以延后实现,红绿相间的部分表示可以按需酌情实现的功能。总体层次跟架构总览图差不多:
a. 数据采集层:提供如 实时、离线、填报等功能
b. 数据存储与计算层:提供诸如存储引擎、计算引擎和调度引擎等核心基础功能,如存储引擎分为行式存储(如hdfs),列式存储(如hbase);计算引擎分为实时处理、离线处理、机器学习等;调度引擎包括分布式任务调度和分布式资源调度等;
c. 数据中台:包括基于数据存储与计算层实现的敏捷开发工具套件集,如数据集成工具,开发工具、可视化报表系统、权限管理等;数据开发系统,如数据建模、数据分析和算法开发;以及数据治理平台,包括元数据管理,数据血缘、数据资产管理等;
d. 数据服务层:通过统一的数据访问接口访问数据中台的数据,如数仓数据、画像数据、推荐数据等;
e. 数据应用层:通过数据服务层赋能上层业务开发,如营销、个性化推荐、计量分析等。
数据采集系统
数据采集层连接业务系统和数据存储与计算层,实现业务数据到数据存储系统的转移功能:业务系统数据可以通过sqoop等工具实现离线跑批(全量或增量)的方式进入数据仓库,也可以通过日志流的方式,经过kafka和flink实时进入数据仓库的准备层(ODS)。
数据存储与计算层
数据存储与计算层连接数据采集层和数据中台,提供数据存储与计算的基本功能。离线数据可以通过sqoop,datax等传输到基于Hadoop生态的数据仓库,实时数据可以通过Debezium或者canal先暂存到kafka,然后经过Flink等处理后传输到Druid,Doris等,这里可选技术组件较多。
数据中台
数据中台连接数据存储与计算层和数据服务层,包含数据开发工具套件集、数据开发系统和数据质量系统。其中数据开发系统包括将来自数据采集层的数据按照一定的规范和模型建立标准的企业数据仓库、在此基础上做的书分析系统如分主题数据建模、模型画像等以及以及算法模型训练相关的算法开发。
数据仓库层
数据仓库层连接数据开发平台层和数据服务层,提供标准数据建模方式实现企业级数据仓库。数据仓库实现同样采用分层结构:数据运营层( ODS )、数据仓库层(DW)和数据应用层(ADS):
ods:是最接近数据源中数据的一层,数据源中的数据,经过抽取、洗净、传输,也就说传说中的 ETL 之后,装入本层。本层的数据,总体上大多是按照源头业务系统的分类方式而分类的。
dw:DW层又细分为 DWD(Data Warehouse Detail)层和DWS(Data WareHouse Servce)层。
dwd层一般保持和ODS层一样的数据粒度,并且提供一定的数据质量保证。同时,为了提高数据明细层的易用性,该层会采用一些维度退化手法,将维度退化至事实表中,减少事实表和维表的关联。另外,在该层也会做一部分的数据聚合,将相同主题的数据汇集到一张表中,提高数据的可用性。
dws称数据集市或宽表。按照业务划分,如流量、订单、用户等,生成字段比较多的宽表,用于提供后续的业务查询,OLAP分析,数据分发等。一般来讲,该层的数据表会相对比较少,一张表会涵盖比较多的业务内容,由于其字段较多,因此一般也会称该层的表为宽表。
ads:提供给数据产品和数据分析使用的数据,一般会存放在 ES、PostgreSql、Redis等系统中供线上系统使用,也可能会存在 Hive 或者 Druid 中供数据分析和数据挖掘使用。比如我们经常说的报表数据,一般就放在这里。
dim:维表层主要包含两部分数据:
高基数维度数据:一般是用户资料表、商品资料表类似的资料表。数据量可能是千万级或者上亿级别。
低基数维度数据:一般是配置表,比如枚举值对应的中文含义,或者日期维表。数据量可能是个位数或者几千几万。
数据服务层
数据服务层连接数据仓库层和上层应用层,实现技术包括微服务在内的整个技术栈体系如访问鉴权、负载均衡和流控等。
数据中台技术架构举例
-End-