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

本文涉及的产品
云数据库 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
相关文章
|
5月前
|
小程序
美团买菜小程序平台开发:搭建便捷的线上买菜渠道
随着时代的发展和人们生活水平的提高,网上购物已经成为更多人的首选。在此背景下,类似美团买菜小程序平台开发应运而生,为消费者提供方便快捷的网上购物体验。下面我们将详细讲解美团买菜小程序平台开发的功能特点和优势。
|
7月前
|
新零售 大数据 供应链
多商户商城分销系统开发|成熟项目|案例分析
线上线下的一体化,强化了零售平台的存在感优势
|
7月前
|
新零售 大数据 UED
多商家入驻分销模式商城开发系统案例|成熟技术
随着新零售模式的逐步落地,线上和线下将从以前的相对独立、冲突逐渐转化为相互融合
|
7月前
|
新零售 搜索推荐
全民拼团商城系统开发|成熟案例|需求详情
无论未来做什么样的社交+零售模式,都离不开社区。
vivo公司项目总结:优惠券系统架构设计与实践
惠券是电商常见的营销手段,具有灵活的特点,既可以作为促销活动的载体,也是重要的引流入口。优惠券系统是vivo商城营销模块中一个重要组成部分,早在15年vivo商城还是单体应用时,优惠券就是其中核心模块之一。
|
新零售 人工智能 大数据
DAPP众筹商城开发(详情版)丨DAPP众筹商城系统开发方案及逻辑丨DAPP众筹商城系统源码模式
The important basis for the existence and development of the "new retail" business model is precisely the gradual improvement of people's requirements for personalization, immediacy, convenience, interactivity, accuracy and fragmentation in the shopping process. To meet the above needs, it depends
|
新零售 数据采集 存储
泰山众筹DAPP商城模式开发方案
 在新零售时代,消费者体验升级的基础建立在商家对于消费者的识别的精准度上升到前所未有的水平,使得商家更“懂”你,甚至比“你”更懂“你”,而不只是“你们”,从这个角度,新零售首先革新的是消费者行为数据采集系统,这是源头。以往,消费者在线上购物时,平台可以收集到消费者几乎全部购物行为数据,从浏览点击,收藏,到下单,快递等。随着我们的生活融入互联网的程度加深,除了购物信息,各类手机软件还记录了我们的出行信息,餐饮信息,娱乐信息,旅游信息,甚至还包含金融信息医疗信息和教育信息等。新零售时代的数据采集将更进一步,利用物联网和视频捕捉技术把消费者在实体商店的各种消费行为数据化,补上电子商务时代缺失的消费者
|
移动开发 小程序 前端开发
飞猪微信小程序建设总结
飞猪对小程序业务的尝试是比较早的,随着支付宝小程序的出现飞猪的各条业务线都在不断尝试小程序化以更好的在支付宝端获客、触达、留存,但是因为众所周知的原因飞猪一直没有尝试过微信小程序。随着21年反垄断的风越吹越盛,阿里的一些业务开始在微信领域伸出了触角,飞猪也随势而动尝试开垦“微信小程序”这块对我们来说是“处女地”的地方。
1556 0
飞猪微信小程序建设总结
电商系统的开发,有什么需要注意的?
对于很多想进入电商市场的企业来说,自行开发一个电商平台的费用是非常高的。所以,他们需要找一个成熟的商城系服务商统来帮他们搭建这个电商平台。那么,问题就来了。在这个鱼龙混杂的互联网市场里,我们要怎样选择,才能找到适合自己的电商系统开发公司呢?今天,飞进科技小编就和大家讨论一下这个话题吧。
1282 0
|
新零售 运维 监控
架构设计-支付宝、京东、美团、去哪儿的支付系统架构整体设计详解!!!
架构设计-支付宝、京东、美团、去哪儿的支付系统架构整体设计详解!!! 支付产品模块是按照支付场景来为业务方提供支付服务。这个模块一般位于支付网关之后,支付渠道之前。
4980 0
下一篇
DataWorks