架构师级别的电商项目——2 电商项目核心需求分析

1 电商项目概述

  • 电子商务类型(按交易主体)

    类型 电商形式 代表企业
    B2C 企业直接面向消费者销售产品和服务的商业零售模式 小米、华为、vivo
    B2B 企业与企业之间通过互联网开展交易活动的商业模式 1688.com
    B2B2C B2B、B2C模式的演变和完善,将B2C和B2B模式完美结合 天猫、京东、国美、苏宁
    C2C 个人与个人之间的电子商务 淘宝网、闲鱼等
    O2O(OnlineToOffline) 线下商家让互联网成为线下交易的平台(线上引流,线下消费) 美团、饿了么
    B2G 企业与政府机构间的电子商务 中国政府采购网
  • 电商运营模式(按运营模式)

    • 自营:平台自主采购、销售商品,对供应链和品控把控力强。代表企业:小米、华为商城(VMALL)、锤子科技(smartisan);

    • 联营:平台提供交易场所,吸引商家入驻经营,自身不直接参与商品采购。代表企业:淘宝网、天猫;

    • 自营+联营:同时采用自营和联营两种模式,兼具供应链优势和商家丰富度。代表企业:京东、国美在线、苏宁易购;

  • 电商运营方向

    • 传统电商:以"货架式"商品展示和交易为核心,用户主动搜索购物。代表:淘宝、天猫、京东、唯品会、聚美优品、当当等;

    • 社交电商:依托社交关系链(如朋友圈、社群)进行商品传播和交易,强调"社交+购物"的融合。代表:拼多多、京东(社交板块)、国美、苏宁(社交化运营);

    • 网红电商:以网红/达人的个人IP为核心,通过直播、短视频等形式推荐商品,用户因信任达人而消费。代表:抖音、快手;

    • 内容电商:以优质内容(如文章、视频、图文)为载体,潜移默化地传递商品价值,激发用户购买欲。代表:头条三农领域(通过三农内容推广农产品等)。

2 常见电商术语

  • PV(Page View):指网站被浏览的总次数,用于衡量网站的页面浏览量规模;

  • UV(Unique Vister):即独立访客,用于统计访问网站的独立用户数量,体现网站的用户覆盖广度;

  • CR(Conversion Rate):转化率,是访问某一网站访客中,转化的访客占全访客的比例(订单转化率=有效订单数/访客数),反映网站的商业转化能力;

  • SPU(Standard Product Unit,标准化产品单元):是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息集合,描述一个产品的特性。不同电商系统的SPU数量差异大,像淘宝这类平台联营型的SPU可达百万甚至千万级别,而小米商城这类自营型的SPU往往在几万左右;

  • SKU(Stock keeping unit,库存量单位):是库存进出计量的单位,买家购买、卖家进货、供应商备货、工厂生产都依据SKU进行。在服装、鞋类商品中使用最多最普遍,例如纺织品中一个SKU通常表示规格、颜色、款式,是物理上不可分割的最小存货单元;

  • 电商系统类型不同,SPU、SKU的表现也有差异;最小化电商系统也很复杂,需求常变化,建议先搭建核心系统,实现最小化系统后再逐步迭代完善。

3 设计电商系统的核心流程

  • 在设计电商系统前,需求分析需先明确两个关键问题:

    • 这个系统(或功能)是给哪些人用的?

    • 这些人使用这个系统是为了解决什么问题?

  • 电商系统面向三类核心用户,各自的业务需求如下:

    • 用户 :为了"买东西",核心操作是浏览商品购买商品

    • 运营 :为了"卖东西",核心操作包括进货发货维护商品管理订单

    • 管理者 :为了"了解收益",核心操作是查看报表

  • 电商最核心的业务流程是购物流程,步骤如下:

    • 开始

    • 浏览商品:用户在平台(如App)中浏览商品,寻找心仪商品

    • 加购物车:将选中的商品添加到购物车

    • 下单:选完商品后,在购物车提交订单

    • 支付:下单后进行支付操作

    • 发货:支付成功后,运营人员为订单发货,邮寄商品

    • 确认收货:用户收到商品后确认收货

    • 结束:至此,完整的购物流程结束

  • 注意:

    • 需求分析的本质是理清业务场景,电商的购物流程具有通用性,即便在传统商业场景(如杂货铺、线下商场)也有类似逻辑;
    • 同时强调需求易变化,开发时可先搭建核心系统,再逐步迭代完善。

