【◐系统架构】解决集群环境下定时任务多次执行的办法有哪些?

服务器采用了负载均衡,有两台服务器,部署的代码一样,所以里面的定时任务在某一时间会被同时执行,这就导致了很多其他意外的发生,想要解决的问题基本就三个:单点执行,故障转移,服务状态。

默认固定执行定时任务的服务

在某一台服务上面执行定时任务,其他服务关闭定时任务,或者在定时任务前加判断指定ip,缺点指定的服务出现问题则定时任务无法在运行。

利用MySQL共享锁事务管理机制运行任务

创建定时任务表,name为不同定时任务的指定名称,execute为是否执行中:1执行 0未执行。

由于存在表锁和行锁,因此同一时刻只能有一个事务操作,可以保证只执行一次。

此处更新操作只会成功一次,执行完重新设置excute为0;

利用redis

执行定时任务前先查询 redis 是否有改任务的值,没有就自己 执行,并插入新的 key-value。有的话则不执行。

使用分布式任务调度框架

如Quartz、Xxl-job、Elastic-job等等。

 

posted @   残城碎梦  阅读(283)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
历史上的今天:
2022-03-27 Dubbo 2.7 整合SpringBoot
2022-03-27 Dubbo 2.7 整合Spring(注解形式)
2022-03-27 Dubbo 2.7 整合Spring(xml形式)
点击右上角即可分享
微信分享提示