一张京东618订单的奇妙之旅

开发 后端
适逢“买买买”的京东618大促,大家一定对这幅图相当熟悉。

适逢“买买买”的京东618大促,大家一定对这幅图相当熟悉。

其实这张图片中展示的只是从提交订单,到收到商品全过程上百个片段中的小小缩影。今天,京技院在618指挥中心,带你完整走一通从网上提交订单到收到包裹的奇妙之旅。Come on,Follow me!毫秒级完成的个性化推荐与搜索

你是否已发现,不同的用户打开京东主页所看到的商品是不完全一样的,这是京东凭借强大的大数据实现的个性化推荐。

后台系统通过分析上亿件商品的价格、评价等信息,再结合您所有的浏览记录、购买偏好等数据,综合分析出您可能需要的商品,并***时间在你的首页体现。

完全实现了针对你的个性化推荐,这所有的数据分析和商品筛选都在毫秒级时间内完成。当你输入商品的关键词,搜索系统首先会进行意图分析,同时,在线部分会调用用户画像系统获得您的个性化特征。

为了快速而准确的返回搜索结果,搜索背后依托的大数据平台,上千台服务器开始做排序特征挖掘、全量索引、实时价格库存更新等运算工作,最终通过结果页呈现。这一过程中大量的数据在服务器间流转,但所用时间仍然在毫秒级。提交订单后,生产订单前在京东,每次提交订单会要求控制在100ms以内完成。在如此快速的响应时间内,后台系统将经历非常复杂的业务逻辑:

- 用户身份检查

- 库存状态校验

- 库存预占

- 支付密码校验

- 京豆、余额、优惠券查询

- 生成订单号

- 更新购物车

- 保存订单

……

用户每一个提交订单的动作,对于京东系统来说,都是一条***的指令。完成订单提交这个动作的过程中,多达上百个系统正在准确而高速的运转着。

包括交易引擎会根据指令,安排订单流转的行程并通知订单中心(您可以在订单中心随时查看整个生产过程)、财务中心(需要准备多少钱)、仓储中心(由哪个库房生产等),保证您的订单有条不紊的进入后续的生产流程中,这个过程需要300毫秒。订单的履约生产过程

订单成功提交后即进入履约阶段,订单履约中心(OFC)专门提供订单生成后的履约工作,确保实物流转和订单信息的秒级精准同步。OFC将完成:过滤存在风险的订单、生产信息准备、生产计划的制定等工作,***把满足生产条件的订单传递到库房进行物流生产。

同时还肩负着将下游系统主数据、订单处理状态回传给订单中心、库存中心的任务,是客户订单业务最核心的后台支撑系统。

当订单生成后,还会有一系列动作,那就是做订单的拆分、时效计算、转移、预分拣、发票数据准备、面单数据准备等一系列步骤。因为在订单中的商品,比如电脑、图书、日常用品等,他们是存放在不同仓库里的。这就需要将一个大订单拆分成多个小订单进行生产,这就是订单拆分。系统会根据用户购买商品的种类、大小、有无现货、距离远近等,综合计算出一个***方案,依此对订单进行拆分。同时将下单时使用的优惠券、京豆、礼品卡等,合理的分摊在每个拆分后的新订单上,包括根据不同商品品类对应不同工商税务要求,发出电子发票的任务。

订单拆分完成后,OFC会调用订单时效模块,逻辑上会考虑生产时效、生产成本、库存、客户体验等多个因素,给出一个优化的方案。之后,OFC会调用青龙系统的预分拣模块,通过匹配用户填写收货地址和配送站点,并考虑生产能力和负载情况,分配***的配送站点。然后调用订单时效模块,修正订单可到达客户的时间;调用发票模块准备好发票数据;调用面单模块准备好面单数据。

订单一切准备工作就绪后,OFC下传模块会将符合生产条件(库存状态、时效211/311/411)的订单立刻下传到库房。订单状态变更为:

“您的订单已经进入***库准备出库”

“您的订单预计***日送达您手中”

这是京东配送的产品处理流程,第三方商家订单的处理流程相对简单,不需要判断是否满足生产条件,而是经过预分拣环节,确定京东是否可配送后,就下发到商家后台系统,由商家完成订单后续备货、发货流程。到了这里,我们的订单终于下传到库房。以上庞大复杂的链路是不是耗时很久呢?当然不!订单从下单到库房的时间已经从30分钟优化到5秒,为京东的1小时达、211、411等各种超快配送服务提供了保证。因此,以上的各个环节,用户的感受都是在提交订单的瞬间完成的。

