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

请设计一个支持上百万级用户同时在线、每秒处理数万笔订单的股票交易系统架构,并说明如何保证交易的一致性和低延迟。

上海证券交易所A03 信息技术类难度:困难

答案

1) 【一句话结论】采用微服务+分布式架构,通过服务拆分、消息队列异步解耦、最终一致性保证交易一致性,结合缓存、负载均衡和数据分片实现高并发与低延迟。

2) 【原理/概念讲解】老师口吻,解释核心概念:
首先,高并发系统的核心是“拆”和“扩”——将大系统拆成小服务(微服务,如订单、账户、行情服务),每个服务独立部署,支持水平扩展(如订单量激增时,仅扩容订单服务,不影响其他服务)。
服务间不能直接调用(如订单服务调用账户服务),否则易阻塞,需用消息队列(如Kafka)做“中间人”:订单服务将订单消息发到队列,账户服务自主消费,解耦且支持批量处理,降低单次请求延迟。
一致性方面,股票交易对实时性敏感,强一致性(如两阶段提交)会导致超时,故采用最终一致性——通过补偿机制(定时重试)保证数据最终一致(如订单发送后,账户服务延迟更新,最终重试成功)。
缓存是性能关键:读多写少场景(如订单查询、账户余额)用Redis缓存,读请求先查缓存,减少数据库压力;写请求直接写数据库。
负载均衡(如Nginx)分发用户请求到多实例,避免单点压力;数据分片(如订单表按用户ID哈希分片)避免单表数据过大,提升查询/写入性能。

3) 【对比与适用场景】

方案定义特性使用场景注意点
两阶段提交(2PC)强一致性,保证分布式事务全局提交/回滚严格一致性,但性能差、易阻塞小数据量、对一致性极高(如金融核心账务)事务超时、网络分区风险
最终一致性通过补偿机制保证数据最终一致性能高,适合高并发、对实时性敏感股票交易、电商订单(允许短暂不一致)需补偿机制,存在数据不一致窗口

4) 【示例】订单提交流程(伪代码):

  1. 用户请求→负载均衡(Nginx)→订单服务;
  2. 订单服务写入MySQL(订单表,按用户ID分片);
  3. 订单服务发送消息到Kafka(“order-topic”,含订单ID、用户ID、金额);
  4. 账户服务消费Kafka消息→更新账户余额(写入MySQL账户表,按用户ID分片);
  5. 账户服务发送确认消息到Kafka确认分区;
  6. 订单服务消费确认消息→标记订单状态为“已处理”。

5) 【面试口播版答案】
面试官您好,针对上百万用户并发、数万笔/秒订单的场景,我设计的系统核心是采用微服务+分布式架构,通过解耦、异步处理和水平扩展来保证性能和一致性。首先,将系统拆分为订单服务、账户服务、行情服务等微服务,每个服务独立部署,支持水平扩展。订单处理时,用户请求先通过负载均衡(如Nginx)分发到订单服务,订单服务将订单写入数据库(如MySQL分片),同时发送消息到Kafka,账户服务消费消息后更新余额并返回确认,订单服务收到确认后标记订单状态。这样用消息队列解耦,避免服务间直接调用导致的阻塞。对于一致性,采用最终一致性模型,因为强一致性会导致超时,影响用户体验,通过补偿机制(如定时重试)保证数据最终一致。另外,订单服务读写分离,读请求走缓存(Redis),写请求直接写数据库,降低数据库压力。数据分片方面,订单表按用户ID哈希分片,避免单表数据过大。缓存使用Redis集群,支持高并发读写。最后,通过监控和告警系统实时监控各服务状态,确保系统稳定。

6) 【追问清单】

  1. 如何保证数据一致性?
    回答要点:采用最终一致性,通过消息队列确认机制和补偿机制(定时重试)保证数据最终一致。
  2. 如果订单服务宕机,如何处理?
    回答要点:消息队列中的未处理消息会被其他实例消费,或通过重试机制恢复。
  3. 缓存雪崩怎么办?
    回答要点:用限流、热点数据预热、分布式锁,避免全量缓存失效。
  4. 数据分片如何实现?
    回答要点:用ShardingSphere或自定义分片规则,按用户ID哈希分片。
  5. 如何处理超时问题?
    回答要点:用熔断、降级,比如订单服务超时,返回用户“下单失败,请稍后重试”。

7) 【常见坑/雷区】

  1. 直接用强一致性(两阶段提交)导致性能问题,因股票交易对延迟敏感。
  2. 忽略消息队列可靠性,未设置消息确认,导致消息丢失。
  3. 缓存未设置TTL,导致缓存穿透或数据不一致。
  4. 数据分片未考虑热点数据,导致分片倾斜。
  5. 未考虑容灾,如数据库单点故障。
51mee.com致力于为招聘者提供最新、最全的招聘信息。AI智能解析岗位要求,聚合全网优质机会。
产品招聘中心面经会员专区简历解析Resume API
联系我们南京浅度求索科技有限公司admin@51mee.com
联系客服
51mee客服微信二维码 - 扫码添加客服获取帮助
© 2025 南京浅度求索科技有限公司. All rights reserved.
公安备案图标苏公网安备32010602012192号苏ICP备2025178433号-1