[开源]一个灵活的数据流转平台,Kettle的数据流转及调度平台

科技一飞开源 2024-09-18 11:16:45

一飞开源,介绍创意、新奇、有趣、实用的开源应用、系统、软件、硬件及技术,一个探索、发现、分享、使用与互动交流的开源技术社区平台。致力于打造活力开源社区,共建开源新生态!

一、开源项目简介

基于kettle的数据流转平台,依托kettle的灵活性及丰富的组件生态,能灵活的实现各类复杂需求,本平台可以单纯作为一个kettle的调度平台,也可以作为一个灵活的数据流转平台,二者将是最完美的组合。

二、开源协议

使用GPL-2.0开源协议

三、界面展示

四、功能概述

平台创建的作业最终都是生成kettle作业,有特殊需求可以在kettle中直接进行修改以满足特殊需求,灵活才是长期存活的基础。

其他非常规作业可以直接在kettle中设计后在本平台内进行统一调度管理。

本平台足够灵活,所谓有容乃大如是也,自身虽然已经足够强大,但仍具备不可比拟的包容性,任何外部优秀的东西都可以集成进来,因此本平台也是很完美的所有后台任务的统一管理平台。

kettle作为非常优秀的开源ETL工具得到了非常广泛的使用,一般的使用都是使用客户端操作管理,但问题是当投入生产环境使用时,动辄几百上千个job需要管理,这时在使用客户端管理已经很难完成了。作者所知道的解决方案有用命令行的调用的,操作极其麻烦,难以维护,总之还是很难用啦,还有就是开发web端管理工具,kettle自带了一个web端管理工具,界面极其简陋不说,还很难用,基本无法投入生产环境使用,其他没留意到还有没有较好对众多job进行管理的工具。

基于以上情况和作者多年的kettle定制开发与使用经验。作者设计并开发了数据大师,在kettle的基础上,将常用的场景迁移到web端,使运维人员甚至普通客户都能实现常见需求,作者的目标是web端能实现70%的需求,剩余一些特殊少见的需求则由数据人员在kettle中直接实现,然后统一在本平台调度管理。

平台特性支持在一个调度中同时调度多个资源库的任务,也支持一个资源库的任务在多个调度节点上执行,同时支持在一个管理系统中同时管理多个调度节点。新增支持设置作业启动时执行,支持cron定时,使定时设置更加灵活。平台内支持创建:数据流转作业(暂时取消,设计有点复杂不太实用,目前有数据同步任务)、KM作业、javascript作业、shell作业、sql作业。本平台能自动检测作业运行异常信息,便于平台运行状况跟踪,当作业量很大时,很难逐个作业查看运行情况。本平台提供基础的运行日志,作为作业运行情况的回溯依据,便于事后问题排查。平台提供设计好的数据流转日志功能,更接近业务层,用户可以根据需要使用。平台提供转换管理,当前转换管理只提供查看、删除、查看转换图功能,将来根据需要提供导入功能。数据库管理是管理kettle中配置的数据库信息,若是完全深入采用数据世界平台,那么这里的数据库都将采用jndi的形式关联使用数据世界中的数据载体管理,一处配置全平台通用,若是直接在kettle中配置的数据库,此处可以进行密码解密。一些说明本平台2015年投入使用,我们公司已经在多地部署使用,开源以来,外部也有大量用户,所有基础的作业调度功能已经稳定,新添加的功能基本属于锦上添花,有些小bug也难免,欢迎反馈,让我们一起让他变得更好。本系统是基于数据库资源库设计的,暂时不考虑支持文件资源库,当前支持oracle和mysql。关于kettle版本的问题,当前版本开发使用的是8.3版,之前版本采用5.4开发,目前建议使用8.3版五、技术选型框架简介

本系统全面参数化,采用类似前端框架的参数组织形式,使系统足够灵活,可配置性极强。

技术架构

本项目采用的技术选型如下:

