51mee - AI智能招聘平台Logo
模拟面试题目大全招聘中心会员专区

请设计一个支持旅游零售(如中免集团)高并发订单处理的系统架构,该系统需处理订单创建、支付、库存扣减、用户通知等流程,并保证数据一致性(如订单-支付-库存状态同步)。请说明核心组件设计、技术选型(如数据库、缓存、消息队列)以及如何应对峰值流量(如旅游旺季大促)。

中国旅游集团专业类岗位(新媒体运营、大数据、数字营销等)难度:困难

答案

面试辅导优化回答

1) 【一句话结论】
针对旅游零售高并发订单处理,设计微服务解耦+事件驱动+Seata TCC分布式事务+Redis缓存+Kafka消息队列的架构,通过分布式锁保证库存安全,补偿机制处理异常,应对峰值通过水平扩展和限流,确保订单-支付-库存同步与系统稳定性。

2) 【原理/概念讲解】
核心是“解耦+加速+一致”三原则:

  • 微服务拆分:订单、支付、库存、通知服务独立部署,避免单点阻塞(类比:超市不同部门协作,收银、库存、采购各司其职)。
  • 事件驱动:Kafka异步传递事件(如订单创建、支付成功),解耦服务强依赖,提升吞吐(类比:订单完成后发邮件通知库存部门,无需实时等待)。
  • 缓存加速:Redis集群缓存热点数据(如库存余量,5分钟过期),减少数据库读压力(类比:货架上的热卖商品标签,快速查看库存)。
  • 分布式事务:Seata TCC模式(预留库存、扣减库存、释放库存),通过三个阶段保证订单-支付-库存原子性,失败时补偿释放库存(类比:收银时同时扣库存和更新订单,失败则退回商品)。

3) 【对比与适用场景】

组件定义特性使用场景注意点
数据库持久化核心数据(订单、支付、库存)MySQL(分库分表,ShardingSphere),读写分离,事务隔离REPEATABLE READ订单、支付、库存等需持久化的数据需分库分表避免单库瓶颈,事务隔离防止脏读
Redis加速热点数据读取集群(主从+哨兵),库存余量5分钟过期订单状态、库存余量、用户信息等高频访问数据设置过期时间防缓存雪崩,热点数据预加载
Kafka异步解耦服务,处理高并发消息高吞吐、持久化、按SKU/订单ID分区订单创建、支付成功、库存扣减等事件传递消息持久化,消费者负载均衡,消息丢失处理(事务性消息)
Seata TCC保证分布式数据一致性预留库存(检查库存并锁定)、扣减库存(数据库事务)、释放库存(补偿)订单-支付-库存同步,避免超卖补偿逻辑需明确,确保失败时能回滚

4) 【示例】
订单创建流程伪代码(含分布式锁、消费者重试与回滚):

1. 用户请求创建订单 → 订单服务验证信息 → 调用库存服务预留库存(Redis SETNX key value EX 10s,检查库存余量)→ 写入订单表(数据库事务提交)→ 发布“订单创建事件”到Kafka(topic:order-create)。  
2. 支付服务消费事件 → 调用支付网关(如支付宝)→ 支付成功 → 发布“支付成功事件”到Kafka(topic:payment-success)。  
3. 库存服务消费事件 → 扣减库存(数据库事务,若失败回滚)→ 发布“库存扣减完成事件”到Kafka(topic:stock-decr-done);若失败则发送“库存补偿事件”到Kafka(topic:stock-compensate)。  
4. 通知服务消费事件 → 发送订单确认通知(短信/短信)。  

5) 【面试口播版答案】
“面试官您好,针对旅游零售高并发订单处理,我设计的系统采用微服务架构,核心是订单、支付、库存、通知四个服务,通过Kafka异步解耦,Redis缓存热点数据,MySQL分库分表处理高并发。订单创建时,订单服务先通过Redis分布式锁检查库存并预留,写入数据库后发布订单创建事件;支付服务消费后处理支付,支付成功发布支付成功事件;库存服务消费扣减库存(事务提交),若扣减失败则回滚并发布补偿消息;通知服务发送通知。应对峰值时,通过缓存预热(提前加载热门商品库存)、消息队列限流(积压阈值)、水平扩展服务实例,以及Seata TCC保证数据一致性,避免超卖或数据不一致,确保订单-支付-库存的同步与系统稳定性。”

6) 【追问清单】

  • 分布式事务补偿逻辑:扣减库存失败时,通过消息队列发送补偿消息,库存服务消费后执行释放库存(数据库事务回滚),避免超卖。
  • Redis缓存过期时间选择:库存余量5分钟过期,因为旅游商品库存变化快,5分钟内若未扣减则过期,避免数据过时。
  • 消息队列消费者重试机制:指数退避策略(第一次重试1秒,第二次2秒,最大重试3次),防止消息积压导致系统雪崩。
  • 系统故障(如数据库宕机)的容错:订单服务写入数据库失败时,回滚事务并发布失败事件,库存服务消费失败时,回滚库存并补偿,确保数据一致性。

7) 【常见坑/雷区】

  • 忽略补偿事务导致超卖:若扣减库存失败未释放库存,会导致库存余量错误,后续订单超卖。
  • 缓存过期时间设置过长:导致用户看到库存余量错误,影响下单决策(如热门商品库存已售罄但缓存未过期,用户下单成功)。
  • 消息队列分区策略不当:若分区按订单ID,可能导致同一商品的消息被不同消费者处理,库存扣减顺序混乱,引发数据不一致。
  • 未考虑降级策略:流量激增时服务崩溃,未优先处理核心业务(支付、库存),影响用户体验。
  • 分布式事务选择2PC:2PC性能低,不适合高并发,会导致库存扣减延迟,影响系统吞吐。
51mee.com致力于为招聘者提供最新、最全的招聘信息。AI智能解析岗位要求,聚合全网优质机会。
产品招聘中心面经会员专区简历解析Resume API
联系我们南京浅度求索科技有限公司admin@51mee.com
联系客服
51mee客服微信二维码 - 扫码添加客服获取帮助
© 2025 南京浅度求索科技有限公司. All rights reserved.
公安备案图标苏公网安备32010602012192号苏ICP备2025178433号-1