如果执行定时任务的接口加一个幂等功能,可以简化定时任务触发模块的设计:
1. 每个定时任务执行都需要从“令牌桶”中获得一个对应的令牌后才能执行。
2. 1个令牌只能使用一次。
3. 定时任务触发时,保证同一次任务获得同一个令牌,这样就不用担心集群模式下超发请求,代替主备模式。
4. 主备模式下可能出现主备服务各发送一次请求(网络抖动、服务器时间不同步等)
如果执行定时任务的接口不能保证幂等性,需要考虑以下问题:
1. 同一时间段接收到多次执行请求(网络、触发程序发起重试等)。
2. 主备都宕机了。
3. 主备切换时可能导致的时差。
展开