是否有任何与处理重要财务操作相关的“设计模式”,以便本地数据库不会因为某些错误而变得不同步?
例子:
在本地数据库中创建金融交易记录,然后向远程支付 API 端点发送请求以向客户收费。伪代码:
record = TransactionRecord.create(timestamp=DateTime.now, amount=billed_amount, status=Processing)
response = Request.post(url=remote_url, data=record.post_data)
if response.ok:
record.mark_as_ok()
else:
record.mark_failed()
现在,即使我处理了可以由远程支付服务返回的错误,许多其他不好的事情仍然可能发生:数据库服务器可能会关闭,网络连接可能会关闭等,在任意时间点。
在上面的代码中,数据库服务器可能在创建交易记录后立即变得不可访问,因此即使金融交易本身已由远程服务成功执行,也可能无法将该记录标记为正常。换句话说:向客户收费,但我们没有预订..
这可以通过多种方式解决 - 通过定期与远程服务同步,通过调查TransactionReturn
正在处理但早于例如 10 分钟或一小时的 -s。
但我的问题是,是否有一些成熟的模式来处理这种情况(涉及金钱,所以一切都应该“一直”正常工作)?
PS。我不确定我应该为这个问题使用什么标签,请随时重新标记它。