分布式多应用实现单一定时任务
2018-12-02 06:14:29来源:博客园 阅读 ()
目标:应用可以部署在多台服务器上,但是定时任务只能由其中一台机器触发。
方案:
1. 应用部署前修改代码或者修改配置,确定某台服务器的某个应用可以启用定时任务功能,其它禁用此功能。
优点:性能好
缺点:部署麻烦易出错、应用一旦崩溃任务即停止。
2.使用分布式锁,确保同一时刻,不会出现重复操作,然后记录任务是否执行过,执行过的不执行。
优点:多应用分布式部署,只要有一个应用可用即可用
缺点:某些场景不适用(是否执行过很难判断,比如每隔一分钟执行一次的任务,因为不同服务器和数据库服务器的时间很难确保一致,每隔1天的任务,就推荐这样子做)
3.使用数据库乐观锁,程序中存储最新执行版本号$ver,数据库记录任务日志task_log:任务id、最新执行时间、执行版本号等,update task_log set time=now(),version=version+1 where version=$ver 成功,方可执行任务,然后存储最新版本号。update失败的获取最新版本号也存储下来。下次多应用并发或不并发均可仅执行一次任务。
优点:分布式部署高可用,使用数据库乐观锁性能好,解决了方案2的弊端。
缺点:暂时没发现
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- DES/3DES/AES 三种对称加密算法实现 2020-06-11
- 聊聊微服务架构及分布式事务解决方案! 2020-06-10
- SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 后 2020-06-10
- Spring Boot 实现定时任务的 4 种方式 2020-06-10
- 作为一个面试官,我想问问你Redis分布式锁怎么搞? 2020-06-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash