现在在负责公司的一个支付系统,当然这个系统比较老了,我也是接手的。最近出现了一个故障:即上游系统错误发送了两笔放款请求,两笔请求的订单号都不同。造成了用户银行卡重复性放款。
现在希望在尽可能防止重复扣款和放款的基础上,尽可能的不要降低太多的并发性能的基础上,防止重复扣款放款为重点。
目前我想到的方案是:
放款:
- 首先业务出具业务规则,针对相同的人和卡之类的只能制定业务规则,比如 1 个人 1 天只能放多少钱之类的。
- 针对相同的人或卡,串行执行请求。
扣款:
- 和放款相同,制定重复规则。
- 针对相同的人或卡,穿串行执行请求。(但是似乎扣款有人提到不能这么做,不太明白为什么)
除了上面的以外,大家有什么方案或者说最佳实践吗?谢谢大家的帮忙~