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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容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
相关文章
|
存储 消息中间件 运维
淘宝应用架构
淘宝应用架构
vivo公司项目总结:优惠券系统架构设计与实践
惠券是电商常见的营销手段,具有灵活的特点,既可以作为促销活动的载体,也是重要的引流入口。优惠券系统是vivo商城营销模块中一个重要组成部分,早在15年vivo商城还是单体应用时,优惠券就是其中核心模块之一。
|
监控 安全 数据挖掘
短视频app开发,如何实现高质量的支付系统架构?
短视频app开发,如何实现高质量的支付系统架构?
|
新零售 存储 人工智能
什么是泰山众筹商城系统开发说明?阐述泰山众筹区块链商城系统开发详细技术方案及分析
 互联网、云计算、大数据、人工智能等新技术的不断发展给行业注入了高速增长的动力。与此同时,在技术的支撑之下,零售行业从商品的生产到消费,都能够实现有效的监控,零售商得以实现对于商品生产的控制,实现零库存的经营,这种变化对零售行业起到了减负的作用。直接推动了行业的高速发展。
什么是泰山众筹商城系统开发说明?阐述泰山众筹区块链商城系统开发详细技术方案及分析
|
Dart 前端开发 JavaScript
染陌的2021年度总结——我在淘宝做架构
## 写在前面 这几天闲暇时候刷知乎掘金时,发现时间线上朋友们都开始写年终总结了,才反应过来一年又到了头。 去年由于太忙(~~懒~~)没有写,今年还是得按照惯例补上。 毕业到现在也有六年多了,站着快要 30 岁的节骨眼上去回看过去的自己,得失参半。这一路走来不断地尝试各种领域,移动端中后台 IoT 一个都不少,写过业务也做过架构,在 C++、JS 、Dart 等各种语言之间反复横跳,也经常记混每种语言的写法。我这一年还是都在做技术的事情,也因为去年工作内容的转换基本上都在 [Github](https://github.com/answershuto) 上做一些事情。 我也越来越喜欢自
148 0
染陌的2021年度总结——我在淘宝做架构
|
传感器 新零售 监控
送外卖也要“黑科技”?阿里移动感知技术应用揭秘
送餐路上外卖骑手们所处的位置不仅牵动着大家的心,在本地生活的场景下,也是订单配送和调度系统的重要一环。其中骑手是否已到店取餐看似简单却难以准确观测。针对这一问题,阿里本地生活科技中心建立了基于移动感知的aBeacon系统来准确地观测骑手到店和离店行为。这一工作成果也发表在了网络系统领域的顶级会议NSDI’21上。本文将从实现原理为大家做一个简单介绍。
1974 0
送外卖也要“黑科技”?阿里移动感知技术应用揭秘
|
新零售 双11
天猫、小米、超品日:“新零售”的殊途同归
5月9日,手机圈是沸腾的,罗永浩相声专场发布了坚果Pro手机,也是这一天,小米天猫超级品牌日,罗永浩的相声专场,又一次割裂了媒体人的朋友圈,相比之下,小米与天猫的超品恩爱秀,舆论却是相对统一。
201 0
电商系统的开发,有什么需要注意的?
对于很多想进入电商市场的企业来说,自行开发一个电商平台的费用是非常高的。所以,他们需要找一个成熟的商城系服务商统来帮他们搭建这个电商平台。那么,问题就来了。在这个鱼龙混杂的互联网市场里,我们要怎样选择,才能找到适合自己的电商系统开发公司呢?今天,飞进科技小编就和大家讨论一下这个话题吧。
1290 0
|
新零售 索引
crmeb电商系统
CRMEB公众号小程序商城系统打通版
3993 0
|
新零售 运维 监控
架构设计-支付宝、京东、美团、去哪儿的支付系统架构整体设计详解!!!
架构设计-支付宝、京东、美团、去哪儿的支付系统架构整体设计详解!!! 支付产品模块是按照支付场景来为业务方提供支付服务。这个模块一般位于支付网关之后,支付渠道之前。
5046 0