在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:x-smart-kettle-front开源软件地址:https://gitee.com/yaukie/x-smart-kettle-front开源软件介绍:Smart Kettle引言本产品是基于开源Kettle自研的Kettle核心接口调用基础组件,其实早在5年前就想搞了,构思了很久,拖到现在,不过还行,现在也不晚吧最初的想法是启蒙于当年给烟草做过的一个数据交换平台的项目,数据的抽取是基于Kettle 5.x版本, 使用kettle的spoon客户端做的数据抽取为企业解决了棘手并且重要的ETL问题,因此Kettle是一款非常优秀的开源数据抽取工具。同时,kettle自身也有很多的问题,比如,- 只能使用客户端配置作业、转换- 跨平台移植困难- 数据安全性较差,系统一旦崩溃,文件库的内容容易丢失- 客户端非常耗内存、CPU,只适合配置,不适合做业务- Web界面极其简单、丑陋,生产环境无法投入使用基于上述几个企业痛点,我才决定工作之余,每天借用一点休息时间,慢慢积累,坚持不懈,才有了今天Smart Kettle调度平台的出世,也希望能切实帮助到企业解决数据抽取、调度、监控的问题。 企业的痛点
官方交流Smart Kettle 官方交流群①(500人):668964239Smart Kettle 官方交流群②(500人):668964239 联系我们联系邮箱: [email protected] 简介 Smart Kettle是针对上述企业的痛点,对kettle的使用做了一些包装、优化,使其在web端也能 具备基础的kettle作业、转换的配置、调度、监控,能在很大一定程度上协助企业完成不同业务场景下 数据的ETL(抽取、转换、加工)的能力。 注意:本系统并非是对kettle源码的再造,而是借助kettle的API,实现kettle在web端功能华丽的转身 1. 它是一款超轻量级的kettle web端调度监控平台
2. 它的平台实现充分基于"前后端分离"思想
3. 它的后端实现基于互联网最流行的微服务技术
4. 它的前端实现基于互联网最流行的渐进式VUE框架
技术方案技术栈:- 前端使用nginx 作为前端服务器- 前端使用vue作为展现框架- 数据库端使用mysql作为基础数据库- 数据库监控使用Druid作为基础监控- 定时调度使用Quartz作为基础插件- 后端框架使用Springboot+Mybatis作为组合演示环境: - 域名访问 : http://yuenbin.cn/test-kettle-admin 用户名-密码:superadmin或admin-1 - ip访问: http://101.132.24.211/test-kettle-admin 用户名-密码:superadmin或admin-1 项目简介整个工程的目录结构如下:后端工程: ├─doc│ └─database│ ├─MySql_ds0 --基础数据库设置│ └─MySql_ds1 --基础数据库设置├─docker --容器部署详情├─folder├─jenkins --jenkins持续部署详情├─settings --maven默认配置├─src│ ├─main│ │ ├─java│ │ │ └─org│ │ │ └─yaukie│ │ │ └─frame│ │ │ ├─autocode --代码机入口│ │ │ │ ├─controller│ │ │ │ ├─dao│ │ │ │ │ └─mapper│ │ │ │ ├─model│ │ │ │ └─service│ │ │ │ ├─api│ │ │ │ └─impl│ │ │ ├─config --系统基础配置入口│ │ │ ├─kettle│ │ │ │ ├─api --kettle核心接口所在位置│ │ │ │ ├─core│ │ │ │ ├─listener --kettle监听所在位置│ │ │ │ ├─quartz --定时器所在位置│ │ │ │ └─service│ │ │ ├─listener│ │ │ └─pool --线程池配置所在位置│ │ └─resources --核心配置所在位置│ │ ├─mapper│ │ ├─template│ │ └─ui│ │ └─images│ └─test│ └─java│ └─org│ └─yaukie│ └─frame --核心逻辑所在位置 前端工程: ├─docker│ ├─dev│ └─prod├─jenkins├─public│ ├─cron│ └─json├─src│ ├─api│ │ ├─login-form│ │ ├─main│ │ │ └─components│ │ │ ├─a-back-top│ │ │ ├─error-store│ │ │ ├─fullscreen│ │ │ ├─header-bar│ │ │ │ ├─custom-bread-crumb│ │ │ │ └─sider-trigger│ │ │ ├─language│ │ │ ├─side-menu│ │ │ ├─tags-nav│ │ │ └─user│ │ ├─page-box│ │ │ └─src│ │ │ └─styles│ │ │ └─css│ │ ├─page-table│ │ │ └─src│ │ │ ├─components│ │ │ └─styles│ │ │ └─css│ │ ├─parent-view│ │ ├─search-box│ │ │ └─src│ │ │ └─styles│ │ │ └─css│ │ ├─upload-file│ │ │ └─src│ │ │ └─styles│ │ │ └─css│ │ ├─upload-img│ │ │ └─src│ │ │ └─styles│ │ │ ├─css│ │ │ └─images│ │ ├─upload-img-list│ │ │ └─src│ │ │ └─styles│ │ │ └─css│ │ ├─upload-video│ │ │ └─src│ │ │ └─styles│ │ │ ├─css│ │ │ └─images│ │ └─weeks│ │ └─src│ ├─config│ ├─directive│ │ └─module│ ├─libs --工具类│ ├─locale --国际化配置│ │ └─lang│ ├─mock│ │ └─data│ ├─router --基础路由配置│ │ └─modules│ ├─store --系统状态机│ │ └─module│ ├─styles│ │ └─components│ └─view --调度平台核心前端功能│ ├─business --业务配置│ ├─examples│ │ ├─common│ │ └─page│ ├─exception --异常监控│ ├─homepage --调度大屏│ │ └─common│ ├─job --作业调度│ ├─log --日志监控│ ├─login --登录模板│ ├─pool --线程池配置│ ├─repo --资源库配置│ ├─scheduler --定时器调度│ ├─task --定时调度│ ├─trans --转换调度│ └─warning --告警监控 环境要求
功能概览
使用方式
1. 离线部署(源码访问)
<servers> <server> <id>rdc-releases</id> <username>Y3z0VZ</username> <password>Bb8byTSlq0</password> </server> <server> <id>rdc-snapshots</id> <username>Y3z0VZ</username> <password>Bb8byTSlq0</password> </server> </servers> ``` <pluginRepository> <id>snapshots</id> <url>https://maven.aliyun.com/nexus/content/groups/public</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> <pluginRepository> <id>rdc-releases</id> <url>https://repo.rdc.aliyun.com/repository/128991-release-EJH8o1/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> <pluginRepository> <id>rdc-snapshots</id> <url>https://repo.rdc.aliyun.com/repository/128991-snapshot-NY2Ub0/</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> 内容不要更改,因为里面配置的是我本人的阿里云仓库地址,密码不会再改变,如果有变化,会在网站统一通知,届时, 重新下载即可 ,仓库环境配置好之后,静静等待jar下载吧,等下载完毕,要去仓库检查一下是否有如下几个jar:```xml x1-simple-job-2021.4.jar x-kettle-core-2021.4.jar x-common-base-2021.5.jar x-common-pro-2021.5.jar x-common-auth-2021.5.jar 如果本地仓库有如上几个jar,那么恭喜您,下载成功,接下来开始进入到步骤三:
#配置服务器 #配置服务器 server: port: ${XTL_APP_SERVER_PORT:9876} servlet: context-path: ${XTL_APP_SERVER_PATH:/xtl-server} #配置数据源 spring: redis: # 默认不开启 则使用内置Map 作为缓存使用 enabled: ${XTL_REDIS_ENABLED:false} # redis缓存开关【如果有redis建议开启,提高性能】 host: ${XTL_REDIS_HOST:127.0.0.1} port: ${XTL_REDIS_PORT:6379} password: ${XTL_REDIS_PASS:root} jedis: pool: max-active: 8 max-wait: -1 max-idle: 500 min-idle: 0 lettuce: shutdown-timeout: 0 application: name: ${XTL_APP_NAME:xtl-app} # 应用名称【使用默认就行】 datasource: druid: # 主库数据源 master: #系统数据库访问地址【必填项】 url: ${XTL_APP_DATASOURCE_URL:jdbc:mysql://localhost:3306/xtl?useUniCode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT+8} #系统数据库用户名【必填项】 username: ${XTL_APP_DATASOURCE_USERNAME:root} #系统platform【必填项】 password: ${XTL_APP_DATASOURCE_PASS:root} # 从库数据源 slave: # 从数据源开关/默认关闭 enabled: false url: jdbc:mysql://localhost:3306/test_01?useUniCode=true username: root password: root # 关闭sharding-jdbc 必须为false shardingsphere: enabled: false # 设置时区 jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8 kettle: scheduler: #是否开启定时调度,默认为fals,则系统启动不会自动执行定时 enabled: ${XTL_KETTLE_SCHEDULER:false} #kettle定时调度启用为true,应用启动之后,自动将任务加入到定时器执行,设置为false则需要手动触发定时任务 log: file: #日志物理路径【必填项】 path: ${XTL_KETTLE_LOG_FILE_PATH:/xtl/kettle/logs} # 这个地方建议一定要配置一个存放目录,方便后期下载,查看历史执行记录,如果为"",则不会产生日志到服务器 size: ${XTL_KETTLE_LOG_FILE_SIZE:10} # 控制日志文件的大小,默认是10M,超过10M则截断请求 repo: # 自定义数据库资源库 使用之前必须先定义资源库【必填项】 name: ${XTL_KETTLE_REPO_NAME:临时资源库} # 资源库名称【必填项】 hostName: ${XTL_KETTLE_DB_HOST:localhost} # 数据库连接地址【必填项】 dbPort: ${XTL_KETTLE_DB_PORT:3306} # 数据库端口 资源库目前仅支持MySQL【必填项】 dbName: ${XTL_KETTLE_DB_NAME:etl} # 数据库实例名【必填项】 userName: ${XTL_KETTLE_DB_USERNAME:root} #数据库用户名【必填项】 passWord: ${XTL_KETTLE_DB_PASS:root} # 数据库密码【必填项】 repoLoginName: ${XTL_KETTLE_REPO_LOGINNAME:admin} #资源库登录账户 默认admin【必填项】 repoLoginPass: ${XTL_KETTLE_REPO_LOGINPASS:admin} #资源库登录密码 默认admin【必填项】 # 该线程池会优先充满至最大的线程数(JDK默认优先将任务提交到队列,队列满了再充满至最大的线程数) pool: # 线程池前缀 namePrefix: ${XTL_THREAD_POOL_PREFIX:kettleThreadPool} # 核心线程数 coreThreads: ${XTL_THREAD_POOL_CORE:20} # 最大的线程数 maxThreads: ${XTL_THREAD_POOL_MAX:50} # 队列容量 queueCapacity: ${XTL_THREAD_POOL_QUEUE_CAPACITY:100} # 5分钟空闲则释放 keepAliveTimeMin: ${XTL_THREAD_POOL_KEEPALIVE:5} # Swagger配置 swagger: # 是否开启swagger enabled: true # 请求前缀 pathMapping: / #当前系统版本号 version: V2021.5 # 系统验证配置 yaukie: auth: enabled: true # 系统开启权限认证模块【使用默认就行】 encoder: type: md5 # 使用MD5加密方式,如果不设置,则使用强散列函数【使用默认就行】 # 是否开启权限认证模块 # 如果开启登录验证模块,此配置有效 token: # 令牌自定义标识 header: Authorization # TOKEN 头【使用默认就行】 # 令牌密钥 secret: [email protected]&[email protected] # TOKEN加密使用的秘钥【使用默认就行】 # 令牌有效期(默认10分钟) 如果不配置 按照10分钟过期 expire: 10 # 令牌TOKEN过期时间,默认十分钟【使用默认就行】 # 令牌刷新间隔 1 分钟 refresh: 1 # 零头TOKEN刷新间隔默认1分钟【使用默认就行】 logging: #系统日志存放路径 path: ${XTL_APP_LOG_PATH:/maven/xtl-web-server/logs} level: org.yaukie.frame.autocode.dao.mapper: debug root: ${XTL_APP_LOG_LEVEL:info} #扫描mapper配置,统一放到classpath目录下 mybatis: mapper-locations: classpath*:mapper/**/*Mapper.xml configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 配置注释写的很清楚了,这里不再解释,如有不懂的地方,请留言
# clone the project git clone http://open.inspur.com/yuenbin/x-smart-kettle-front.git git clone https://gitee.com/yaukie/x-smart-kettle-front.git git clone http://github.com/yaukie/x-smart-kettle-front.git // install dependencies npm install // develop npm run dev
devServer: { proxy: { "/xtl-server": { target: "http://localhost:9876/xtl-server/", pathRewrite: { "^/xtl-server": "" }, changeOrigin: true } } } 然后执行 2. 在线部署(懒人模式)懒人模式使用方式针对那些不想下载源码,也不想自己搭建本地环境、下载依赖,说白了就是想通过傻瓜式的方式使用本系统。那么,本人也为有这类需求的读者或企业提供了最省时省力的使用方式,详情请点击如下链接访问,查看具体使用教程:懒人教程请点击:-> https://my.oschina.net/yaukie/blog/4993603 3. 云端部署(docker部署)--待完善本平台采用前后端分离,前后端都支持docker 远程镜像部署、拉取,支持云部署,读者可根据需要拉取镜像,完成本地化部署- Smart Kettle 前端前端镜像地址为:registry.cn-qingdao.aliyuncs.com/yaukie/kettle-admin:2021.4--- 1. 登录服务器,执行如下docker命令,拉取Smart Kettle镜像,docker pull registry.cn-qingdao.aliyuncs.com/yaukie/kettle-admin:2021.4出现上图的images,说明镜像拉取成功了 --- 2. 启动镜像文件执行 docker images 命令,拿到对应的镜像ID然后执行如下命令,docker run --name test-kettle-admin -p 80:80 -d d84b07291e84执行上述命令之后,在系统上再执行 docker ps ,查看已经启动的容器信息出现上述的信息表示,系统启动成功!然后直接在浏览器中,输入http://ip/test-kettle-admin 访问即可,如下图所示:
后续计划 Smart Kettle 目前尚未完全实现Kettle web 端的编排,因此使用此系统还需要借助Kettle 客户端完成复杂作业及转换 的设计、测试,但提供了友好、优美、简洁的前端监控能力,kettle 组件的web端流程编排是以后本系统前进的方向,努力 实现的终极目标,也期待读者能持续关注升级、更新。
相关模块
使用情况当前该调度监控平台于2021年初正式上线,截止最新统计时间为止,Smart Kettle已接入的公司包括不限于: - 1、xx软件股份有限公司 http://xx.com.cn - 2、北京浪潮天元集团 https://lcjtgs.dyq.cn/ - 3、南京竹石信息科技有限公司 http://www.mymedunion.com/
参考资料
捐赠开源不易,感谢捐赠No matter how much the donation amount is enough to express your thought, thank you very much :)To donate无论捐赠金额多少都足够表达您这份心意,非常感谢 :)前往捐赠 作者简介@Author: yuenbin屌丝一枚,码农搬运工,正努力成为互联网行业的土豪,多多益善,来者不拒!佛祖保佑捐赠这些人写程序永无bug,工资翻倍,迎娶白富美,走上人生巅峰! |
请发表评论