前言
因公司一项目需要,要进行数据中台的建设,时间紧任务重,在三个人月(后端我两个半人月、前端半个人月)的时间内大致完成了一版轻量级的数据中台系统开发,把开发的过程分享出来,供大家参考。
数据中台的建设是一个长期迭代的过程,需要业务人员和数据人员的协作参与,数据中台真正有价值的是数据的建模、数据标准的建设、数据服务的发布及数据资产的沉淀和迭代。我们作为开发人员只是提供一个工具,我这儿记录的也只是系统的开发过程。计划写以下六篇:
数据中台概述
大数据时代的到来,让越来越多的企业看到了数据资产的价值。将数据视为企业的重要资产,已经成为业界的一种共识,企业也在快速探索应用场景和商业模式,并开始建设技术平台。
为了解决企业业务在实际中存在的以下问题:
- 各个业务数据重复开发浪费存储与计算资源
- 数据标准不统一,存在数据质量问题,数据使用成本高
- 业务数据孤岛问题严重业务协同能力弱,数据利用效率低
- 缺乏精准模型支撑,数据分析能力不足,数据应用价值不高
基于四个统一,统一数据采集,统一数据处理,统一数据存储,统一数据服务,基于计算及存储基座,提供标准统一、可连接萃取的数据中台,包含数据采集与研发、数据连接与萃取、数据资产管理及统一数据服务,服务于上层业务,如经营分析、消费者营销洞察等场景
在实际数据开发应用中存在,不知数据在什么地方,数据是什么意思,拿到一个报表怎么开发,数据怎么获取,最后数据怎么能快速的可视化呈现出来这五个难题,建设数据中台就是要解决:找数据,理解数据、问题评估、取数及可视化展现这五个问题,整个平台的故事也是围绕这个五个点。从根本上解决:
找数: 数据从什么地方来到什么地方去,将数据和业务过程结合起来,实现数据的快速查询
理解数据: 通过数据的血缘关系,数据关联关系及数据的说明信息,让数据开发人员,业务人员快速理解数据
问题评估: 数据分析人员拿到需求,可以通过该平台实现问题的自动评估,大大提高数据分析效率
取数: 用户可以不再关心数据的来源,不再担心数据的一致性,不再依赖RD的排期开发。通过所选即所得的方式,满足了用户对业务核心指标的二次加工、报表和取数诉求
数据可视化: 依托于BI可视化系统和数据中台的打通,数据分析人员可以快速的将数据中台创建的数据模型快速的转换成可视化报表。
通用功能架构

通用技术架构

