DataSource Manager Server 架构
背景
早期版本中的Exchangis0.x和Linkis0.x都有整合数据源模块,为复用数据源的管理能力,Linkis以linkis-datasource为蓝本(可以参阅相关的文档)重构数据源模块,将数据源管理拆封成数据源管理服务与元数据查询服务。
本文主要涉及DataSource Manager Server数据源管理服务,提供如下功能:
1)、Linkis统一管理服务启动与部署,不增加运维成本,复用Linkis服务能力;
2)、通过Linkis Web提供图形界面的管理服务,界面提供了新增数据源,数据源查询、数据源更新,连通性测试等管理服务;
3)、服务无状态,多实例部署,做到服务高可用。本系统在部署的时候,可以进行多实例部署,每个实例对外独立提供服务,不会互相干扰,所有的信息都是存储在数据库中进行共享。
4)、提供数据源全生命周期管理,包括新建、查询、更新、测试、过期管理。
5)、多版本数据源管理,历史数据源会保存在数据库中,并提供数据源过期管理。
6)、Restful接口提供功能,详细列表:数据源类型查询、数据源详细信息查询、基于版本进行数据源信息查询、数据源版本查询、获取数据源参数列表、多维度数据源搜索、获数据源环境查询及更新、新增数据源、数据源参数配置、数据源过期设置、数据源连通性测试。
架构图
架构说明
1、服务登记在Linkis-Eureak-Service服务中,与Linkis其他微服务统一管理,客户端可以通过连接Linkis-GateWay-Service服务与服务名 data-source-manager获取数据源管理服务。
2、接口层,通过Restful接口向其他应用,提供了针对数据源、数据源环境的增删查改、数据源链接与双链接测试、数据源版本管理及过期操作;
3、Service层,主要针对数据库与物料库的服务管理,永久保留数据源相关信息;
4、数据源的链接测试都是通过linkis metastore server服务完成的,该服务现在提供mysql\es\kafka\hive服务
核心流程
1、 新建数据源,首先会从请求中获取新建数据源的用户,判断用户是否有效,下一步会对数据源相关字段信息进行校验,数据源名称和数据源类型不能为空,再下一步会根据数据源名称进行确认该数据源是否存在,如果不存在则将在数据库中进行插入,同时数据源ID号返回。
2、 更新数据源,首先会从请求中获取新建数据源的用户,判断用户是否有效,下一步会对新的数据源相关字段信息进行校验,数据源名称和数据源类型不能为空,再下一步会根据数据源ID号进行确认该数据源是否存在,如果不存在返回异常,如果存在将进一步判断该用户是否对该数据源有更新权限,用户是管理员或者数据源owner才有权限更新,如果有权限则将更新该数据源,并返回数据源ID。
3、 更新数据源参数,首先会从请求中获取新建数据源的用户,判断用户是否有效,根据所传参数数据源ID获取详细的数据源信息,接着会判断用户是否是改数据源的owner后者是否为管理员,如果有则进一步校验修改的参数,通过后则会更新参数,并返回versionId。
实体对象
类名 | 作用 |
---|---|
DataSourceType | 表示数据源的类型 |
DataSourceParamKeyDefinition | 声明数据源属性配置定义 |
DataSource | 数据源对象实体类,包含权限标签和属性配置定义 |
DataSourceEnv | 数据源环境对象实体类,也包含属性配置定义 |
DataSourceParameter | 数据源具体参数配置 |
DatasourceVersion | 数据源版本详细信息 |
数据库设计
数据库关系图:
数据表定义:
表名:linkis_ps_dm_datatsource <-->实体:DataSource
序号 | 字段 | 字段描述 |
---|---|---|
1 | id | 数据源ID |
2 | datasource_name | 数据源名称 |
3 | datasource_desc | 数据源详细描述 |
4 | datasource_type_id | 数据源类型ID |
5 | create_identify | 标识 |
6 | create_system | 创建数据源的系统 |
7 | parameter | 数据源参数,注意 不做存储,实体类parameter字段通过linkis_ps_dm_datasource_version的parameter获取 |
8 | create_time | 数据源创建时间 |
9 | modify_time | 数据源修改时间 |
10 | create_user | 数据源创建用户 |
11 | modify_user | 数据源修改用户 |
12 | labels | 数据源标签 |
13 | version_id | 数据源版本ID |
14 | expire | 数据源是否过期 |
15 | published_version_id | 数据源发布版本号 |
表名:linkis_ps_dm_datasource_type <-->实体:DataSourceType
序号 | 字段 | 字段描述 |
---|---|---|
1 | id | 数据源类型ID |
2 | name | 数据源类型名称 |
3 | description | 数据源类型描述 |
4 | option | 数据源所属类型 |
5 | classifier | 数据源类型分类词 |
6 | icon | 数据源图片显示路径 |
7 | layers | 数据源类型层次 |
表名:linkis_ps_dm_datasource_env <-->实体:DataSourceEnv
序号 | 字段 | 字段描述 |
---|---|---|
1 | id | 数据源环境ID |
2 | env_name | 数据源环境名称 |
3 | env_desc | 数据源环境描述 |
4 | datasource_type_id | 数据源类型ID |
5 | parameter | 数据源环境参数 |
6 | create_time | 数据源环境创建时间 |
7 | create_user | 数据源环境创建用户 |
8 | modify_time | 数据源修改时间 |
9 | modify_user | 数据源修改用户 |
表名:linkis_ps_dm_datasource_type_key <-->实体:DataSourceParamKeyDefinition
序号 | 字段 | 字段描述 |
---|---|---|
1 | id | 键值类型ID |
2 | data_source_type_id | 数据源类型ID |
3 | key | 数据源参数key值 |
4 | name | 数据源参数名称 |
5 | default_value | 数据源参数默认值 |
6 | value_type | 数据源参数类型 |
7 | scope | 数据源参数范围 |
8 | require | 数据源参数是否必须 |
9 | description | 数据源参数描述 |
10 | value_regex | 数据源参数正则 |
11 | ref_id | 数据源参数关联ID |
12 | ref_value | 数据源参数关联值 |
13 | data_source | 数据源 |
14 | update_time | 更新时间 |
15 | create_time | 创建时间 |
表名:linkis_ps_dm_datasource_version <-->实体:DatasourceVersion
序号 | 字段 | 字段描述 |
---|---|---|
1 | version_id | 数据源版本ID |
2 | datasource_id | 数据源ID |
3 | parameter | 数据源该版本参数 |
4 | comment | 内容 |
5 | create_time | 创建时间 |
6 | create_user | 创建用户 |