【◐系统架构】解决集群环境下定时任务多次执行的办法有哪些?
服务器采用了负载均衡,有两台服务器,部署的代码一样,所以里面的定时任务在某一时间会被同时执行,这就导致了很多其他意外的发生,想要解决的问题基本就三个:单点执行,故障转移,服务状态。
默认固定执行定时任务的服务
在某一台服务上面执行定时任务,其他服务关闭定时任务,或者在定时任务前加判断指定ip,缺点指定的服务出现问题则定时任务无法在运行。
利用MySQL共享锁事务管理机制运行任务
创建定时任务表,name为不同定时任务的指定名称,execute为是否执行中:1执行 0未执行。
由于存在表锁和行锁,因此同一时刻只能有一个事务操作,可以保证只执行一次。
此处更新操作只会成功一次,执行完重新设置excute为0;
利用redis
执行定时任务前先查询 redis 是否有改任务的值,没有就自己 执行,并插入新的 key-value。有的话则不执行。
使用分布式任务调度框架
如Quartz、Xxl-job、Elastic-job等等。
分类:
面面俱到
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 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形式)