在Timer定时任务中_基于Redis自己实现一套双机互备_双活系统_基于抢占原则---SpringCloud工作笔记172

该系统中使用了很多Timer来定时处理不同的任务,部署的时候为实现系统的稳定性,高可用性,

要求至少双活,或多活...本来基于SpringCloud的分布式能力,或者可以用分布式定时器,Quartz

如果以后再实现定时任务,要记得用这个吧Quartz,可以实现定时任务,关键是,可以实现定时任务

的分布式,保证同时只有一个定时任务在运行,不用自己再实现这个机制了..

但是由于之前设计这个系统的同事用到Timer,所以..现在还能继续做了..先自己实现一套再说.

思路是:

利用redis,存放服务器的IP,并且给IP打上标志位,比如{type:master , ip:10.11.12.13 , state :active ,time:2022-06-11 11:15}

1.对于主服务器:然后,系统启动以后,有定时器去,不停的检测,检测自己的IP和系统时间,跟获取出来的,redis中的,时间,和IP,是否一致,如果IP一致,就说明自己就是主服务器,并且自己的系统时间,减去redis中获取的时间,时间差没有大于超时时间,这个时候就去更新一下redis中的时间.

2.对于从服务器,启动以后也是去检测,不停的获取redis中的,{type:master , ip:10.11.12.13 , state :active ,time:2022-06-11 11:15} 数据,获取以后,用自己的IP跟获取的IP对比,发现自己不是主服务器,

然后就不做任何操作,然后不停的检测,直到检测到,自己的系统时间,和获取的redis的时间差,超过

超时时间,就说明主服务器已经不更新时间了,说明主服务器down机了,这个时候,从服务器,就可以

修改redis中的这个数据:{type:master , ip:10.11.12.13 , state :active ,time:2022-06-11 11:15}

把IP改成自己的,然后开始不停的,更新时间,同时,启动自己的定时服务开始处理数据.

3.而等主服务器恢复服务以后,主服务器会再次检测,但是检测到IP,不是自己的来,说明自己已经变成了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

添柴程序猿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值