数据库:暂时oralce、mysql,可以很快实现支持各类数据库。后端:springboot2+beetlsql+redis前端:vue3+vxe-table+element框架特点技术选型:前后端采用当前最流行且较新版本的技术方案:springboot2、beetlsql、fastjson、druid、vue3、vxe-table、element-plus、各种数据库DAO工具:数据库层采用了beetlSql,国产优秀DAO层工具,作者认为比hibernate和mybatis更好,hibernate封装过深,大部分人使用多年仍然只会皮毛,mybatis的xml配置sql也是很不友好的,而beetlSql同时兼具此二者优点,代码量不大,代码可读性强,模板语法类似javascript,采用markdown形式组织SQL,简单易学,遇到问题也可以直接下载源码进行内部细节了解及改造,作者也向官方推送过代码,这是真正掌握在自己手上的优秀DAO层工具。多数据源支持:灵活动态的配置数据源,一处配置多处使用,代码中可以非常方便的切换数据源,kettle中也可以直接使用该数据源配置,本系统封装Db工具,实现常用数据库操作的简化,方便的切换数据库方式,开发体验飞起来。运行简单:项目依赖服务极少,经过反复思考,目前项目主要依赖redis(可选择)和数据库(目前已经适配mysql和oracle),使项目更简单,可以快速简单运行部署。全面参数化:本系统全面参数化,采用类似前端框架的参数组织形式,使系统足够灵活,可配置性极强,并且提供完整的参数文档。接口统一:平台所有接口支持pc端、app端、第三方方便调用,对外接入及共享数据无需开发代码,通过简单的配置即可实现。日志封装:采用logback日志框架,并集成转换框架可以兼容log4j和common-longging等日志框架,从而实现了日志的统一,同时自己实现日志记录器,支持将系统所有异常日志记录到数据库中,便于后续系统维护预警,同时作者进行了简单的logbak日志封装,开发中可以方便的使用日志记录,且不会影响日志中的类命名及堆栈信息。面向对象:面向对象的系统架构思路,万物皆对象,计划支持各类支持jdbc的数据库、文件、ftp等数据形式。统一字典:统一的字典服务,汇集全平台所有字典并提供统一服务,可以非常灵活的集成各处数据进行字典服务,具体请参考开发规范中字典管理章节。文件服务:统一的文件服务,全平台统一文件服务,支持文件上传到本地文件系统、ftp、hdfs、数据库等数据载体中,可以清晰的查询下载到平台所有上传的文件。统一配置:极简的实现配置分布式管理,支持配置继承,没有任何依赖。统一验证转换:本系统实现统一的验证、转换机制,可以对每个请求的参数进行校验、转换配置。精细系统日志:系统操作日志记录精准,除了常规的请求路径、ip、操作人等信息外,本系统日志参数代码自动翻译为中文,记录日志入参、返回结果、耗时记录等,便于排查系统性能点进行精准优化。不一样的权限体系:简洁强大的权限控制系统,本框架角色可以有子角色,父角色默认包含子角色权限,可以对未登陆的用户授权,可以对所有登陆的用户授权,支持按钮操作级授权等。低代码:本系统已经实现通用的增删改查,并提供通用的数据模板下载、数据批量上传、数据导出、列表编辑、记录复制等特色功能,后续还可根据需要自行定义各系统通用方法,大部分需求不需要开发代码即可通过配置实现,本系统也不生成代码,配置会缓存在内存中,性能不受影响,配置修改实时生效,同时还能非常灵活的满足任何特殊需求,这是与目前市面上绝大部分低代码框架的最大区别。插入更新:本系统支持按业务字段进行去重,在新增和批量上传时可以按业务字段进行查重后自动选择插入和更新。国际化支持:集成国际化支持,可以便捷的开发国际化系统。定时任务:本系统集成xxl-job作为定时任务管理机制,可以方便的进行定时任务的开发及管理。智能交换:本系统提供一个智能交换系统,能方便的配置实现本地文件、ftp、kafka等数据载体间的数据近实时同步,从而简单快捷实现高效的跨网数据交换等复杂需求。bean生成工具:系统内置基于beetl模板开发pojo生成工具,可以在idea中导入doc/idea-run/pojo.run.xml,然后根据需要修改doc/pojo.json配置文件生成实体类。六、源码地址

访问一飞开源:https://code.exmay.com/

0 阅读:0