阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux定时任务访问页面代替Quartz集群

143次阅读
没有评论

共计 1251 个字符,预计需要花费 4 分钟才能阅读完成。

业务背景:
web 中经常有业务需要定时执行,但是在集群环境中,如果多个服务器中的定时任务同时开启的话会导致数据库挂掉,实际应该中只有一个定时任务访问数据库。

怎么解决这一问题呢:

1、多服务器集群时,目录挂载。只有一台服务器存放定时任务,挂载时排除定时任务的配置文件,只让一台服务器开启定时任务。

2、单独部署一台服务器,用来跑定时任务

3、使用 linux 脚本,访问集群服务器页面或 action,肯定有一台服务器接收到请求,然后执行定时。

这里要说的就是第 3 种方式,缺点是:被访问服务器的页面或 action 需要做安全限制。

首先,配置 linux 定时任务:

vi /etc/crondtab

0 1 * * * root /dbdata/backup/cms/async.sh

 

然后是 async.sh 中, 如果请求出错就发邮件报警:

#!/bin/bash
Dir=”/home/webtrn/CrontabDir”
echo `date +”%Y-%m-%d-%H-%M”` >> $Dir/checklearntime.log
wget -t1 http://www.baidu.com/checkserver/XXX.jsp -o $Dir/wgetchecklearntime.log
grep -q “404” $Dir/wgetchecklearntime.log || grep -q “302” $Dir/wgetchecklearntime.log
if [$? != 0]; then
        echo “checklearntime have done” >> $Dir/checklearntime.log
else
        echo “checklearntime is error” >> $Dir/checklearntime.log
        echo “checklearntime is error” | mail -s “webtrn” zhugaojian@whaty.com
        echo “checklearntime is error” | mail -s “webtrn” jinqingwen@whaty.com
fi
rm -f XXX.jsp
rm -f $Dir/wgetchecklearntime.log

Spring 集成 Quartz 定时任务框架介绍和 Cron 表达式详解 http://www.linuxidc.com/Linux/2013-03/81947.htm

Spring 整合 Quartz http://www.linuxidc.com/Linux/2012-12/75284.htm

Spring 的 Quartz 定时器同一时刻重复执行二次的问题解决 http://www.linuxidc.com/Linux/2012-11/73443.htm

Spring 定时器 Quartz 的用法 http://www.linuxidc.com/Linux/2012-11/73442.htm

Spring 联姻 Quartz 实现作业调度 http://www.linuxidc.com/Linux/2012-08/69215.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计1251字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中