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

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Redis 版,经济版 1GB 1个月
简介: 在昨晚的直播中,讨论了电商系统开发中的常见问题,包括高并发、库存管理、弱网支付、黄牛刷单和重复订单。解决高并发可采用缓存、限流和熔断策略,如使用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
相关文章
|
3月前
|
新零售 供应链
九星创客新零售商城系统开发|源码|方案详情
当下的商业领域,随着网络、电话、电视等平台的日益成熟和壮大
|
11月前
|
安全
拍卖软件开发定制直播竞价商城成品源码优势
在数字化时代,拍卖业务已经由传统的实体拍卖过渡到了在线平台。为了满足日益增长的市场需求,拍卖业务领域面临着两种主要选择:自定义拍卖软件开发和使用“东莞梦幻网络科技”已有拍卖平台的现成源码解决方案。在本文中,我们将深入探讨这两种方法的各自优势,以帮助您更好地了解哪种适合满足您的业务需求。
|
1月前
|
小程序
美团买菜小程序平台开发:搭建便捷的线上买菜渠道
随着时代的发展和人们生活水平的提高,网上购物已经成为更多人的首选。在此背景下,类似美团买菜小程序平台开发应运而生,为消费者提供方便快捷的网上购物体验。下面我们将详细讲解美团买菜小程序平台开发的功能特点和优势。
|
3月前
|
新零售 大数据 UED
多商家入驻分销模式商城开发系统案例|成熟技术
随着新零售模式的逐步落地,线上和线下将从以前的相对独立、冲突逐渐转化为相互融合
|
3月前
|
新零售 大数据 供应链
多商户商城分销系统开发|成熟项目|案例分析
线上线下的一体化,强化了零售平台的存在感优势
|
3月前
|
新零售 大数据
排队免单新零售商城平台系统开发|现成案例
新零售商业模式是线上线下相结合,以用户为核心,通过精准化
|
3月前
|
新零售 人工智能 搜索推荐
甄美天使新零售商城系统开发|模式方案
主流电商平台的产品模式形成,遵循了互联网产品发展的一般路径
|
8月前
|
Python
|
12月前
|
监控 搜索推荐 BI
连锁门店收银系统源码,支持定制开发
随着科技的发展,收银系统已经成为现代商业运作中不可或缺的一部分,各种收银系统层出不穷,每种系统都有其独特的特点和优势。常见的收银系统包括美团、客如云、银豹等,它们在不同的场景下发挥着重要的作用。对于品牌连锁门店而言,定制自己的收银系统是非常必要的。 首先,定制开发收银系统可以满足门店的个性化需求,有利于提高客户满意度。其次,通过定制的收银系统,可以增加门店的收益。最后,通过定制的收银系统,可以拓展销售渠道,提升品牌影响力。
137 0
连锁门店收银系统源码,支持定制开发
|
缓存 NoSQL 关系型数据库
淘宝大秒系统设计详解 | 许令波
最初的秒杀系统的原型是淘宝详情上的定时上架功能,由于有些卖家为了吸引眼球,把价格压得很低。但这给的详情系统带来了很大压力,为了将这种突发流量隔离,才设计了秒杀系统,文章主要介绍大秒系统以及这种典型读数据的热点问题的解决思路和实践经验。
18142 0