需求梳理
根据项目需求,大的功能需求是将业务库**(金仓库)**的业务数据都导入到数据中台中,实现数据服务的发布和展示。
让产品经理稍微梳理了一下通用数据中台的功能,如下:
|----------|----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 一级菜单 | 二级菜单 | 核心功能点 |
| 一、首页 | 平台概览 | 1. 中台核心能力总览展示 2. 数据接入总量、资产总量、服务调用量核心指标展示 3. 任务运行状态、异常告警数量展示 |
| 二、数据接入 | 数据源管理 | 1、数据源注册:数据库、API、文件、日志、消息队列等源头接入 2、数据源运维:连通性测试、状态监控、账号配置管理 |
| 二、数据接入 | 数据复制 | 1. 数据复制任务创建、配置、启停管理 2. 增量 / 全量复制配置、断点续传设置 3. 复制任务运行监控、日志查看、异常告警 |
| 三、数据治理 | 元数据管理 | 1. 技术元数据 / 业务元数据统一管理 2. 元数据采集、维护、版本管理、变更追溯 3. 元数据查询、统计、分析、导出 4. 元数据与数据资产、数据服务关联管理 |
| 三、数据治理 | 数据模型管理 | 1、主体域管理:对企业数据按照业务领域进行分类管理。 2、维度模型管理:对分析场景中的维度表进行统一建模。 3、事实模型管理:对业务过程数据进行统一建模。 4、指标模型管理:对企业核心业务指标进行统一定义与管理。 |
| 三、数据治理 | 主数据管理 | 1、主数据模型:统一企业核心基础数据,解决多系统数据不一致 2、主数据审核:新增、变更、下线审批管理 3、主数据分发:统一标准数据同步至各业务系统 |
| 四、数据开发 | 数据集成 | 1、数据映射管理:对原始数据做标准化、规整、映射对齐 2、 数据清洗规则:简单去重、格式转换、脏数据过滤 3、 集成任务调度:同步频率、任务依赖配置 |
| 四、数据开发 | SQL开发 | 支持标准SQL、数仓专属SQL在线编写、语法智能提示、代码格式化、函数快捷调用,支持单句/批量SQL执行,适配数据查询、清洗、关联、聚合、建模等各类数据加工场景 |
| 五、数仓管理 | 存储资源管理 | 存储集群状态监控、资源配置、扩容缩容管理,数据备份恢复、加密存储、权限管理 |
| 五、数仓管理 | 数据库管理 | 结构化 / 非结构化 / 时序 / 图数据存储统一管理 |
| 五、数仓管理 | 分层管理 | 数据分层存储(贴源层 / 共享层 / 分析层)、分区管理 |
| 六、数据分析 | 可视化设计 | 1. 多数据源管理、数据集简单预处理 2. 图形化拖拽可视化设计、丰富可视化组件库 3. 业务典型模板预置、快速构建可视化场景 5. 可视化看板发布、权限管理、嵌入集成 |
| 六、数据分析 | 报表管理 | 1. 多数据源管理、报表数据集配置 2. 自定义报表设计、数据自定义报送、定时采集配置 3. 个性化自助报表设计、查询、图形化展示 |
| 七、数据资产 | 资产目录 | 1. 数据资产目录创建、分类、编码管理 2. 元数据自动采集、手动维护、资源绑定 3. 数据资产检索、详情查看、自助申请获取 |
| 七、数据资产 | 资产管理 | 1、 资产检索:全文检索、快速定位所需数据资产 2、 资产权限管控:资产申请、审批、使用权限管理 3、 资产价值评估:数据热度、使用频次、资产盘点 |
| 八、数据服务 | 服务市场 | 1、服务统一上架:支持审核通过的数据API、指标服务、查询服务、统计服务统一入驻市场, 2、服务分类检索:按业务域、服务类型、数据用途、更新频率分类展示,支持关键词搜索、条件筛选,快速定位所需数据服务 3、服务预览与试用:支持在线查看服务详情、接口参数、返回结构,提供免费在线试用能力,便捷验证服务可用性与数据准确性 |
| 八、数据服务 | 服务管理 | 1. 服务注册、发布、启停、下线全生命周期管理 2. 服务版本管理、变更追溯、灰度发布配置 3. 服务授权配置、多认证方式管理、访问权限控制 |
| 八、数据服务 | 服务监控 | 1. 服务运行状态、调用次数、成功率、响应时间实时监控 2. 服务访问日志、调用详情查询、审计管理 |
| 八、数据服务 | 数据脱敏 | 1. 脱敏算法管理、脱敏模板配置、测试验证 2. 脱敏作业配置、调度、运行监控 3. 按用户权限差异化脱敏配置、脱敏规则管理 4. 脱敏后数据格式 / 属性保留配置 |
| 九、运维监控 | 告警中心 | 1.监控告警:包括服务器资源、应用场景、数据服务运行等 2. 安全管理:违规访问告警、安全威胁告警 3、资源异常告警:资源阈值自定义配置,负载过高、存储溢出、节点异常时自动触发告警,推送异常信息辅助运维处置 |
| 九、运维监控 | 资源监控 | 1、存储资源监控:实时监控各存储集群磁盘使用率、存储空间余量、读写IO、冷热数据占用情况,支持按集群、业务域统计存储资源占用排行 2、 计算资源监控:监控CPU、内存、队列资源使用率、算力空闲率、任务资源占用情况,实时展示批量、流式各类引擎算力负载状态 3、集群节点监控:统一监控集群各节点在线状态、运行负载、异常宕机、节点性能波动,支持节点故障识别 |
| 十、系统管理 | 用户管理 | 1. 用户账号全生命周期管理(创建 / 启用 / 禁用 / 删除) 2. 用户信息维护、密码策略、安全设置管理 3. 用户角色、权限、数据范围分配管理 4. 用户登录日志、操作日志查询、审计 |
| 十、系统管理 | 角色管理 | 1. 角色创建、编辑、删除、权限配置管理 2. 角色权限模板、分级管理、继承关系配置 3. 角色用户分配、批量管理、权限变更追溯 4. 角色权限审计、合规性校验 |
| 十、系统管理 | 部门管理 | 1. 部门组织架构创建、编辑、层级管理 2. 部门用户、角色、权限批量管理 3. 部门数据范围、资源权限分配管理 4. 部门级资源用量、使用情况统计分析 |
| 十、系统管理 | 系统配置 | 1. 系统基础参数、全局规则配置管理 2. 菜单管理、功能权限配置、界面布局设置 3. 通知渠道、模板、规则配置管理 4. 系统备份、恢复、版本升级、维护管理 |
| 十、系统管理 | 系统日志 | 1. 系统运行日志、操作日志、审计日志统一管理 2. 日志检索、查询、筛选、导出、长期留存 3. 日志统计分析、异常识别、告警设置 4. 日志合规性校验、审计管理 |
| 十、系统管理 | 安全审计 | 1. 全平台数据访问、操作日志统一收集、存储 2. 日志分析、报表生成、操作溯源、事件追溯 3. 日志检索、查询、导出、长期留存管理 4. 违规访问、异常操作识别、告警、闭环管理 |
功能太多,在三个月时间内根本不可能实现,因此,大刀阔斧的砍掉周边功能,只留下了主干功能。精简后的功能架构如下:

