业务流程
根据政策要求 ,P2P业务必须让银行存管资金,用户的资金在银行存管系统的账户中,而不在P2P平台中,因
此用户要在银行存管系统开户。
用户向用户中心提交开户资料,用户中心生成开户请求号并重定向至银行存管系统开户页面。用户设置存管
密码并确认开户后,银行存管立即返回“请求已受理’。在某一时刻,银行存管系统处理完该开户请求后,将调用回调地址通知处理结果,若通知失败,则按一定策略重试通知。同时,银行存管系统应提供开户结果查询的接口,供用户中心校对结果。
解决方案分析
P2P平台的用户中心与银行存管系统之间属于跨系统交互,银行存管系统属于外部系统,用户中心无法干预银
行存管系统,所以用户中心只能在收到银行存管系统的业务处理结果通知后积极处理,开户后的使用情况完全由用户中心来控制。
根据上述需求进行解决方案分析:
1、采用Seata实现2PC
需要侵入银行存管系统的数据库,由于它的外部系统,所以不适用。
2、采用Hmily实现TCC
TCC侵入性更强,所以不适用。
3、基于MQ的可靠消息一致性
如果让银行存管系统监听MQ则不合适,因为它的外部系统。
如果银行存管系统将消息发给MQ,用户中心监听MQ是可以的,但是由于相对银行存管系统来说用户中心属于外部系统,银行存管理系统是不会让外部系统直接监听自己的MQ的,基于MQ的通信协议也不方便外部系统间的交互,所以本方案不合适。
4、最大努力通知方案
银行存管系统内部使用MQ ,银行存管系统处理完业务后将处理结果发给MQ,由银行存管的通知程序专门发送通知,并且采用互联网协议通知给第三方系统(用户中心)。
下图中发起通知即银行存管系统: