Vivo全球商城:商品系统架构的设计与实践

系统架构设计


浏览:942 次

1、 前言

随着用户数量的快速增长,官方Vivo商城v1.0的单体架构逐渐暴露出其弊端:模块变得更加臃肿,开发效率低下,性能瓶颈,系统维护困难。

v2.0架构升级始于2017年,基于业务模块的垂直系统物理拆分。业务线被拆分,以履行各自的职责,提供服务能力,并共同支持主站业务。

商品模块是整个环节的核心,模块的增加严重影响系统的性能,因此面向服务的转型势在必行。

本文将介绍Vivo商城商品系统建设中遇到的问题和解决方案,并分享架构设计的经验。

2、 商品体系演变

商品模块与商城分离,独立于商品系统,并逐步向底层发展,为商城、搜索、会员、营销等提供基本的标准化服务。

商品系统架构如下:

形象

在早期,商品系统相当混乱,包括许多业务模块,如商品活动业务、秒杀业务和库存管理。随着业务的不断发展,商品系统承载了更多的业务,不利于系统的扩展和维护。

因此,人们认为,商品业务将作为最低和最基本的业务系统逐渐下沉,并为许多呼叫者提供高性能服务。接下来,我们将介绍商品系统的升级历史。

2.1商品活动和礼品剥离

随着商品活动的不断增加,各种玩法以及与活动相关的附加属性的相应增加,这些与商品信息无关,而是与用户营销有关,而用户营销不应与核心商品业务相结合,因此它们被整合到商城促销系统中。

礼物不仅仅是手机和配件,还有积分和会员。它们不适合商品系统,不属于商品模块,因此将同时合并到商城促销系统中。

2.2保密独立

众所周知,Seckill的特点是:

时间限制:时间范围很短,超过设定时间将结束

数量有限:货物数量很少,远低于实际库存

流量大:价格低,可以吸引大量用户

基于上述特征,完成秒杀活动并不容易。由于系统资源共享,大流量的突然冲击将导致商品系统中的其他业务拒绝服务,这将造成阻塞核心交易链路的风险。因此,它独立于秒杀系统,并单独提供服务。

2.3委托制度的建立

我们商场的主要销售类别仍然是手机和手机配件。商品种类相对较少。为了解决非手机商品种类不多的问题,运营部门考虑与知名电子商务公司合作,并希望引入更多种类的商品。

为了便于对原有系统的后续扩展和非侵入性,我们已考虑开发一个单独的子系统来承担托运业务。最后,我们希望建立一个完整的平台,随后让其他电子商务公司通过提供开放的API来主动访问我们的业务。

2.4库存剥离

库存管理的痛点:

因为我们的库存属于商品维度,并且只有一个字段标识数量,所以我们每次编辑商品时都需要调整商品的库存,因此我们无法动态实施库存管理;

同时,营销系统也有自己的主动库存管理机制,入口分散,关联性较弱;

可供出售库存和有效库存的管理基于实际库存,这很容易造成配置错误。

基于上述痛点,为了方便库存的运营和管理,并为使用实际库存的未来销售奠定基础,我们建立了一个库存中心,并提供以下主要功能:

与ecms实际库存实时同步;

您可以根据实际库存的仓库分布,计算货物的预计交货仓库和交货时间,从而计算货物的预期交货时间;

该l