Open
Description
feature相关背景与描述
当producer出现宕机或者因为选主间隔导致job缺失时,需要有补算机制;当job计算错误时,则需要重算。
解决方案描述
重算方案:
- producer每次发送一个job时都往task表里新增一条job信息,status为wait
- worker do policy时如果发生了error,更新job信息中的status字段为fail
- producer定时load status为fail的job,重新发送至消息队列,并更新status为wait,retryTime +1
- 如果worker do policy success,将job信息删除即可
- 重试2次依然为fail的job保留在表中,提供命令行触发重算机制,命令行重算时,producer只取retry time >=2且状态为fail的job
补算机制:
- producer在每次send job之后更新对应资源和时间维度的job最新时间
- producer启动时,另外启动一个补算go routine,从db里获取记录,计算是否需要补算,是的话生成缺失的job
- 为避免补算job过多,只自动补算24小时内数据
- 提供命令行补算
其他可行性方案分析
其他补充信息