项目位置/技术/需求
在跨服务业务协同方面,我们将订单、库存、支付、消息和对账等模块设计为服务请求者,使其按照业务流程调用相关服务,满足交易链路清晰和服务协作可控的要求
解决的问题
线上交易流程涉及多个业务环节,如果全部写在一个服务中,会导致服务职责过重;如果各服务之间随意相互调用,又会造成调用关系混乱,异常定位困难
解决的方法
为解决这一问题,我们明确了服务请求者的调用边界:交易主流程中必须立即返回结果的环节采用同步服务调用,支付回调、消息通知、超时关闭和对账处理等后续工作通过 RocketMQ、xxl-job 等机制异步衔接,并保留接口日志用于问题追踪
具体的实现
为解决这一问题,我们明确了服务请求者的调用边界:交易主流程中必须立即返回结果的环节采用同步服务调用,支付回调、消息通知、超时关闭和对账处理等后续工作通过 RocketMQ、xxl-job 等机制异步衔接,并保留接口日志用于问题追踪
例子
以用户下单并完成支付为例,订单创建时作为服务请求者调用商品和库存能力完成必要校验,支付结果返回后再驱动订单状态变更,并通知消息和对账相关模块继续处理
效果
通过这种服务请求者设计,各服务既能围绕统一业务流程协作,又能保持相对独立,降低了交易链路的耦合度,提高了系统对业务高峰和异常情况的适应能力