首页 > 编程知识 正文

分布式的任务结果汇总,分布式系统定时任务

时间:2023-05-03 15:09:33 阅读:13059 作者:593

是否保证单一案例,实际上要看你的具体业务需求。 如果重复执行不影响业务逻辑,实际上业务上是可以接受的,但从技术上分析,重复执行定时任务一定会消耗和损失计算机资源。 如果必须保证单一案例,有什么方案?

1、分散锁定使用分散锁定的方案很常见。 一般也使用redis锁和zk锁。 个人推荐zk摇滚。 执行任务的时间一般太长,在某些情况下,由于服务器自身的原因(或繁忙或空闲),redis的有效期限很难被评估,因此无疑会有重复任务的可能性变高。

此外,由于每个服务器时间的机器时间不统一,因此如果执行定时任务的时间较短(例如每分钟执行一次),则很难通过锁定保证100%。

2、分布式调度框架3358www.Sina.com/、elastic-job等分布式任务调度框架。 如果项目没有集成,引入分布式调度框架将增加系统的复杂性和运维的复杂性,但确实是一种直接有效的方案。 因为不需要自己想办法实现,而且功能很强。

3 )修改配置文件以修改属性,确保其中一个服务器有效,其他服务不可用。 也就是说,固定一台服务来运行任务。 虽然简单粗暴,但是跑那个任务的服务结束后,你就会成为game over。 那个分散的意思是什么?

4 )由于数据库锁定分布式服务通常共享一个数据库,因此通过更新数据库表中一行的数据状态来确保数据库锁定的高可用性。 这样就很难发生错误,也不需要考虑边界和临界区域。 实现也是最简单的。 虽然比分散锁定慢,但是定时任务本身不追求性能。

5,ip 从代码中获取获取当前实例的IP,按照一定的算法规则转换为Long型。

从注册中心根据实例名称获取ip的list,例如192.168.2.10、192.168.2.11、192.168.2.12也分别转换为相应的长整型。

比较第一步获取的Long和第二步获取的Long的List,如果判断为它是集合中最小的,则在该实例上运行task,否则返回。

这确保始终只有一个实例可以执行定时任务。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。