data-pipeline(分布式采数应用)

2022年08月和同事接手以前的一套老系统,系统需求不高,大部分功能都是要求使用爬虫或etl工具从第三方采集数据。以后有空再整理爬虫,这里主要谈谈我对数据采集的个人看法。
出于工作性质原因,我接触过不少的数据采集应用,有使用自研工具的、也有使用类似dataX等开源工具,虽然略有侧重,但核心仍是专注在采数。我们在做设计的时候经常强调“高内聚,低耦合”,其一目的就是为了降低各模块的耦合度,削弱模块间的关联度。回到我前面提的那套老系统,数据采集使用了第三方ETL工具,这款ETL工具或许没有定时调度功能,以前的开发人员便设计出了两套调度方案,方案1:使用crontab定时调度etl工具;方案二:在java应用远程调度shell脚本定时启动采数,java应用则使用第三方调度应用定时调度。从实现上两个方案都没问题,但从设计的角度分析,我们会发现方案一存在一定弊端:偏系统底层、无法视图化、维护成本高,如果需要临时调度一次采数,需要具备一定linux技能才能完成操作,这无形增大了系统的维护难度;方案二相较方案一略增加了复杂度,实际上也规避不了以上提到的弊端,调度强依赖第三方应用,在多任务并发的情况下还可能威胁到服务器的稳定。在后续的维护开发中,我们也不得不投入了大量的人力维持采数功能的正常运行。
data-pipeline源自我以前的一次无意实现的demo,在经过对老系统的思考,在此demo的基础上进行了二次重构。data-pipeline并不像主流ETL工具那么强大,主要的优势就是简单、灵活、轻量级。基于spingboot、quartz实现的纯java应用,只需具备java技能就能进行二次开发维护,虽然目前仅支持mysql、oracle两种类型的数据传输,但通过简单集成实现,也能满足对ES、nosql,等存储介质的数据传输。data-pipeline使用quartz实现任务的定时调度,quartz本身也提供了分布式调度的解决方案,所以data-pipeline无疑也支持分布式部署。正所谓一个好汉三个帮,一台机器干不完的活,便多加两台机器,data-pipeline会把执行任务分配到任何一台机器,如果某台机器宕机,其他机器到执行时间也能继续执行任务。关于quartz的分布式调度,有兴趣的朋友可以单独了解下。下面开始介绍data-pepeline的安装过程:

安装教程

  • 下载源码:
[data-pipeline: 基于springboot实现分布式的数据采集应用 (gitee.com)](https://gitee.com/juque-framework/data-pipeline)

  • 在mysql创建数据库:data-pipeline,其他数据库需要自行适配DDL、DML脚本;
  • 执行data-pipeline-server/bin下面的DDL、DML脚本;
  • 根据实际环境调整如下配置:
    spring:
      datasource:
        url: jdbc:mysql://127.0.0.1:3306/data-pipeline?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
        username: root
        password: root
  • 启动应用,控制台访问路径:http://localhost:8080;
  • 默认帐号密码:admin / 123321
  • 也可以下载发行版:release-*.zip,调整application- *.yml配置,启动应用:startup.sh / startup.cmd dev(对应环境的profile)

应用依赖

juque-framework是本人使用空余时间维护技术栈的一个gitee集合,data-pipeline的maven依赖统一由juque-framework管理,部分工具类引用自framework-common,都可以在此gitee集合下面找到。本地编译,可以先把这两个工程clone到本地,并install。
前端是基于vue-next-admin前端框架二次开发,详情请移步:https://gitee.com/lyt-top/vue-next-admin。vue-data-pipeline的gitee坐标:vue-data-pipeline: 数据采集应用的前端 (gitee.com)

应用预览

1.png

2.png
3.png
4.png
6.png
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容