业务发展迅速,积累了大量的数据资产,大数据团队承担数据串联、沉淀,反哺和赋能业务的重要职责。大数据团队协同各部门打造了玩个大狗魔方、大狗宝盒数据产品,提供data-center应用发力数据中台,统一数据关键路径,尽最大程度解决部门间信息屏障问题。但是数据中台的加速输出没有为内部系统建设带来过多收益,反而产生了多个业务应用,造成了数据服务复用率低的难题。
数据服务建设面临挑战颇多,如存储系统多样,数据处理量大,数据需求粒度不定等重重问题,为了实现数据收口、快速响应,提高数据体验,通用数据中台应运而生。
为了支持更多类型的业务,减少系统的耦合,便于发现和追踪问题,节省人力成本,方便迭代,需要设计比较好的架构,系统架构具备以下原则:
数据服务满足应用的概念,支持在数据服务上开发应用和接口,数据服务需要满足微服务设计、支持异构存储组件特性。
微服务设计特性。微服务设计具有低耦合、高内聚的特点,需要大量基础组件的支持如日志、缓存、链路追踪,以及服务的注册与发现。
异构存储组件特性。大的数据中台支持多样的存储组件,关系型/KV型,单机/分布式,磁盘/内存,行式/列式/多模式等,以独立或组合的形式适配不同的应用场景。每个存储组件的连接池管理、使用规范、性能优化各不相同。
开发编译部署特性。数据服务以降本增效为目的,提供快速的数据响应,传统的应用开发编译和部署模式存在固有的生命周期,数据服务需要更快。
1.存储系统支持。数据服务需要支持多种类型的存储系统,关系型、k-v,行式、列式,sql、query dsl、api查询语言,文件系统等多种形式。
2.自助取数。简单的模板化,负责的定制化。针对简单的查询需求,可以通过模板化配置快速分装数据接口,负责的需要能够支持编程介入。
3.系统安全。需要有完备的稳定性方案,防止某些大数据量,长耗时请求干趴整个系统。尤其注意把存储系统打崩或者带宽打满这种事。
4.数据血缘。大数据平台的建设是涉及到各个业务团队,业务系统是相互独立的系统,数据是统一的,很多数据的相互协同是通过大数据实现闭环的,业务追求闭环,数据也在追求闭环,因此就需要追溯数据的来源和去向。当数据从数据服务分发出去后通过其他形式重新回来的过程中,不能丢失这种血缘关系。
5.资产保护。数据是种具有重要价值的资产,要严格保护珍贵资产不被盗取。申请数据需要经过审批流程才能获取到一个数据接口。
6.开发支持。为了实现方便的自助取数,需要有系统级的数据资产,元数据,数据血缘等子系统支持的开发系统,用于开发、调试数据接口。
7.发布系统。数据服务的数据接口要摒弃掉以往应用编译启动的流程,公司发布系统不再满足数据服务数据接口的发布需求,灰度发布。
8.监控告警。监控告警是系统稳定性运行的前提,及时告知开发系统问题。
存储层
多种多样的存储系统。redis,mysql,elasticsearch,odps等等。
值得一提的是trino(它还有个名字是presto,关于它为什么改名了,以及为什么出现个trino就是个瓜了)。presto分布式SQL查询引擎, 一个纯粹的计算引擎,并不存储数据,通过Connector获取第三方存储服务的数据,也被称作prestodb。它具有异构数据源功能,支持多种数据源,如Hive、Kafka、MySQL、Ealsticsearch、Redis、Iceberg、Kubu、Druid、Cassandra等,也可自己实现Connector。支持通过JDBC/ODBC连接,提供了ANSI SQL语法支持,支持窗口函数,join,聚合,复杂查询等。
执行层
sql即接口,这也是数据服务的核心所在。
所谓的模板化开发即提供包含占位符的query(sql,query dsl等),参数映射关系和结果映射关系实现数据接口。
系统监控
为数据服务全栈提供监控告警支持
支持系统
元数据,数据资产,数据血缘三兄弟既支持开发系统又与数据服务打通,数据服务的后台,运维系统如发布系统,权限支持,用于外界查询接口详情的在线文档。