在发生异常情况下确保"transactional procedures"的正确工作流程是什么



在web应用程序编程中,特别是Django,有时我们有一组操作要么全部成功,要么全部失败(为了确保某种可预测的状态)。显然,当我们处理数据库时,我们可以使用事务。

但是在某些情况下,这些(全部或没有)约束需要在数据库上下文之外

(如。如果付款成功,我们必须发送产品激活码,否则有客户投诉等风险)

但是让我们假设在某个决定性的日子里,send_code()函数由于一些临时网络错误(持续1个多小时)而一次又一次地失败

我是否应该记录错误,并手动修复问题,例如手动发送邮件

我是否应该设置某种工作队列,当事情失败时,它们只是回到队列的末端以供将来重试?

如果日志/排队系统也失败了怎么办?(我现在是不是太担心了?)

我们公司使用微服务,每个月至少有一次,我们的一个微服务宕机一段时间。我们有一个Transaction模型用于支付过程和状态,在我们向用户发送产品之前的每一步。如果出现问题或其中一个连接的微服务关闭,我们将其标记为status=error并保存到数据库。然后我们使用cron job来查找和结束这些进程。一开始你需要尝试一些东西,如果不符合你的需要,就尝试其他东西。

相关内容

最新更新