在平时的工作中,我们多多少少会有一些定时任务需要处理,有些是在每个服务器上单独部署,有些是在中控端部署,但是这样有一个缺点就是难以形成闭环,我们不知道我们的定时任务是否执行成功,如果需要做信息统计,这个工作量还是蛮大的。
简单来说,就是下面的痛点了:
-
需要在每台linux服务器的crontab里一一定义任务
-
任务的执行监控太不方便了
-
得登录到每台机器查看定时任务的运行结果,机器一多简直是一种灾难
-
对于多台机器协同处理一个任务很麻烦,如何保证多台机器上的任务按顺序依次执行?
-
当任务运行失败,要重新执行,还得重新定义下执行时间,让其重跑,重跑完成了还得改回正常时间
-
正在运行的任务要kill掉很麻烦,查看进程然后才能kill ......
而最近在梳理自动化的一些东西,所以开源的方案都会进入我的视线,我都会多多少少测试一下,看看怎么转换为自己需要的东西,顺便也找找曾经开发的感觉。有一个开源项目opencron引起了我的兴趣。
开源项目的地址是:https://github.com/wolfboys/opencron
整个开源项目的部署还是比较方便的,如果做过Java Web相关的开发,部署起来会很轻松。
说说我对这个项目的理解,开发语言主要是Java,它的架构是基于c/s的方式,在每个需要调用任务的客户端都需要部署一个客户端,然后在服务端来触发,整个工程的编译是使用maven实现,编译后会生成一个war包,拷贝到web容器中,比如tomcat中即可。
对我来说最大的优点是这个项目我能很快得到我希望看到的界面和功能。界面的效果上还是不错的,可以选择差不多10多个主题。
而从功能来说,个人认为中间的头像和日历还是不需要的,右边栏的统计很不错,通过这些概览能够很容易得到一个整体的数据。那些任务成功,失败都可以一目了然。
还有个不错的功能是对于任务的统计图,有折线图,有饼图。这个效果还是不错的。任务可以手动执行触发,也可以设置重跑次数,超时次数等等。
这个webshell的功能真是太炫了。在浏览器中能够开启这样一个ssh会话,我在几年前还曾经写过程序模拟,但是效果都不大好,在这里满足了我之前的一个小小的遗憾。
还有个问题就是如果要集成到自动化平台中,其实还是需要不小的工作量,因为自动化平台的技术语言目前是Python,考虑到团队的需求,尽可能减少体系的复杂度,opencron还是有不小的参考价值,在后期如何引入,我觉得可以依旧从试用中得到更多的经验。
我觉得我需要兼任几个角色,比如产品设计,系统架构,然后落地的过程中的开发技术和数据库相关的技术结合,想想挑战还是有的,不管怎么样就是做一件事情,把他做好,先提高团队的工作效率,把那些手工的配置和管理都能够对接到平台上,可以统一管控,如果从业务价值和技术价值的角度来衡量,其实目前来看技术价值有的,业务价值不高,但是如果能够落地,那么业务价值会远大于技术价值,技术工作就是如此,没开始的时候能够天马行空,但是要落到实处,需要付出很多的努力。
之前分享过一起 OpsManage的想法,有很多朋友已经在部署试用了,很多朋友问我一些部署的细节,或者说这个方案是否可以满足工作中的绝大多数需求,我想说的是,应该不会,我认为它最大的优点在于可以减少技术从0开始的复杂度,让你可以快速迭代开发。