系统概图

image

各域职能划分

image

系统时序图

image

image

queryDeliveryGlobalService

根据用户、地址、商品信息计算全局的物流解决方案,包括对应的自提点信息、集运仓信息以及运费报价

render

针对用户选中的物流解决方案,做拆单处理使物流方式最优化(计算每个商品支持的物流服务,按照物流的维度对一笔主订单进行拆单)、订单失效(对于不支持的商品置灰为不可售)、获取运送方式和运费(在订单拆单后,按主单维度返回对应的运费、时效、运送方式等信息)

confirmDeliveryOrders

订单提交阶段,将物流信息提交(选择的物流解决方案、物流服务、物流费用) 在渲染时将前面几个接口返回的一些数据透传下去进行提交与渲染的校验(物流方式、费用、物流拆单的结果等)

SDP vs ADP vs ASDP

系统背景

最开始的系统adp&sdp是一个系统,叫delivery,后来由于delivery在某一年双11抖动了一下,造成了比较大的影响,所以被拆成了两个系统,一个叫cdc(管服务),一个叫adp(管运费),由两个团队分别维护。后来cdc演进成了sdp。今年由于组织架构变动,adp交给了sdp团队。他们又打算进行一些重构,重构的结果就是asdp。目前asdp只有一个功能,就是把split&ablity接口融合成了render接口。

ASDP

是一个二方包,修改调用链路,走sdp新的接口(queryLogisticsSolution,合并了split与ablity接口) 1.ASDP-ADAPTER核心逻辑:com.alibaba.asdp.adapter.AsdpTradeServiceAdapter#render。可配置走客户端还是走远程服务。 2.ASDP远程HSF服务:com.alibaba.asdp.api.trade.AsdpTradeService#render

ADP

在buy2的系统交互链路里面,ADP提供了两种能力:一种是通过本地客户端提供服务,ADP的相关逻辑会直接在客户端里面执行完成,这个时候buy2将直接通过ADP-CLIENT直接调用SDP的HSF服务;第二种是直接对buy2直接提供HSF服务,相关逻辑全部通过远程调用实现,这个时候buy2直接调用ADP的HSF服务。在日常情况下会有10%的流量直接走ADP的远程服务,而在大促的时候,会全量走ADP的客户端服务。 1.ADP-CLIENT核心逻辑:com.alibaba.delivery.client.service.client.DeliveryTradeServiceClient#queryGlobalService,可配置走客户端还是走远程服务。 2.ADP远程HSF服务:com.alibaba.delivery.client.service.DeliveryTradeService#queryGlobalService

SDP

核心接口:com.cainiao.cdc.common.service.CdcTradeService