介绍一下,spring cloud下的另一种定时任务解决方案

曾经天真的我以为在JAVA中做定时任务只有quartz、xxl-job、elastic-job

直到那天公司领导向我推荐了spring cloud data flowkubernetes cronjob

随后我快速去体验了一把它们的特点,而当再回过头来看我之前所了解的定时任务框架,便感觉很难再爱了

废话不多说,趁着激情还未褪去,带大家一共快速领略一下吧

spring cloud data flow安装

对于spring cloud data flow的安装这里就不记录和演示了,因为官网比我写的好上很多

安装过程一切以spring cloud data flow官方文档为准即可,以下为官方文档链接地址:
https://dataflow.spring.io/docs/installation/
在这里插入图片描述

kubernetes下安装注意事项

在k8s环境中安装spring cloud data flow,其安装yaml直接从github上可以找到,地址为:
https://github.com/spring-cloud/spring-cloud-dataflow/tree/master/src/kubernetes

为了查看与编辑方便,可以将其项目的整个源码clone下来慢慢品味
在这里插入图片描述

经过我的好几次不同k8s环境安装踩坑记录,有以下几点记录一下

  • 在具体安装时,如果需要将spring cloud data flow安装到非default命名空间下,记得自己指定下对应的name sapce
  • 如果只是想运行定时任务,skipper组件和监控相关的组件不是必要组件,可以根据自己的需要来进行安装
  • 安装prometheus时如果spring cloud data flow不是安装在默认的default命名空间下的,记得修改prometheus-configmap.yaml中的namespaces配置
  • 官方提供的springcloud/spring-cloud-dataflow-grafana-prometheus镜像在初始化时会先安装grafana的插件,如果没有科学上网的网络环境,可以通过在对应的deployment的yaml配置中指定http/https代理,再将promethues的域名请求屏蔽掉(NO_PROXY)以加快插件下载速度
  • 每个deployment的默认时区都不是东八区,如果修改可通过环境变量来指定时区
  • skipper与spring cloud data flow的数据库名是可以手动修改的,如有需要请自行指定
  • mysql和rabbitmq如果自己环境中已经有的话,是可以不用再部署的,直接用现成的即可
  • 默认的svc配置文件中服务暴露类型都是LoadBalancer,请根据自己需要进行修改
  • spring cloud data flow的dashborad也是可以设权限验证的,只不过比较麻烦,详情可参考官方api文档
  • 对于data flow中的task或stream中的通用配置可以配置到环境变量中,通过environmentVariables来指定,k8s中可配置项目见此链接
  • kubernetes中cronjob的触发时间是以kube-controller-manager容器的时区为准的,默认为utc时间,如果时区不一致可能会导致任务执行时间不准确,修改kube-controller-manager的时区即可

spring cloud task体验

在安装好了spring cloud data flow后就可以很方便地来管理task或stream类型的任务了,为了简单就先来体验一下spring cloud task的任务,以官方的开源任务为例,可按以下步聚进行添加:
https://dataflow.spring.io/docs/batch-developer-guides/getting-started/task/

uri处填入:

docker:springcloudtask/timestamp-task:2.1.1.RELEASE
在这里插入图片描述

随后创建task后再点击launch task

在这里插入图片描述
点击launch后会在k8s中创建一个pod来运行对应的任务
在这里插入图片描述
从pod的运行参数中我们也可以看出之前我们设置在spring cloud data flow server中的配置信息也注入到了这个pod中

创建定时任务体验

在有了task后便可以创建task对应的cron表达式了,也就是Schedule

在task详情界面中点击Schedule按钮即可进行创建,再输入对应的cron表达式与名称即可
在这里插入图片描述

创建好后再观察下k8s的dashboard
在这里插入图片描述

通过k8s的dashboard我们可知,spring cloud data flow创建的schedules也就是kubernetes中的cron jobs

spring cloud task运行monitor体验

在体验spring cloud data flow的监控前需要确保promethues组件和grafana已经安装好,grafana如果用的spring cloud data flow官方的yaml安装的,如果没有科学上网的网络环境可能需要一定的时间,因为它会从grafana的官网下载插件,如果有科学上网的网络环境的话下载还是挺快的,比如我这里操作的这样:
在这里插入图片描述
待一切需要的组件都部署好后就可以来体验一下spring cloud data flow的监控了

官方提供的可用于体验监控的task镜像为:

docker://springcloud/task-demo-metrics:latest

其添加步鄹与运行步鄹不再复述,当创建好或执行了上面的任务后,可直接登录grafana监控界面进行查看,或直接在spring cloud data flow的dashboard中直接进入也可以

在这里插入图片描述

其grafana界面为:
在这里插入图片描述

从这个界面中可以看到采集到promethues中关于job的一些相关数据,如执行过的task总数、目前处于运行中的task总数、task执行的开始与结束时间、task执行的时长等数据

当然spring cloud data flow的server端的数据也可以在grafana中可以看到,比如下图这样:
在这里插入图片描述
关于jvm的数据也同样可以观察到
在这里插入图片描述
有了promethues的数据采集和grafana的数据图表展示,再借助grafana的告警功能,我们便也可以实现某些自定义指标的告警功能,告警的渠道也挺多的,常见的钉钉、邮件、电话、web hook啥的都有,简直完美
在这里插入图片描述

stream组件支持

除了演示的这些功能外,spring cloud data flow还具管理spring cloud stream的功能,并且它还将一些常见的组件做了提供
在这里插入图片描述
其创建stream的界面也很直观:
在这里插入图片描述
对于stream相关的操作这里就先不演示了,感兴趣的可以自行研究一下


最后想说

spring cloud data flow确实很强大!感谢spring cloud data flow大佬们的开源!


不早了,准备睡觉了
在两个工作日下班后的空余时间在家码完此文!欢迎点赞!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水中加点糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值