小米一面:电商系统开发遇到了哪些问题?

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 在昨晚的直播中,讨论了电商系统开发中的常见问题,包括高并发、库存管理、弱网支付、黄牛刷单和重复订单。解决高并发可采用缓存、限流和熔断策略,如使用Redis、Sentinel等。库存问题通过限流、分布式锁和Redis Lua脚本防止超卖,少卖则依赖及时对账和人工补偿。弱网支付需确保支付状态同步,可借助回调和定时任务。防止刷单可使用图形验证码和IP黑名单。重复订单通过幂等性和数据库唯一约束处理。欢迎在评论区分享更多经验和相关代码实现。

昨晚在直播间带着大家刷第 22 套小米面试真题时,遇到了这样一个问题,面试官问:“你在开发电商系统的过程中,都遇到了哪些问题?”,个人觉得这个问题既属于开放性问题,同时又比较具有代表性,所以就单拿出来和大家分享交流一下经验。

首先,我们先分析一下,电商系统开发中可能会遇到的经典的问题有哪些?我这总结了几个,大家也可以在评论区补充交流:

  1. 瞬时流量,高并发问题
  2. 库存问题:超卖和少卖问题。
  3. 弱网环境下支付问题
  4. 黄牛刷单问题
  5. 重复订单去重问题

这是我们在电商系统开发中,可能会遇到的一些经典问题,那怎么来解决这些问题呢?

1.解决高并发问题

高并发系统有以下三个经典的解决方案:

  1. 缓存:一种重要的计算机技术,它通过减少数据访问时间和提高数据访问速度来优化系统查询的效率。
  2. 限流:一种计算机网络流量控制技术,主要用于控制数据的传输速率,防止网络拥堵和超出系统的处理能力。通过限流可以控制单位时间内请求的数量,或者限制一个时间窗口内的请求数量,以保护系统的稳定性和可用性。
  3. 熔断:一种在分布式系统中用于处理故障和防止系统过载的保护机制。它的主要思想源于电路中的熔断器,当电流过大时,熔断器会自动熔断以保护电路。在分布式系统中,熔断器的概念被引申为保护系统免受过多错误或请求的冲击。

具体的落地实现:

  1. 缓存具体实现:使用 Redis 实现分布式缓存,另外配合 Nginx 缓存 + 本地 Caffeine 缓存 + CDN 缓存 + 浏览器缓存共同实现多级缓存来保证系统的性能。
  2. 限流具体实现:限流可以使用 Spring Cloud Alibaba 组件 Sentinel 来实现,在项目中引入 Sentinel 框架,配置资源和资源限流规则即可实现限流功能。
  3. 熔断具体实现:熔断的实现和限流类似,也可以使用 Spring Cloud Alibaba 组件 Sentinel 来实现,在项目中引入 Sentinel 框架,配置资源和资源熔断规则即可实现限流功能。

2.解决库存问题

库存的问题有两个:

  1. 超卖问题
  2. 少卖问题

2.1 解决超卖问题

超卖问题的解决方案有以下几个:

  1. 限流
  2. 分布式锁
  3. Redis Lua(先判断库存 -> 减库存 + 加订单)
  4. 使用数据库 update 操作库存

PS:生产环境通常使用限流 + Redis Lua 脚本来解决超卖问题。

2.2 解决少卖问题

少卖问题我们通常使用及时对账系统 + 人工补偿机制来解决。

3.解决弱网支付问题

弱网环境下支付的问题主要涉及到在网络信号较差的情况下进行支付操作时可能出现的一系列问题。

弱网环境最主要的是要解决支付状态同步的问题,它的解决方案有以下几个:

  1. 支付平台提供回调方法进行支付状态的刷新。
  2. 手动触发主动出查询得到支付状态。
  3. 定时任务进行刷新。

4.解决刷单问题

