负载下的定时器多机处理的方案

前言:最近人员报表组织里弄了个定时每天统计各部门中心下的人员数量,由于经验不足,没有考虑到后期负载均衡相关的定时任务的双机处理。网上看到了几种处理的

方案,整理一下。给自个提个醒,编程序的时候要多考虑一些,往后延展性多思考一点,同时开拓思想和定时处理的方案。

1、将牵扯到的定时任务,从主程序 中剥离出来单独执行,单独执行。

  2、首先,我们先在数据库建一个表:timerT,表里面有三个字段:status(表当前定时器是否处于可运行状态)、timestamp(时 间戳)、serverIP(正在运行定时器的服务器IP)。

    这里其具体的用法是:当两台服务器,都运行起来后,服务器A开始执行定时器,这时,A会去读取表timerT的status字段,当为0 时,则执行定时器的业务逻辑,此时A定时器,需要把status改为1,以便让另一台服务器的定时器B不去执行业务逻辑并把当前服 务器的IP记录到表中,同时修改启动一个新的线程,在XXX长的时间间隔内不断去修改timestamp的值,当A执行完业务逻辑时, 就把status的值改为0,这样B定时器就可以执行。这样做可以解决一个问题,就是:当其中一个定时器A挂掉后,我们另一个定时 器B,可以比对timestap的值与当前时间是否超过XXX时长,如果超过,则证明定时器A已经挂掉,这时B就会把status的值改成 1,把serverIP改成B定时器所在的服务器IP,并执行业务逻辑。
3、对程序进行监听,监听是否有重复执行的定时器任务,有的话则不执行相关的业务逻辑。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值