4 根据流程来划分模块

  • 电商系统的模块划分基于业务流程功能完整性 。除了购物流程涉及的核心模块,还需覆盖运营、管理等全业务需求,最终划分为10大功能模块

    模块 功能说明
    商品 维护和展示商品的相关信息(如详情、价格等)
    订单 维护订单信息和订单状态,计算订单金额
    购物车 维护用户购物车中商品的信息
    支付 负责与系统内外的支付渠道对接,实现支付功能
    库存 维护商品的库存信息
    促销 制定促销规则,计算促销优惠信息(如满减、折扣等)
    用户 维护系统的用户信息(注意:不负责登录和认证,这是独立功能)
    账户 维护用户的账户信息(如积分、等级、余额等)
    搜索推荐 提供商品搜索功能,负责商品列表页和促销页的组织展示,决定用户优先看到的商品
    报表 实现数据统计和分析功能,生成报表,为管理者经营分析和决策提供数据信息
  • 3 设计电商系统的核心流程中提到的购物流程进一步细化,通过下面的购物流程时序图,可清晰看到模块间的协作步骤:

    • 用户-商品:用户浏览商品,获取商品详情

    • 用户-购物车:用户将选好的商品加入购物车

    • 用户-订单 :用户下单,订单模块创建新订单,同时购物车模块清理购物车(删除已下单商品)

    • 用户-支付 :用户发起支付,支付模块完成支付后,订单模块变更订单状态为"已支付"

    • 运营-库存-订单 :运营发货,库存模块扣减对应商品库存,订单模块变更订单状态为"已发货"

    • 用户-订单 :用户确认收货,订单模块变更订单状态为"已收货",流程结束

  • 模块设计的注意事项(以促销模块为例)。促销模块是电商系统中最复杂的模块之一,设计时需注意:

    • 隔离复杂性:将促销规则的变化和复杂性控制在促销模块内部,避免影响其他模块;

    • 接口稳定性:促销模块与其他模块(如订单)的接口要设计得简单且固定。例如:

      • 订单创建时,将商品和价格信息传给促销模块;
      • 促销模块返回可用的促销列表,用户选择后,订单模块记录促销规则和最终价格即可;
      • 这样无论促销模块如何变化,订单和其他模块的业务逻辑都无需改动;
  • 注意:

    • 仅靠购物流程的5个模块(商品、购物车、订单、支付、库存)不足以覆盖全部业务,需补充促销、用户、账户、搜索推荐、报表模块,才能构建可实际运营的电商系统;
    • 同时强调促销是提升销量的有效手段,但规则设计需谨慎,避免因逻辑失误导致企业损失。

5 总结电商系统的设计核心要点

  • 用户角色与需求

    • 面向三类角色:用户 (购物)、运营人员 (商品销售)、管理者(经营数据)
    • 核心流程:购物流程(浏览商品→加购→下单→支付→发货→确认收货)
    • 功能模块:支撑购物流程的核心模块(商品、订单、购物车、支付、库存),以及完整电商系统必备的扩展模块(促销、用户、账户、搜索推荐、报表)
  • 需求分析要点 。开发时需先理清业务需求 ,再设计功能;若业务复杂,需将复杂性控制在单个模块内部,避免扩散到整个系统;

  • 技术选型思考。技术选型需结合团队熟悉度、技术生态完善度,以及业务的用户量、数据量、并发数等关键指标,而非盲目追求"最新技术";

  • 以淘宝的技术迭代为例(可以参考《淘宝技术这十年》),展示电商系统从简单到复杂的架构演进逻辑:

    阶段 技术架构与关键动作
    LAMP阶段 技术栈:Linux+Apache+MySQL+PHP 特点:开源免费、发布快速;数据库采用主从架构(一主两从,读写分离)
    Oracle阶段 因MySQL性能不足,替换为Oracle数据库,解决业务量增长带来的存储和性能压力
    Java MVC改造阶段 请Sun公司团队改造,采用Java MVC模式 (JBoss+淘宝MVC+EJB+OR-Mapping),将业务分块渐进式替换,同时引入搜索模块(多Node节点支持)
    IOE阶段 采用IOE架构(IBM小型机+Oracle数据库+EMC存储),通过"堆硬件"解决业务增长问题
    稳中求变阶段 技术优化: DBRoute框架统一处理数据排序、合并、分页; Spring替换EJB,引入缓存、CDN(内容分发网络)
    创造技术阶段 因现有技术无法满足业务,进入"创造技术"阶段,例: 开发Tair缓存、TFS文件系统(解决图片存储)、AJAX/Prototype(简化前端交互)、ESI(解决页面静态缓存)
    分布式阶段 架构拆分与服务化改造: 系统模块逐步拆分和服务化 ; 发展出HSF(实时调用中间件)、Notify(异步消息中间件)、单点登录系统、TDDL分布式数据层等阿里开源中间件 ; 架构分层:业务系统→核心业务服务→基础业务服务→持久层(DB/TFS/NAS)
    大数据+云计算+服务化阶段 融合大数据、云计算技术,全面实现服务化架构,支撑超大规模业务的容量和高可用性
相关推荐
Kuo-Teng2 小时前
LeetCode 198: House Robber
java·算法·leetcode·职场和发展·动态规划
小七mod2 小时前
【Spring】Spring Boot自动配置的案例
java·spring boot·spring·自动配置·源码·ioc·aop
红石榴花生油2 小时前
Docker + Nginx 部署 Java 项目(JAR 包 + WAR 包)实战笔记
java·tomcat·maven
e***28292 小时前
RabbitMQ 客户端 连接、发送、接收处理消息
分布式·rabbitmq·ruby
2***57422 小时前
后端消息中间件对比,RabbitMQ与RocketMQ
分布式·rabbitmq·rocketmq
带刺的坐椅2 小时前
Solon AI 开发学习 - 1导引
java·ai·openai·solon·mcp
百***26632 小时前
RabbitMQ高级特性----生产者确认机制
分布式·rabbitmq
sg_knight2 小时前
RabbitMQ 中的预取值(prefetch)详解:如何真正提升消费端性能?
java·spring boot·spring·spring cloud·消息队列·rabbitmq·预取值
Dxxyyyy3 小时前
零基础学JAVA--Day34(Map接口+HashTable+HashMap+TreeSet+TreeMap+开发中如何选择集合实现类?(重要))
java·开发语言