防止黄牛刷单的常见解决方案有以下两种:

  1. 添加图形验证码:此手段可以解决大部分刷单问题。
  2. 添加异常观测平台和 IP 黑名单限制:通过异常报警平台观察到异常 IP,然后将异常 IP,加入到 IP 黑名单,从而解决刷单问题。

5.解决重复订单问题

重复订单去重问题的解决方案有以下两个:

  1. 通过幂等性判断去除重复订单:可以通过自定义注解 + Redis 来实现幂等性过滤。
  2. 数据库唯一约束保底:数据库通过设置唯一约束来保证不会有重复的订单添加到数据库,从而避免了重复订单的产生。

课后思考

除了以上问题之后,你在开发电商系统中还遇到了哪些经典的问题?幂等性判断的核心实现代码是啥?自定义注解的实现方式有几种?

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
4月前
|
小程序
美团买菜小程序平台开发:搭建便捷的线上买菜渠道
随着时代的发展和人们生活水平的提高,网上购物已经成为更多人的首选。在此背景下,类似美团买菜小程序平台开发应运而生,为消费者提供方便快捷的网上购物体验。下面我们将详细讲解美团买菜小程序平台开发的功能特点和优势。
|
6月前
|
新零售 大数据 UED
多商家入驻分销模式商城开发系统案例|成熟技术
随着新零售模式的逐步落地,线上和线下将从以前的相对独立、冲突逐渐转化为相互融合
|
6月前
|
新零售 大数据
排队免单新零售商城平台系统开发|现成案例
新零售商业模式是线上线下相结合,以用户为核心,通过精准化
泰山众筹商城系统模式开发解读
模式说明: 众筹是100U 众筹第一期价格为商品首次上架的价格。 比如:商品A每天17:00-19:00开放众筹。用户每期参与最低最高参与众筹:1-10U。 第二期众筹价格(商品价格),增加30%,以此类推,每个商品每轮增加XX%
|
新零售 人工智能 大数据
众筹商城开发正式版,众筹商城系统开发技术分析,众筹商城开发源码案例
 新零售模式即个人、企业以互联网为依托,通过运用大数据、人工智能等先进技术手段并运用心理学知识,对商品的生产、流通与销售过程进行升级改造,进而重塑业态结构与生态圈,并对线上服务、线下体验以及现代物流进行深度融合的零售新模式。
|
调度
众筹DAPP开发,众筹系统开发(逻辑及方案),众筹app源码模式
同步模块的消息handler 负责处理从 net 模块监听到的 NetMsg_SYNC_BLOCK_MSG 类型的消息 func (sync *BlockChainSyncServer) blockSyncMsgHandler(from string, msg []byte, msgType netPb.NetMsg_MsgType) error {
|
新零售 数据采集 存储
泰山众筹DAPP商城模式开发方案
 在新零售时代,消费者体验升级的基础建立在商家对于消费者的识别的精准度上升到前所未有的水平,使得商家更“懂”你,甚至比“你”更懂“你”,而不只是“你们”,从这个角度,新零售首先革新的是消费者行为数据采集系统,这是源头。以往,消费者在线上购物时,平台可以收集到消费者几乎全部购物行为数据,从浏览点击,收藏,到下单,快递等。随着我们的生活融入互联网的程度加深,除了购物信息,各类手机软件还记录了我们的出行信息,餐饮信息,娱乐信息,旅游信息,甚至还包含金融信息医疗信息和教育信息等。新零售时代的数据采集将更进一步,利用物联网和视频捕捉技术把消费者在实体商店的各种消费行为数据化,补上电子商务时代缺失的消费者
|
人工智能 供应链 搜索推荐
外卖的未来:“下一代门店”到底怎么玩?
外卖的未来:“下一代门店”到底怎么玩?
129 0
外卖的未来:“下一代门店”到底怎么玩?
|
JavaScript 编译器 区块链
NFT盲盒游戏商城交易系统dapp开发部署
在智能合约编写完成后,部署的方式就提到了日程上来,经过简单的测试,总结出来以下几种编译部署方式
下一篇
无影云桌面