定时任务的执行以及分布式锁

定时任务的执行

1. 为什么需要控制定时任务的执行?

不控制的后果:

  1. 浪费资源,会出现多台(比如1000台)服务器同时开始执行定时任务的情形
  2. 脏数据,比如出现重复插入的情况

2. 要控制定时任务在同一时间只能有一个服务器执行

怎么做?

  1. 分离定时任务程序和主程序,只在 1 个服务器运行定时任务。成本太大。
  2. 写死配置,每个服务器都执行定时任务,但是只有 ip 符合配置的服务器才真实执行业务逻辑,其他的直接返回。成本最低;但是现在服务部署不一定是单机部署了,可能进行了容器化部署,是动态IP。
  3. 动态配置,配置是可以轻松的、很方便地更新的(代码无需重启),但是只有 ip 符合配置的服务器才真实执行业务逻辑。问题:服务器多了、IP 不可控还是很麻烦,还是要人工修改。
    • 数据库
    • Redis
    • 配置中心(Nacos、Apollo、Spring Cloud Config)
  4. 分布式锁,只有抢到锁的服务器才能执行业务逻辑。坏处:增加成本;好处:不用手动配置,多少个服务器都一样。
    单机就会存在单点故障。

分布式锁

参考:https://www.cnblogs.com/techgy/p/17538863.html

posted @ 2023-07-09 15:37  AI未来10Y  阅读(93)  评论(0编辑  收藏  举报