作者简介:
司孝波,担任苏宁易购核心交易部门技术总监,资深架构师,拥有多年电子商务、企业应用领域开发及架构经验,负责苏宁易购库存、价格、寻源、会员等核心交易系统建设及大促稳定性保障工作,主导了苏宁前台、中台、后台的架构分离,打造了高并发、高性能、高可用的电商交易系统,对电商分布式系统的建设具有丰富的实践经验。
责编:钱曙光(qianshg@youkuaiyun.com)
本文为《程序员》原创文章,未经允许不得转载,更多精彩文章请订阅《程序员》
前言
2017双11大促刚刚过去,苏宁易购交易系统的请求量和订单量在双11当日呈现指数级的增长,更是实现了7秒破亿的最快破亿记录,苏宁易购交易系统在大促期间平稳运行,完美度过双11。作为苏宁易购交易系统负责人,我给大家介绍一下交易核心系统之一,库存系统的架构演进与实践,并介绍库存系统是如何筹备和应对双11的流量洪峰的。本文推荐架构师、技术经理、开发工程师、技术总监等群体阅读,希望能够让大家受益。
库存业务介绍及面临的挑战
库存系统定位及核心业务场景分析
首先介绍一下库存系统的定位,它主要为企业级的经营性可用商品库存获取应用,与平台商品目录紧密关联,定位为苏宁核心平台之一。平台级商品库存支持线上、线下销售渠道和营销活动对经营性可用商品库存的查询,支持平台商品库存锁定、解锁、增加、减少等库存核心服务,并为平台商户提供服务支撑。
库存作为电商交易的核心系统之一,它贯穿苏宁的整个业务价值链条,不论从采购线的采购、交货、调拨、退场、入库过账、实物盘点等环节,还是销售线的浏览、下单、发货、出库过账等环节,再到客服支撑、经营分析报表、预测补货、多平台销售支撑等大数据应用,都和库存系统紧密关联。
库存从业务模式上分为自营库存和C店库存。自营库存即苏宁自采自销的库存,C店库存即通过开放平台入驻的平台商户所销售的库存。
库存中心聚焦的是销售库存,即支撑苏宁销售和交易相关的所有库存服务。而苏宁的实物库存是在苏宁的物流平台进行管理的。两套库存的定位不一样,但两套库存之间具有一定的关联,且通过定期严谨的库存对账机制来确保两套库存数据的一致。如图1.
库存业务架构
库存系统从业务架构上分为库存交易、库存管理、异常管理、运维管理四大组成部分。
库存交易部分分为销售锁定、销售解锁、交货锁定、交货解锁、数量查询、库存状态查询、状态下传、数量下传、活动预锁、活动预解锁、活动库存查询、活动管理等功能模块。库存管理部分分为采购、调拨、退厂、移库、盘点、对账、状态计算、销售过账、库存同步、多平台分货等功能模块。库存状态是指定义库存有货、无货的一种状态标识,通过实现库存状态,可大大减少外围系统对库存数量查询接口的调用,比如商品详情页只关注商品有无货,通过库存状态即可支持。业务架构如图2。
库存面临的挑战
库存系统主要面临以下几个挑战:
- 热点争抢
针对同一个商品,比如秒杀、团购、打折促销等活动商品,如何支撑高并发库存扣减服务。 - 周转率
如何提升库存周转率,最大化利用企业资金,做到销售最大化。 - 避免超卖
避免超卖是库存系统架构设计和系统实施的底线原则。 - 系统扩展性
如何建设出可无限扩展的库存架构,在系统扩展过程中,各部署节点都需要具备无限扩展能力,而常见的瓶颈如数据库的连接数、队列的连接数等。
库存系统的架构演进
苏宁库存系统的架构演进主要划分为4个阶段:
- 阶段1: 2005-2012,线下连锁时代,电商初期架构,当时系统采用WCS/POS+SAP构成,库存属于SAP系统中的一个业务模块;
- 阶段2: 2012-2013,互联网O2O电