后端存储实战课
李玥
美团高级技术专家
44005 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 30 讲
结束语 (1讲)
后端存储实战课
15
15
1.0x
00:00/00:00
登录|注册

课前加餐 | 电商系统是如何设计的?

存储系统选型
第三方框架和云服务
编程语言和技术栈
功能模块划分
电商系统的流程
用例图
业务需求
需求分析
技术选型
电商系统的核心流程
电商系统架构
分布式存储系统
系统建设和运维
电商系统设计
电商系统设计

该思维导图由 AI 生成,仅供参考

你好,我是李玥。
在这个系列课程中,我们会讲电商这个行业在多年系统建设和运维过程中,总结出来的使用分布式存储系统的一些最佳实践。也会以电商系统作为例子来讲解存储相关的技术知识和问题。这都需要你对电商的业务逻辑、系统架构、核心业务流程有一个基本的认知。
虽然说,电商这个业务和你的生活息息相关,你可能对电商多少有一些了解,但是,即使是一个最小化的电商系统,它仍然非常复杂。所以,我们先花一节课的时间,一起以一个创业公司的 CTO 的视角,设计一个最小化的电商系统,在这个过程中帮你理清楚电商系统的架构。
这样,我们在学习后续课程的时候,就不再解释电商的业务和系统了,直接来讲具体的技术问题。
我们的故事从一个电话开始。某一天,一个曾经认识但并不太熟悉的老板突然来了一个电话:
“我有一个改变世界的想法,就差一个程序员了!你来吧!”
新公司很快就成立了,你成了新公司的 CTO。关于要如何改变世界,目前唯一能确定的是,老板要做一个电商系统。具体做成什么样,还不清楚。你需要和老板讨论需求。
你:“咱们要做的业务模式是 C2C、B2C 还是 B2B 呢?”
老板:“什么 B?什么 C?我不懂你们那些技术的东西。”
你:“这么说吧,你要山寨,啊不对,做一个某宝网,还是某东网,还是某 848 网呢?”
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

