一、总体设计

在中台架构中,我们往往把一个系统划分为基础能力层和产品服务层。其中,基础能力层聚焦于稳定收敛的业务模型和基础服务本身,不会随着业务和前台产品的调整发生变化,平台产品层则专注于通过流程编排类的技术手段,将基础能力构建成业务的解决方案,解决共性和个性化的问题。

基于上面所说的中台架构思想,我们把物流系统划分位物流基础能力层和物流产品服务层:

本文将从宏观上来分别介绍物流基础能力和物流产品服务,至于微观上对各个系统的设计则会在后续系列文章中介绍。

二、物流产品服务层

整个电商物流体系包含三个主要流程:用户端流程、商家端流程和公共流程。这三个流程的交互如下图所示

这三个流程中可以进一步划分出不同的业务执行节点,针对这些业务节点,我们在物流产品服务层定义出业务接口,这些业务接口可以通过扩展点支撑不同的业务特性,同时,这些业务接口组合起来又形成了一套物流业务流程。

上面的说法比较抽象,下面会通过对每个业务节点的介绍,进一步说明这种设计思路。

1、物流服务

物流服务,其实就是一个物流解决方案,比如快递发货、仓配发货、城市配送等等。对于每一个物流服务,对应都有不同的业务场景。比如普通电商直接使用快递发货就可以了,家电等大件商品就可能要仓配发货,而外卖则需要城市配送。我们把物流服务定义成一个业务接口,前端业务通过不同的业务场景,传入不同的参数,调用这个接口会给出一个特定的物流服务,这样一来,我们把物流服务就收敛到了一个业务接口。同时,不同的物流服务的运费也是不一样的,即使是同一种物流服务,在不同的送货地址下,也会出现不一样的运费,这里我们也会抽象出一个运费计算的业务接口。

2、物流地址管理

在物流地址这块,前端会有不同的地址管理需求,比如用户手填的地址,根据经纬度保存的地址,根据IP保存的地址。我们把这些地址需求收敛到一套地址管理的业务接口中,前端只需要传入不同的参数,就可以很方便的管理地址。

3、下单

下单这个业务节点主要提供物流订单创建的逻辑。不同场景的物流订单创建通过这个接口进行收敛。举个例子:用户在我们的电商平台上买完东西支付后,电商系统会发异步消息,物流系统接收后会创建一个普通的物流订单,如果随着业务发展,公司需要对接一些分销商的ERP接口,让他们直接通过ERP同步创建物流订单,这时候就可以复用这个接口,只不过是入参和业务类型变了,内部的创建流程会做一些扩展性调整。

4、发货

发货这个节点和上面其他节点一样,首先,它是一个正常物流流程中必不可少的环节,其次,它的业务玩法很多,除了最简单的直接发货外,还会存在拆单发货、延迟发货、虚拟商品发货等等,因此,我们会抽象出一个通用的业务接口,通过入参的不同和流程的扩展,去支撑不同的发货。

5、确认发货

从发货到确认发货,中间包含不同的业务场景,比如快递发货后,商家需要等待快递员上门取件后,才能确认发货,对于仓配发货,必须等仓库确认收到指令并回传成功后才能确认发货,而城市配送发货,必须等外卖小哥取件后才能确认发货。因此,确认发货也需要抽象出一个业务接口,以便支撑不同的业务场景。

6、签收

签收节点目前的业务场景并不多,但是它是一个必要的业务节点,因此也抽象出一个业务接口,以便支撑未来的扩展性。

7、物流详情

物流详情目前仅仅是查询,业务场景并不多,但是它是一个必要的业务节点,因此也抽象出一个业务接口,以便支撑未来的扩展性。

三、物流基础能力层

基础能力层聚焦于稳定收敛的业务模型和基础服务本身,它为产品服务层提供稳定的原子接口。物流产品服务层的业务节点,映射到物流基础能力层,就变成了4大基础能力:物流订单能力,物流地址能力,物流详情能力,物流服务能力。

1、物流订单能力

物流订单能力定义了物流订单的模型以及物流订单状态机,它会提供创建、修改、拆单、取消、关闭等原子接口,同时负责对订单数据的存储和检索。物流订单能力支撑了下单、发货、确认收货、签收这些业务接口

2、物流地址能力

物流地址能力包含了四级地址库、用户地址、商家地址的数据存储、检索,这些数据通过上层业务接口,为用户提供了丰富的物流地址信息。

3、物流详情能力

物流详情能力定义了物流详情的数据模型,并和不同的物流商进行对接,将不同物流商的数据转换成我们自己的标准数据,这些数据会和平台业务数据(订单号、用户ID等)进行关联,对外提供丰富的物流详情查询接口。

4、物流服务能力

物流服务能力定义了物流服务模型、物流公司模型、运费模板模型,为物流产品服务层的物流服务业务接口以及运费计算提供了支持。

四、总结

本文从宏观上介绍了基于中台思想的物流系统设计,整个中台架构其实就是把不变的数据模型和经常变的业务模型进行隔离,通过业务流程编排的方式将变化的业务映射到标准的底层模型中。当然,整个物流系统不仅仅包含这些宏观设计,还包含了非常多的微观设计,比如业务接口的设计、流程编排设计、高并发高可用设计、缓存设计等等,在后续系列文章的中,我们将从微观层面逐一介绍这些设计。

联系邮箱:public@space-explore.com

(未经同意,请勿转载)