技术选型
确定好了功能,下面就是技术选型:
| 序号 | 组件 | 选型 | 作用 |
|---|---|---|---|
| 1 | 开发框架 | JDK8 + SpringBoot + SpringCloud | 公司统一的开发框架 |
| 2 | 业务库 | 金仓V8 | 客户的业务库指定 |
| 3 | 实时数仓 | Doris 2.1.11 | 比较成熟和熟悉的版本,没有用最新的3 |
| 4 | 数据同步 | Flink 1.18.1 + Flink CDC 3.1 | 相对旧一点的版本,主要是有个金仓的CDC connector用的这个版本,可以少一点开发工作量 全量+增量 |
| 5 | 定时任务 | DolphinScheduler3.1.9 | 跑定时任务,填充从ods层往上的数据库表 |
| 6 | 消息中间件 | Kafka | 削峰,全量数据同步时有大量数据同时涌入 |
界面概览
有图有真相,下面先给出系统已实现的界面,后面几篇文章再详细展开说明技术实现过程。
一、登录页,没啥好说的

二、首页,概览信息,常用的指标
三、
元数据-数据源

元数据-数据源-添加数据源,支持各种常见的数据库类型,但是能同步到Doris的目前只实现了金仓

元数据-数据浏览-查看表结构

元数据-数据浏览-查看表字段信息

元数据-数据浏览-查看样例数据(默认取前十条)

元数据-SQL

数仓管理-分层管理

四
数仓管理-分层管理
对于ODS层,提供三种方式添加表:
1、从金仓库直接导入,指定金仓库中的表名,自动Doris中建立对应的ODS层表结构,用了系统默认的配置

2、自由SQL方式,指定了金仓库的表,把对应doris的建表语句生成出来,在这儿可以修改,适合一些数据量大的,需要仔细考虑分区分桶方式的表

3、已在Doris界面或其他数据库管理界面中建好了表,在系统的这儿指定一下对应关系

对于其他层中的表,不需要对应关系,提供sql方式和doris关联两种方式


这儿也提供了元数据的参考,表的基本信息、字段信息、建表语句等。数据血缘暂时还没做。




ODS层建立了对应关系后,就可以建flink任务了,指定源库,指定需要同步的表,指定同步的规则(全量还是增量),就启动了flink同步任务

flink任务详情,同步了多少条记录,多少数据量

下面是数据集成,也就是dolphinscheduler作业的管理,可定时执行,也可以手动执行

添加一个ds作业,主要是写sql脚本,定时时间等信息

查看任务实例情况

查看任务实例的运行日志

五
数据服务,这个是引用开源的SQLREST修改的,非常好的开源项目,这儿感谢一下。
服务接口

新增服务接口,可以写sql语句,也可以用goove脚本,可自定义入参、出参

调试sql脚本是否成功

出参

定义接口地址

查看发布的接口列表

接口详情

接口访问日志

数据脱敏

设置脱敏规则,目前是内置了常用的脱敏规则,以后可以让管理员自定义

调用接口,可以看到id和name规则生效了
