Java 定时任务在服务器集群中的实现问题

针对定时任务中不同服务器易出现对同一条数据的重复处理,处理方法如下:

  • 若无需考虑效率,可在 redis 中加一个锁。在定时任务开头判断锁状态,若有锁,直接 return,没有锁的话则加上锁并向下执行,在任务执行的最后删除锁。

  • 若需要考虑效率就比较麻烦了,如几台服务器需要同时处理一个数据库中的数据,为了防止数据被重复处理,可做一个读取的定时任务,任务开头加锁,读取并 push 到一个 redis 队列中;再做一个处理的定时任务,pop redis 队列中的数据挨个进行处理,当 redis 队列被 pop 空以后,则把锁删掉。
    但这种处理方式仍有一定的几率遇到一台服务进入读取服务判断锁状态的时候另一台服务器正好处理完最后一条队列信息把锁删掉,导致锁失效的情况。然几率较小,且未想到更好的处理方式,目前我的程序仍在这样处理。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.1 资料 ,最好的入门小册子,可以先于一切文档之前看,免费。 作者Antirez的博客,Antirez维护的R...
    JefferyLcm阅读 17,257评论 1 51
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,572评论 11 349
  • (二)命运由父不由己 姐弟情深泣别离 自京城的诏令传开后,各官员家都活了心思,天下为人父母的分两类,一类是为子女尽...
    爱新觉罗米阅读 3,712评论 0 3
  • 我上初中的那会正好是中国网络游戏蓬勃发展的时期。那时候传奇、奇迹、征途、梦幻西游等多款大型网络游戏红遍中华大地,深...
    蓝桥飞阅读 6,215评论 4 19
  • 《回答》 ——北岛 卑鄙是卑鄙者的通行证 高尚是高尚者的墓志铭 看吧,在那镀金的天空中 飘满了死者弯曲打倒影 冰川...
    Maltose丷阅读 1,432评论 0 0

友情链接更多精彩内容