时效系统(promise)根据发货仓库、配货中心、送货地址、地图、实时路况等数据,核算出***路线,并完成精准送达时间的计算。

而且,为了更快更好的把货物送到用户手里,今年京东还推出了移动仓库服务,通过实时定位和调度移动仓,同时还涉及到库存数量,根据覆盖地区范围和时效的多维度变化以及移动货车各项风险分析控制,实现更加快速的送达服务。一个包裹的实物旅程为了更好的服务于用户,京东在全国多地建造了目前国内规模***、技术***进的物流中心“亚洲一号”,库房实现了自动化分拣系统。在这里,库房生产拉开序幕。经过库房拣货组、复核组、打包组接力,订单库房生产结束。

订单状态变更为:

“您的订单已拣货完成”

“扫描员已经扫描”

“打包成功”

“拣货完成”

为了拣货效率,减少库房行走路径,通常会将多个订单同一商品合并拣货,再将所有的商品分摊到相关订单,这个过程叫“分货”。这个过程非常复杂,特别是存在一单一品和一单多品的订单。京东自创的“篮子”分拣设备和智能显示屏,能大大提高分货效率和准确性。接下来,将订单商品在复核台上扫描确认,进行商品打包操作。复核、打包操作完成也会回传状态给订单跟踪系统。到这里,库房内的生产操作基本完成了。

库房生产还有一项非常重要的工作是打印发票,主要分为离线发票和在线发票,离线发票是OFC将发票打印模板和发票数据信息提前推送给库房,在线发票是库房根据订单号获取开票模板,通过调用发票接口完成。发票类型有普通发票、增值税发票和电子发票,普通发票是财务部门通过税控机打印后回传,再交由青龙配送系统进行配送;增值税发票下单时会要求填写邮寄地址,同样也是通过青龙系统预分拣模块计算出配送中心;电子发票由用户自行下载打印。

打包完成的商品会被送往分拣中心,分拣中心将送往配送中心的所有订单准备就绪。订单状态变更为:

“您的订单在【***分拣中心】发拣完成”

“您的订单在【***分拣中心】发货完成,准备送往【***配送站】”

商品打包完成后,通过龙门架对接分拣机传送到分拣中心,通常分拣中心就在库房隔壁。分拣中心会对包裹进行收货、验货、分货、装车、发车,分拣中心同时将状态回传给订单跟踪系统。

订单经过几个小时的车程抵达配送中心,完成验货。晨光初晓,勤劳的配送小哥载上与您的承诺,开启崭新一天的旅程。尾声一张京东订单的故事讲完了,这里描述的系统仅仅是京东成千上万系统中的冰山一角。一张张的订单背后除了京东强悍的物流配送系统,更体现出了京东技术体系和大数据的强劲实力与大智慧。本文作者:京东架构师委员会&办公室Jingo组

全文刊登在《京东架构师》第六期

本文为原创作品,为尊重作者的劳动成果,请转发务必注明出处及作者。

责任编辑:王雪燕
相关推荐

2015-07-17 09:41:30

京东产品技术支持

2016-06-15 14:38:52

京东

2015-05-26 16:45:43

京东

2016-06-13 15:48:33

京东

2021-02-07 09:01:10

Java并发编程

2019-09-11 10:12:12

华为

2021-01-05 14:39:30

人工智能机器人购物

2019-07-16 12:54:37

IoT5G人工智能

2016-06-21 16:25:26

京东京东云云计算

2023-12-08 14:18:11

2015-03-10 10:15:27

AppleWatch开发Swift

2017-06-05 18:27:41

黑科技618京东

2013-07-04 10:50:33

腾讯移动互联网大数据

2012-07-19 09:25:01

JavaScript

2015-09-14 09:07:15

Java多线程

2015-07-29 15:55:53

Windows 10桌面

2012-07-20 17:24:51

HTML5

2014-07-03 09:43:32

Android L评测

2019-03-18 15:00:48

SQLJoin用法数据库

2020-06-15 08:54:46

架构图 EA业务建模
点赞
收藏

51CTO技术栈公众号