Modified by D 的博客

微服务间调用遇坑记

公司目前已经把以前后端的服务统一由运营管理部开发维护改为运营管理部将用户、支付、订单等业务拆成单独的的微服务,各业务部门根据自身业务逻辑调用不同的服务,实现自身的业务需求的服务。

我们业务部门之前产品一直是面向国外用户,最近要将产品推回国内,国内支付方式不同国外,国内都是微信、支付宝扫码支付,所以要实现新一套的授权服务逻辑。

在调用运管的支付接口后,我们部门的授权服务提供一个回调接口,用户支付成功后,支付中心服务会回调我们的接口。

讲完需求,在测试环境一直正常。在放到生产环境后测试,有的手机能正常回调,有的用微信可以回调、支付宝不可以,一会微信又不可以、支付可以。各种验证,调参数一直找不到失败规则,因为运营的服务是 PHP,我们部门的服务是基本 ASP.NET Core 2.1 的,然后用各种语言写脚本提交到回调接口,接口也是正常的,支付中心的日志也记录有了回调的请求参数。因为公司以前业务都在国外,服务器也放在国外机房,现在新的业务服务器放在国内,然后让运维同事登录生产服务 ping ,直接调脚本提交,也是正常的,但正式跑流程就有的通,有的不通。

最后打详细日志,发现之前请求的超时设为了 5S,之前其它业务的服务器都放在国外同一机房,所以这样没有问题,之前的回调服务设置也很松散,只提交过去,不等也不管对方的返回结果,所以现在从国外到国内的请求有时候会超过 5S 就失败了。把超时改长,果然没有问题。

后期版本在回调服务还要跟业务接口增加判断结果,如果没返回指定参数,就加队列服务进行重试回调,以提高业务的可靠性


发表评论

评论列表,共 0 条评论

    暂无评论