### Visualization分布式数据分析平台
一个类似Kettle的数据分析平台,目标是数据分析,可承担一点ETL任务。
Visualization使用低代码(类工作流)方式编排DAG任务,集群自动执行相应的任务。
如果喜欢或者对您有帮助,请点个star吧!:)
[点击到达GitHub](https://github.com/pan-rr/visualization) | [点击到达码云](https://gitee.com/pan-rr/visualization)
#### 架构图

#### 特性
+ 流程配置化。提供前端拖拉拽形式配置流程,数据操作使用表单配置,少量代码即可完成相应的配置;
+ 流程执行监控统计。统计任务执行情况;
+ 基于Spring Cloud的分布式集群计算,外部组件依赖较少,容器集群部署相对方便;
+ 基于`SQL-SELECT`方式提取数据,上手成本相对低;
+ DAG任务按优先级调度,节点任务由集群自动执行;
+ 支持多数据源,目前支持CSV、JDBC(MySQL驱动、PostgreSQL),后续会增加其他类型的数据源;
+ 文件分片上传下、下载;
+ 支持流程实例任务执行情况查询,以任务时间线形式展示;
+ 支持多租户权限管理,允许父子租户
+ 支持前端页面路由按权限动态生成,后端按资源鉴权;
+ 权限树使用G6绘制
+ 部分组件支持语法提示和高亮
+ 支持Visual、SQL、HTTP任务
#### 使用场景
+ excel(异步)导出
- 某些国企项目有excel导出需求,visual可以异步导出excel,减少代码开发量
+ 单节点可承接的数据分析。
- 大数据量任务请使用Flink Task,或使用其他OLAP工具或加大内存;
- 一般个位数GB的JVM可以处理百万级数据
+ 有数据分析需求,但不想搭建大数据那套集群,可使用本工具;
+ 有配置需求的场景,例如定时生成分析报表的需求。
- 这个目前需外部定时任务组件新建流程实例,目前市面上已经有很多定时任务组件可以搭配使用(后续考虑增加定时组件);
+ 异构数据源连接操作,例如某张表在PolarDB、CSV,另一张表在MySQL的连接操作;
+ 取数逻辑频繁修改,例如某个指标的获取方式。本工具只需修改配置即可实现修改逻辑;
+ 数据大屏的后端,类似于datav、mapv的画布工具,使用该工具可以快速构建大屏后端;
#### 部分截图


















#### 部署前置条件
JDK1.8+、MySQL5.7+、Redis6+、NodeJS、MinIO、InfluxDB
`备注:`作者开发环境是Mac,部分依赖可能和Windows有区别。作者开发过程就遇到Netty的依赖需要替换
#### 工程结构
+ visual-discovery:注册中心eureka
+ visual-engine:计算节点,分布式集群请启动多实例
+ visual-core:配置化的基础实现
+ visual-portal:前端项目
+ visual-gateway:网关服务
+ visual-auth:权限服务
#### 部署步骤
1. 启动MySQL、Redis、MinIO、InfluxDB
2. 启动visual-discovery (SpringBoot的启动方式)
3. 启动visual-gateway (SpringBoot的启动方式)
4. 启动visual-auth (SpringBoot的启动方式)
5. 启动visual-engine (SpringBoot的启动方式)
6. 启动visual-portal (yarn test,其他环境指令目前就不配置了)
7. 浏览器进入`http://localhost:8080/`
#### 主要功能点说明
+ 流程模版配置、优先级(失败重试)配置;
+ 流程实例执行、查看、终止、日志;
+ 流程执行情况监控;
+ 文件上传下载;
+ 权限资源配置、权限分配、赋权、网关鉴权、前端路由渲染、权限树;
`非开源版增加了上下文任务,任务可以获取上下文的变量,以及修改了部分样式`
#### 任务类型说明
+ Visual Table
`Visual Table,下文称VT`
VT类似Flink SQL,使用SQL定义ETL任务;
VT提供基础的SQL语法提示和语法校验,目前不支持`UDF`;
VT基于内存计算,使用create table 和 insert 语句定义ETL;
VT会尝试执行脚本中的DDL;
详情点击 [Visual Table说明](https://gitee.com/pan-rr/visualization/blob/master/table.md)
+ SQL
用于执行建表、删除表等操作;
+ Context
用于上下文变量注入或覆盖,其他任务可以使用表达式获取上下文变量;
+ HTTP
主要用于外部接口调用。通知外部系统、获取token等用途;
+ Flink
使用Jar Id提交Flink Job给Flink集群;
+ Visual(将废弃)
多输入项和一个输出项,输入项定义数据获取信息,输出项定义数据连接和输出信息;使用`SQL-SELECT`方式提取、转换数据,上手成本相对低;
`未来会将这部分代码移除!请收悉!`
#### 任务流程配置步骤说明
1. 在流程管理-流程定义新建流程模版。拖拽左侧“任务节点”到画布,点击节点进行配置。配置完成后点击发布流程
2. 在已定义流程列表点击运行实例
3. 等待任务完成,在“流程管理-流程实例列表-查看执行日志”里查看任务的执行情况
#### 租户说明
+ 注册时,可选择租户用户和普通用户;
+ 普通用户在赋权后才与对应的租户关联;
+ 右上角的“企业/组织/团队”选择当前进入的租户空间,所有用户都默认和public租户关联;
#### 存储空间说明
+ 存储空间可选个人和当前租户;
+ 所有配置项都存储在选择的存储空间;
#### 流程实例涉及文件说明
流程涉及到的文件有以下两种路径
+ 路径前缀是spaceShare,则文件在spaceShare文件夹下;
+ 其余情况的路径前缀是“流程模版Id/流程实例Id/文件配置的路径”。这么设置是为了规避多流程实例出现文件覆盖。
#### 流程模版文件上传下载
+ 在文件管理页找到对应路径上传下载。
+ 支持分片上传、秒传、下载
+ `注意:`流程模版共享的文件需在spaceShare文件夹下,否则无法识别。例如存储空间为public时,对应空间路径是"/public/spaceShare"
#### 功能变更
> 功能下架
感谢支持及使用`Visualization`!
流程类型中的Visual任务后续会做下架处理,相关代码会移除,请重新定义流程,避免报错!
> 功能新增
+ 新增Visual Table,后续Visual Table将代替Visual任务
+ 新增执行监控面板(Beta),方便查看执行情况
#### 后记
更多功能需日后完善。
尊重劳动成果,未经允许禁止商业闭源修改使用。
二次开发必须注明出处`https://github.com/pan-rr/visualization` 或者 `https://gitee.com/pan-rr/visualization`
禁止抹掉原作者信息
有什么问题或建议可提issue或者邮件vision_netmail@163.com联系