DataSource Manager Server 架构

    本文主要涉及DataSource Manager Server数据源管理服务,提供如下功能:

    1)、Linkis统一管理服务启动与部署,不增加运维成本,复用Linkis服务能力;

    2)、通过Linkis Web提供图形界面的管理服务,界面提供了新增数据源,数据源查询、数据源更新,连通性测试等管理服务;

    3)、服务无状态,多实例部署,做到服务高可用。本系统在部署的时候,可以进行多实例部署,每个实例对外独立提供服务,不会互相干扰,所有的信息都是存储在数据库中进行共享。

    4)、提供数据源全生命周期管理,包括新建、查询、更新、测试、过期管理。

    5)、多版本数据源管理,历史数据源会保存在数据库中,并提供数据源过期管理。

    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号返回。

    3、 更新数据源参数,首先会从请求中获取新建数据源的用户,判断用户是否有效,根据所传参数数据源ID获取详细的数据源信息,接着会判断用户是否是改数据源的owner后者是否为管理员,如果有则进一步校验修改的参数,通过后则会更新参数,并返回versionId。

    数据库关系图:

    DataSource Manager Server 架构 - 图2

    数据表定义:

    表名:linkis_ps_dm_datatsource <—>实体:DataSource

    序号字段字段描述
    1id数据源ID
    2datasource_name数据源名称
    3datasource_desc数据源详细描述
    4datasource_type_id数据源类型ID
    5create_identify标识
    6create_system创建数据源的系统
    7parameter数据源参数,注意 不做存储,实体类parameter字段通过linkis_ps_dm_datasource_version的parameter获取
    8create_time数据源创建时间
    9modify_time数据源修改时间
    10create_user数据源创建用户
    11modify_user数据源修改用户
    12labels数据源标签
    13version_id数据源版本ID
    14expire数据源是否过期
    15published_version_id数据源发布版本号

    表名:linkis_ps_dm_datasource_type <—>实体:DataSourceType

    表名:linkis_ps_dm_datasource_env <—>实体:DataSourceEnv

    序号字段字段描述
    1id数据源环境ID
    2env_name数据源环境名称
    3env_desc数据源环境描述
    4datasource_type_id数据源类型ID
    5parameter数据源环境参数
    6create_time数据源环境创建时间
    7create_user数据源环境创建用户
    8modify_time数据源修改时间
    9modify_user数据源修改用户

    表名:linkis_ps_dm_datasource_type_key <—>实体:DataSourceParamKeyDefinition

    序号字段字段描述
    1version_id数据源版本ID
    2datasource_id数据源ID
    3parameter数据源该版本参数
    4comment内容
    5create_time创建时间
    6create_user创建用户