数据品质剖析
一、引言
1.1 我的项目背景
数据品质监测是大数据处理中最重要的一个环节,是数据服务、数据分析、数据挖掘等流动的必备反对条件。
1.2 我的项目概述
提出了一个基于大数据平台的数据品质治理服务 Qualitis,提供对立的流程来定义和检测数据集的品质并及时报告问题。
1.3 术语表
术语 含意
我的项目 (project) 一系列规定的汇合,决定告警人和告警级别,是任务调度的单位之一。
规定 (rule) 数据源的数据品质模型的定义,决定是否告警,是任务调度的根底单位。
工作 (application) 数据品质检测工作,通过运行数据品质工作,能够查看数据品质校验后果。
二、总体设计
2.1 总体架构设计
2.2 灰度功能设计
因为每个 Qualitis 后端服务是幂等的,要灰度只须要对单个后端服务进行隔离,让其无奈承受用户申请。
2.3 高可用及性能设计
Qualitis 各个服务之间是幂等的,能够通过同时起多个 Qualitis 服务,对 Qualitis 服务进行负载平衡进行实现。如下图所示:负载平衡
负载平衡这一策略,不仅实现了高可用,并且也实现了性能的晋升。
性能方面的设计,思考以下计划。但目前暂未实现。
1. 查问缓存
应用分布式缓存,将查问后果缓存起来,就不用查问的时候,每次都查询数据库,大大的缩小了数据库的压力,并且晋升了查问的速度。
2.4 多线程同步设计
1. 进程同步
因为存在多个 Qualitis 实例,多个实例之间可能会存在同时刷新监控工作状态的状况,所以须要解决进程同步的问题。
Qualitis 零碎采纳 Zookeeper 协调多过程,多个 Qualitis 实例会争抢在 Zookeeper 中建设长期节点,建设长期节点胜利的,会作为 Monitor 角色,由 Monitor 角色对监控工作,并刷新工作的状态。
2. 线程限流
当触发监控工作提交时,须要连贯 hive meta store,判断保留未通过校验的数据的数据库是否存在。
当提交任务量上来是,可能会对 hive meta store 造成微小压力,所以须要对工作提交进行限流。
Qualitis 零碎应用线程池的形式,对连贯 hive meta store 进行限流,如果从线程池中拿不到线程,工作会期待,直到拿到线程,才连贯 hive meta store。
三、模块设计
3.1 总体模块设计图
3.2 用例图
四、接口设计
4.1 外部接口
外部接口次要分为两类接口:
1. 管理员接口
2. 用户接口
管理员接口设计: /qualitis/api/v1/admin/*
用户接口设计: /qualitis/api/v1/projector/*
通过两种不同的接口定义形式,将用户的权限辨别开。
4.2 内部接口
内部接口 url 定义:/qualitis/outer/api/v1/*
此类接口调用须要在 query 中减少如下参数:
参数名 必选 类型 阐明
app_id 是 string 零碎调配的受权利用 APP_ID.
timestamp 是 string 工夫戳。毫秒级的工夫戳,时效性:7 天
nonce 是 string 随机数,长度为 5
signature 是 string 加密签名。md5(md5(appId + nonce + timestamp) + appToken),其中 md5 生成 32 长度,小写
其中 app_id 和 appToken 须要管理员授予内部零碎。
五、系统工程结构设计
零碎的工程构造能够分为 2 层,Web 层和 Core 层。
Web 层次要包含 Controller 和 Service,次要蕴含对外提供服务的服务层,Core 层次要包含外围代码逻辑和存储层。