猿问

調用rpc失敗了如何處理

一个注册场景,操作1,用户注册时在子平台生成帐号,操作2,调用rpc服务,在总平台上生成帐号(1和2是两个不同的数据库)。问题是如果调用rpc失败了(请求超时,或rpc返回错误等情况),但此时操作1已经执行,这时该如何处理

慕神8447489
浏览 1015回答 3
3回答

fanfanfan5631

某业务方法:    本地dao操作;    方法1; // rpc调用    try {            方法2; // rpc操作    } catch (业务错误){         方法1的冲正方法;    }     try {            本地dao操作;         方法3; // rpc操作    } catch (业务错误){         方法1的冲正方法;         方法2的冲正方法;    }        封装返回报文(errorCode跟errorMsg)此处的思路主要是:    调用完rpc服务之后,如果后续操作报错,则调用rpc服务的"回滚"服务,即冲正方法。例如转账服务 和 转账冲正服务。

斯蒂芬大帝

一般主要靠两点保证数据一致性:1.事务控制,如这里操作1执行完以后不提交事务,执行操作2等操作2返回正常请求了,然后提交操作1的事务2.补偿机制,如这里的业务,可以通过保存请求信息和状态,然后后续通过定时任务等操作来扫描是否有总库和本地库会员不一致的情况,有的话,进行业务处理

千巷猫影

超时和返回错误是需要分开处理的返回错误:一般提示用户自己重试,当然1操作也需要回滚超时: 提示用户成功, 通过消息的方式确认2是否成功,不成功进行重试
随时随地看视频慕课网APP
我要回答