服务接口层:接口形式分为同步接口和异步接口 。请求方式包括DSL接口、模板接口、公共接口以及UDF接口等 。同步接口主要是针对线上应用的一些查询场景,要求响应速度快,数据结果集相对较小,可直接快速地获取到数据并应用于系统 。异步接口主要是针对于离线分析或者大数据量的文件下载的场景,对于响应速度要求不高,但是对于返回的数据量可能会要求比较大 。
服务网关层:是提供给外部访问我们内部服务的一个统一入口,在数据服务中网关具备的核心能力主要是降级(如数据未就绪降级)、限流(流量峰值控制,保护服务稳定)、鉴权(屏蔽非法流量,保障数据安全)、缓存(热点数据,提升性能) 。
2、核心流程

文章插图
主要是从两个核心角色看数据流转方式:数据开发和业务开发,数据开发即数据生产者,业务开发及数据消费者 。数据开发在数据生产过程主要经历四个步骤:口径的定义、数据的构建、数据加速和API发布 。
第一步:首先对指标进行定义,包括指标名称、指标领域、指标口径等信息 。
第二步:构建数据模型,在平台上通过托拉拽的方式构建指标维度模型,以及定义模型中字段与指标维度的关系,计算方法,更新周期等技术口径 。
完成了前两个步骤,基本实现了数仓开发同学对指标数据的定义与管理工作了 。当有数据消费的需求时,则可以根据需求场景在平台做自动数据加速 。
第三步:加速数据模型,根据消费场景,选择需求所需的指标维度信息,平台自动实现了目标表的DDL、SQL逻辑的自动生成、调度依赖配置、告警等过程 。
【哔哩哔哩数据服务中台建设实践】第四步:构建API,根据业务数据请求及返回要求,选择数据源、定义字段的请求、返回参数属性,主备链路信息等,测试完成后即可完成一个API的市场发布 。
在数据消费侧,当业务有数据需求时,去 API 市场里面找到数据生产者已经生产好的API,申请权限就可以使用了 。如果API市场里面没有所需要的数据,就要走另外一条流程,提一个数据开发的需求给数据开发同学,然后数据开发同学增量地去构建一个数据结果到平台中去 。当业务开发同学申请完这个API的使用权限之后,平台会授权给他一串密钥以及资源的标识 。业务开发只需对接一次服务网关,即可重复利用 。
把数据的生产与消费的开发流程解耦,数仓开发同学不用过多参与业务系统的开发过程,可以更加专注做指标的增量建设;对业务开发屏蔽了数据的加工处理过程,无需深入理解大数据知识,专注开发业务需求即可 。
(1)模型构建

文章插图
平台中对于模型的构建,支持多种构建方式,包括单例、星型、雪花以及星座模型等等 。当模型构建完成后,平台支持支持的物化加速能力支持也表丰富 。从性能及灵活度两个方便,对使用场景了做了划分 。不同的使用场景,其加速方式及目标引擎有所不同 。
明细加速:实现把逻辑模型中的数据从冷引擎到热引擎的镜像复制,极大保留了模型的原始数据的业务特性,可以更好的支持对模型中不同的维度及指标做多维分析或者范围查询,在热引擎中,加速数据的查询效率 。
预计算加速:根据数据获取需求,从逻辑模型中的明细数据进行预计算及处理,直接聚合到所需粒度的数据,并将数据写入热引擎中 。由于数据已经预计算处理,在数据查询时极大减少了引擎的计算,查询效率更高,但也损失了如多维分析及维度下钻查询的灵活性 。
不同的场景有不同的加速方式及引擎选择的组合,针对四种类型的场景,推荐的组合如下:
在线场景:预计算+kv存储,一般应用于C端及B端的数据需求,有着极高的服务性能要求,且线上数据不会快速的变化,灵活度要求低 。
准在线场景:预计算 + tidb/MySQL,一般应用于活动或者运营系统后台,服务性能要求不会同线上场景那么高,但同时要求支持范围查询,有一定的查询灵活度;对于数据量较大的查询场景,可以选择分布式数据库 Tidb,其他可以选择Mysql 。
OLAP场景:明细+ ClickHouse/Iceberg,一般应用于数据分析系统,需要对数据进行多维分析,所以需要明细加速 。ClickHouse 作为一款OLAP分析引擎,比较适合作为目标引擎,如果考虑到成本因素,也可以使用湖仓一体技术Iceberg,数据无需出仓既可在仓内完成数据的加速,性能虽不及ClickHouse,但也可以达到秒级的响应,特别是在使用成本及查询语法通用性上更有优势 。
推荐阅读
- 物理服务器网络性能优化
- 我们一起聊聊数据库与容器
- 关于数据库选型中的几个问题谈谈我的观点
- Redis五种基本数据类型详解:用途及操作
- 个人服务器搭建私有云可以怎么做?
- 服务器如何配置网络设备
- 服务器如何配置网络连接器
- 我的世界材质包怎么用到服务器上
- 导入数据显示下标越界 下标越界
- OTG数据线多少钱 otg数据线
