01 场景:一个真实电商订单系统的整体架构、业务流程及负载情况

1.电商核心业务——下单流程

1.1 下单流程图

1.2 流程说明:

  1. 用户浏览商品系统
  2. 添加商品到购物车
  3. 选择其中某些商品下订单——提交订单
  4. 拉起微信支付、支付宝支付——支付订单
  5. 支付成功后,通知第三方仓储、发货系统,准备发货——物流发货

1.3 下单前涉及的业务

  1. 选中购物车后,在确认订单页,确认订单中的商品、价格、运费等无误;
  2. 选择是否使用优惠券、促销活动、积分等;
  3. 确认快递方式(到付等)、收件地址、是否开发票、发票抬头等

2.核心环节——订单创建、支付

2.1 确认订单并跳转支付

2.2 流程说明:

  1. 确认订单信息——订单系统返回订单中商品、价格等信息
  2. 正式下单——用户确认无误后,提交正式下单,订单系统将订单数据写入数据库
  3. 跳转支付——订单系统创建订单成功,跳转支付页,拉起微信支付或支付宝支付
  4. 完成支付——用户扫码支付,完成整个下单到支付的流程。

2.3 支付成功后的业务细节

支付的过程调用的第三方支付系统,如:支付宝、微信等等;而在支付后,由第三方支付系统回调支付结果,根据回调支付成功结果,那么需要进行发送优惠券、红包、push短信通知等业务。流程图如下:

3.订单系统

3.1 订单系统的模块划分

  1. 主要模块——主要模块也是订单系统的核心功能:下单模块。
  2. 查询模块——订单查询功能,查询模块主要提供给用户查询自己的订单信息功能。
  3. 异步模块——创建订单并支付成功后,异步模块在支付回调后发优惠券、红包、push短信通知等。
  4. 退货模块——客户在查询订单后,有时候会有各种原因想要退货,订单系统需要提供退货功能。
  5. 大促模块——类似双11、秒杀等大促场景下,专门用于扛流量洪峰的用于活动的大促模块,需要支持高并发下单场景

3.2 关联第三方

  1. 第三方物流系统——查看订单的配送状态,通过订单系统从第三方物流公司的系统中进行查询
  2. 数据分析与第三方团队——订单数据是核心数据,大数据团队需要根据该数据做成报表给公司高层查看

3.3 完整的业务场景

思考:以上的场景中,哪些可以用MQ、ES等来实现,达到优护系统性能的目的?

答:查询模块用ES;异步模块用MQ;支付回调相关用MQ保障;第三方对接用MQ解耦达到异步避免性能被拉低;大数据团队需要的数据通过MQ或DB从库实现,避免主库性能损耗。

4.负载情况

虚拟场景: 新兴公司,注册用户几千万,日活量为百万,每日订单量为几十万。每天最高峰QPS为2000/s,秒杀或大促活动时达到1W+/s。

存在的问题:

  1. 订单系统日益增长的数据量,每日数据累加的结果;
  2. 大促活动是每秒上万的访问压力,高峰期上万,其他时间段回落到几百

导致的性能问题:

  1. 数据量累加导致对DB的占满,DB写入磁盘,第一:磁盘利用率高,相对性能低;第二:DB单库单表数据量大,存在SQL执行性能下降等问题;
  2. 单库面对上万每秒的QPS会直接被打死,如果添加机器又有点浪费,毕竟高峰期就那么个把小时,不划算
  • 6
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
电商系统一个复杂的系统,需要设计前后端架构、数据库设计、服务器架构等多个方面。以下是一个电商系统的详细设计: 1.需求分析 在设计系统之前,需要先进行需求分析。电商系统的主要需求包括: - 用户登录注册 - 商品浏览和搜索 - 商品分类和标签 - 商品详情展示 - 购物车和下单 - 支付和订单管理 - 用户评价和客服支持 2.前端架构 电商系统的前端架构主要包括静态页面和交互逻辑。静态页面可以使用HTML、CSS和JavaScript等技术实现,交互逻辑可以使用Vue.js、React.js等前端框架实现。 3.后端架构 电商系统的后端架构主要包括服务器端和数据库。服务器端可以使用Java、Python等编程语言实现,数据库可以使用MySQL、Oracle等关系型数据库或者MongoDB等非关系型数据库实现。 4.数据库设计 电商系统的数据库需要设计多个表,包括用户表、商品表、订单表、购物车表、评价表等。具体的表结构可以根据需求进行设计。 5.服务器架构 电商系统需要使用负载均衡、缓存、CDN等技术来提高系统性能和可用性。负载均衡可以使用Nginx、HAProxy等软件实现,缓存可以使用Redis、Memcached等软件实现,CDN可以使用七牛云、腾讯云等服务提供商实现。 6.安全设计 电商系统需要进行安全设计,包括用户密码加密、SQL注入防护、XSS攻击防护、CSRF攻击防护等。具体的安全设计可以根据实际情况进行调整。 7.系统测试 电商系统需要进行系统测试,包括功能测试、性能测试、安全测试等。测试可以使用JUnit、Selenium等工具进行。 以上是电商系统的详细设计,具体实现需要根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值