整体架构
DataVines 是一个数据可观测性系统,旨在帮助企业减少“数据宕机时间”,帮助企业能够在数据错误导致损失之前及时发现数据错误,它具有数据目录管理、数据质量监控和SLAs等功能。下面是它的架构设计图:
DataVines架构图
组件详解
Coordinator
Coordinator是DataVines平台核心协调者,负责对外提供API、调度各种数据监控任务,分发到Executor中去执行
Coordinator.
主要功能
- Api 服务
- 平台数据存储
- 元数据管理
- 作业调度和分发
- Metric 管理
- Issue 管理
- SLAs 管理
高可用设计
- Coordinator采用主备方式来保证高可用,基于ZooKeeper实现主备选举和主备切换。当Active节点宕机后,Backup节点会被选举为Active节点,读取数据库数据更新缓存信息对外提供服务
- Backup 节点会将请求转发给 Active 节点,由Active 节点对外提供服务
Executor
Executor 是系统中实际负责运行任务的服务,会将Coordinator所下发的任务根据参数配置去运行。
Executor
主要功能
- 接收Coordiantor下发的命令去执行任务,任务执行完成后将任务执行结果发送返回给Coordinator
- 根据任务所选的executePlatformType可将任务提交到不同的环境或者集群中去运行,例如本地执行、提交到Yarn集群或者提交到K8中等。
Engine
本平台中所执行的各种监控任务本质上是去读取指定的数据源上的数据根据所配置好的脚本执行各种聚合统计运算,最后将执行结果写到存储引擎中用于各种判断。那么这样的任务可以是Spark任务、也可以是Flink任务,或者直接使用jdbc去运行都可以。因此将执行引擎抽象出来做了Engine的设计,支持Engine的插件化,用户可以使用平台内部已经实现的计算引擎,也可以根据自己的需求添加新的Engine来执行任务
MetaDataCrawler
MetaDataCrawler 主要负责定时去抓取指定数据源的元数据信息,然后更新到元数据存储引擎中
AlertServer
AlertServer 主要负责告警,用户在平台上配置告警规则,一旦数据监控任务触发告警,那么AlertServer就会将报错信息发送到指定的平台上,例如邮箱,企业微信等
核心设计
插件化设计
Connector插件化设计
- Connector模块中定义了包括不仅限于连接参数相关、元数据信息获取相关、数据源执行脚本相关等接口,用于实现连接数据源、获取元数据信息以及执行相应脚本等功能。
- 插件化设计允许用户实现Connector模块的相应接口来实现添加自定义数据源
Metric插件化设计
- Metric是平台中非常重要的组成部分,主要用在各种数据监控任务中,Metric的丰富性使得平台的监控和检查手段更加丰富。本平台会内置多种Metric让用户可以开箱即用,同时也支持用户实现Metric相关接口来新增用户个性化的Metric。
Engine插件化设计
- Engine是平台核心组成部分,是定义数据监控任务在计算引擎中的执行逻辑,不同的Engine对应不同的执行引擎,例如Spark、Flink、Presto等。执行逻辑主要由Sources、Transformers和Sinks组成,由Source来执行数据源的连接和数据读取,由Transformer来执行各种聚合统计处理,由Sink来执行执行结果的输出。不同的计算引擎实现方式有所不同,但是核心的流程就是读取数据,执行统计和输出数据。插件化设计允许用户自定义Engine来增加新的计算引擎。
流程设计
任务执行流程
任务执行流程
数据监控参数生成流程
参数的构造和转换流程
未完待续。。。












网友评论