要求1. 任务表有一条任务数据2. 每个微服务只能执行一次3. 重启的微服务就不要执行超期的任务了考虑1. 创建一张表2. 每个微服务有1min执行一次的定时任务3. 微服务执行完成后1min后会再次查询到这个任务怎么保证不能重复执行4. 方法添加执行日志那么怎么标识一个微服务IP进程端口5. 如果新加了一个实例那么这个服务是不是需要执行所有任务 按照上面是会执行的但实际情况是不需要执行。那么怎么保证新加重新创建pod后不能重复执行呢6. 方法添加超时时间比如添加命令后3min就认为这条命令超时不在重复执行7. 特征点唯一标识一个微服务 IP进程端口重启后是否执行一定时间范围内是需要重复执行的 一定时间内新建的实例 是否需要执行超时不在执行不靠谱点1. 唯一标识一个微服务靠谱吗这个IP可能重复不 重启和发版是否会导致IP和进程号的变动2. IP进程号标识微服务 依赖了环境信息了这就造成了风险方案不在标记微服务的唯一用“轮询周期 * 2 任务超时时间”规则 微服务内部缓冲已经执行过任务 解决查重问题1. 每个实例都有一个公用的DB2. 每个微服务实例都有2min为周期的定时任务任务之间不互斥3. 每个任务在DB同一张表中查询3min内的任务4. 在每个服务实例中缓存过去5min执行的任务ID5. 如果查询的任务已经记录执行过就不在执行否则则执行方案分析1. 在3min内已执行的微服务重启或者重新发版那么就会重新执行这相当于空执行可以接受2. 3min 内需要执行的任务ID需要全部缓存否则可能导致重复执行。第一不会有那么多“运维任务”第二使用微服务轮询2min的特征可以过滤很大一部分任务。