异步不是把问题藏起来
后台任务可以削峰、解耦、缩短请求耗时,但它也会引入新的复杂度:任务丢失、重复执行、部分失败和状态不一致。
设计异步系统时,第一件事是承认失败一定会发生。
幂等是基础
重试机制一定可能导致重复执行。任务处理函数必须能安全地被执行多次。
重试要有节奏
不要无限快速重试。指数退避、最大次数和死信队列是常见组合,可以避免故障时把依赖服务打得更糟。
可观测性不能省
任务状态、失败原因、重试次数和处理耗时都应该可查看。否则后台任务会变成一个很难排查的黑盒。
小结
可靠的后台任务不只是队列本身,而是一整套围绕失败设计的机制。