电商系统设计的关键在于需求分析和核心业务流程的设计。文章以一个创业公司的CTO的视角,从需求分析开始,介绍了电商系统的核心流程设计。在需求不明确的情况下,建议先搭建一个最小化的系统,再逐步迭代完善。需求分析的关键是回答系统是给哪些人用的,以及这些人使用系统来解决什么问题。电商系统的核心业务流程主要是购物流程,包括浏览商品、添加到购物车、下单结算、支付、发货和确认收货等环节。这些流程需要清晰的设计和实现。文章强调了业务需求的重要性,以及需求分析对于项目成功的关键作用。 文章详细介绍了电商系统的功能模块划分,包括商品、订单、购物车、支付、库存、促销、用户、账户、搜索推荐和报表等模块。特别强调了促销模块的复杂性和重要性,以及如何将其复杂性封禁在模块内部,避免影响整个系统的复杂度。此外,还提到了系统的角色和需求,以及在技术选型上需要考虑的编程语言、技术栈、第三方框架、云服务和存储系统等方面。 总的来说,本文通过CTO的视角,深入浅出地介绍了电商系统设计的关键要点,强调了需求分析和核心业务流程设计的重要性,以及功能模块划分和技术选型的考虑。对于想要了解电商系统设计和技术选型的读者来说,本文提供了宝贵的参考和指导。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《后端存储实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(38)

  • 最新
  • 精选
  • 木云先森
    针对促销的话,还有一个点在实际运营的电商系统中,也需要经常考虑到。订单中要存储每个商品所均分的促销价。 比如A商品100元 B商品100元 用户买了一件A+一件B 激发了一个促销满200减10元 买个商品均摊5元 核心也是为了再做单件售后的时候,计算出首先对应的金额

    作者回复: 一看就是真正做过电商的同学👍

    2020-02-27
    6
    59
  • 靠人品去赢
    老师,总算讲到电商系统。我们小公司设计是这样,就是老板这个角色就是超级用户或者是你说的超级运营,除了查看报表什么的,还有其他上货的功能也有。 我觉得困惑的是,购物车这个一次性几个商品,是一个订单还是几个商品一个订单,中间掺杂拼单优惠这些怎么搞,主要问题是客户买完了,突然说这个我不要了,或者要退货退钱。 我们该怎么设计订单,关于购物车订单,一次好多个商品,还有就是带来的优惠折扣怎么搞,按照产品的想法这个要这样,那个要这样,感觉在给自己埋坑啊。

    作者回复: 还是我文中讲到的,促销优惠的复杂度都封禁在促销模块里面,让保持促销对外的接口简单。 像你这种情况,促销需要提供几个服务: 一是哪些促销可用:输入是一堆商品和用户ID,促销服务返回可用的促销:比如满减、优惠券之类的。 一个“算价”服务,输入是:一堆商品和使用的一堆促销,促销服务需要验证这些促销是否都可以使用,有没有冲突之类的,如果可用,返回的是计算完成的促销价。 这个促销价不仅包括使用促销之后的总价,还要包含每个商品的“实际优惠价(不显示给用户)”,保证:促销后的总价=Σ所有商品的实际优惠价。这个价格就是用完促销之后,每个商品的实际价格,后续退货、计算成本收益,都以这个价格为准。 这样对于购物车和订单来说,处理就比较简单了,不管你促销怎么玩儿,反正最终你告诉我用完促销之后每个商品什么价格就可以了。促销规则变来变去也不用去改订单服务。

    2020-03-04
    7
    46
  • GeekAmI
    所以,到底是下单扣库存,还是发货扣库存呢?

    作者回复: 一般来说是下单锁库存,发货减库存。

    2020-02-29
    7
    32
  • FATMAN89
    我想向老师请教一下,电商系统中如何解决超卖这个问题?谢谢!

    作者回复: 还是看具体的业务场景吧。 一般来说,解决超卖问题的方法都是在下单的时候锁定库存,如果订单取消再释放库存。

    2020-02-27
    5
    15
  • 良木
    老师,您提到“用户模块一般不负责用户登录和认证,这是两个完全不同的功能" 这该怎样理解? 我们在做登录认证时会从用户库查询匹配、也会有些跟用户相关的别的逻辑。 谢谢!

    作者回复: 我们这里的用户模块主要是维护和管理C端用户信息的模块,用户数据也是业务数据,是电商的重要业务资产,所以最好不要登录认证的安全功能做在一起。

    2020-02-27
    6
    12
  • 良木
    开始阶段一般选java技术栈,如果团队能驾驭别技术栈也是可以的,前端可能只做小程序,数据库使用mysql或最熟悉的。图片视频存储直接购买公有云产品,还需要CDN,框架如第三方支付SDK 等,还要申请一堆东西域名、证书...

    作者回复: 对小规模的团队,这是一个非常务实合理的选择。

    2020-02-26
    9
  • 一个程序员的成长
    你好老师,看到有同学提到库存的问题,如果用户下单之后,一直没有取消订单,是不是有一个阈值,比如说30分钟,用户还没有支付,这个订单相应的也要失效,同时释放库存。

    作者回复: 是的,所以你看很多抢购的订单,如果你下单后不付款,有效期都非常短,为的就是尽快释放库存,给其它人抢购。

    2020-03-02
    8
  • Middleware
    清一色 Java,我php 也可以哈,php +swoole

    作者回复: PHP是世界上最好的语言😆

    2020-03-03
    3
  • 新安
    但我看老师说的是在发货后再减去相应的库存,这样不会造成超卖吗?

    作者回复: 下单的时候需要锁定库存,配合发货的时候减库存,才不会超卖。

    2020-03-01
    3
  • aoe
    老师,购买成功后,关于”订单快照“的存储策略后面会介绍吗?

    作者回复: 具体你想了解哪些技术呢?

    2020-02-27
    2
收起评论
显示
设置
留言
38
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部