《大数据BI工具》数据服务设计

167 阅读3分钟

一、背景

一般随着公司业务发展,数据规模越来越庞大,数据管理和服务的需求也会逐渐迫切;数据服务平台具有将数据服务化的能力,减少数据服务发布的代价,加快迭代数据获取,数据消费,数据应用项目的周期;
数据服务化平台的目标是 数据API的生成、测试、发布、监控、限流、回滚的一站式平台;

二、数据服务平台的特点

  • 屏蔽底层数据源差异,上层提供统一配置化能力,零代码开发
  • 统一数据服务运维管理,包括限流、隔离、监控、高可用

三、系统设计

为了实现以上功能,我们可以将整体功能分为两块,查询服务和管理后台;查询服务是对外接受用户配置的好的API请求,根据API的配置查询数据,并返回给用户;管理模块用于用户定义、测试、发布API;

3.1 查询服务

如上图所示为查询服务的总体模块图; 数据服务模块图.png

  • 用户可以通过HTTP/RPC Client访问服务
  • HTTP一般经过nginx转发,根据请求Tag,可以将流量分离;gRPC可以使用注册中心,同样达到流量分离
  • 服务管理层进行身份认证,流量控制,简单的协议适配,监控打点上报,最后根据查询类型路由到不同的引擎执行查询;
  • 执行引擎具体和数据源交互,支持并行查询与跨源二次计算;

3.1.1 查询引擎

执行引擎.png
查询引擎参考了Presto的设计,但舍弃了分布式的概念,因为API的查询过程中,一般不会一次性获太多的数据,所以分布式处理的需求大大减弱; QueryExecutor
QueryExecutor是执行器,负责调度Parser解析请求转化成AST(语法解析树),然后调用validator验证语法树,之后使用Opimizer优化查询树,最后将查询计划转成算子Operator树;使用Executor执行算子树;其中Connector是一个接口,抽象的是从底层数据源获取数据的过程;基本上每一种类型的数据源,都需要实现一个Connector,比如MysqlConnector,EsConnector;
Parser Validor Operator
Parser负责解析请求为语法树;这里语法树节点与Calsite/Presto中的算子节点有些不一样,通常这里的算子节点都是因为业务的需要才抽象出来,不会具有像Calsite/Presto这种专业查询计划优化部分那么强大的功能; 解析转化过程.png
如上图所示:首先Parser会将查询意图转化成算子树,这里用SQL表示,但是一般BI工具中都有具体的查询协议; 在算子树的基础上做出一些基础的验证,保证查询的合法性;比如SQL1,SQL2都有dt字段等;之后算子树将被转化成Operator节点,Operator具有execute方法,用户接受下层Operator的输出结果,处理计算逻辑,其中SourceOperator比较特殊,类似于calcite中TableScanNode,用户读取数据;

3.2 管理服务

数据服务平台需要提供完全配置化的方式生成API,屏蔽底层异构数据源的差异性,让API的使用更加简单;

API管理平台.png
如上图所示,为API管理平台功能模块图,API管理后台最重要的功能就是API配置、测试、发布、权限等方面的管理;其中服务以应用的维度去组织,拥有这个应用的权限的人,才可以编辑、测试、发布API;权限的管理一般可以依托权限系统,在权限系统中创建对应的资源、鉴权、撤权;

3.2.1 API创建流程

API创建流程.png