
1) 【一句话结论】:采用“API网关+消息中间件+分布式事务(Saga模式)”的混合架构,通过API网关统一处理用户实时请求并保障安全,消息中间件实现系统异步解耦,Saga模式确保支付后酒店与景区库存数据一致性,同时通过限流、重试策略应对高并发与系统故障,实现一站式预订。
2) 【原理/概念讲解】:老师口吻解释核心组件。
API网关作为系统的“统一入口与调度台”,负责请求路由(如酒店/景区系统)、用户认证(OAuth2.0授权码模式:用户登录后,API网关跳转至授权服务器授权,获取授权码并交换为访问令牌,验证令牌确保身份安全)、限流(令牌桶算法,如令牌桶大小1000,每秒填充100令牌,避免系统过载),实时返回用户交互结果(如价格、预订状态)。
消息中间件(如Kafka)是“异步通信的快递驿站”,用于解耦强依赖系统,比如用户支付成功后,酒店系统将“订单信息”作为消息发送到Kafka主题,景区系统消费后更新票务库存,即使景区系统暂时不可用,支付流程不受影响。
分布式事务(Saga模式)通过一系列本地事务和消息通知,确保跨系统数据一致性:支付后酒店系统通知景区系统更新库存,若景区系统失败,触发补偿事务重试(指数退避,1s→2s→4s,最大3次),失败后人工干预。
3) 【对比与适用场景】:
| 概念 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| API网关 | 统一服务入口,处理请求路由、认证、限流、负载均衡 | 同步处理,实时响应,支持高并发 | 用户实时交互(查询、预订) | 需配置限流参数(令牌桶大小、速率),避免系统过载 |
| 消息中间件(Kafka) | 高吞吐、持久化的异步通信系统 | 异步处理,支持持久化、分区、副本 | 批量任务、系统解耦(如支付后通知其他系统) | 分区数(10分区,每个处理1000 TPS),副本因子(2,保证数据不丢失) |
| 分布式事务(Saga模式) | 通过本地事务+消息通知实现跨系统事务 | 最终一致性,补偿机制 | 跨系统数据一致性(如支付后库存同步) | 补偿事务触发条件(景区系统更新失败),重试策略(指数退避,最大3次) |
4) 【示例】:伪代码用户预订流程:
用户通过旅游平台发起预订请求:
/book?product=hotel&userId=123)。/hotels/book接口,获取价格、库存(实时响应)。hotel-order。hotel-order主题,消费消息后,调用景区票务系统/tickets/update接口,减少景区库存(本地事务)。5) 【面试口播版答案】:面试官您好,实现旅行社跟团游与酒店、景区系统的集成,核心方案是“API网关+消息中间件+分布式事务(Saga模式)”的混合架构。具体来说,API网关作为统一入口,处理用户实时预订请求,通过OAuth2.0认证用户身份,路由到酒店或景区系统,并实时返回价格、库存等结果;消息中间件(如Kafka)用于异步解耦,比如用户支付成功后,酒店系统将订单信息发送到Kafka,景区系统消费后更新票务库存,避免系统强依赖。为保障数据一致性,采用Saga模式:支付后酒店系统通知景区系统更新库存,若景区系统失败,通过补偿事务重试(指数退避,最大3次),失败后人工干预。高并发下,API网关用令牌桶限流(令牌桶大小1000,每秒100令牌),消息中间件配置10个分区(每个处理1000 TPS),确保系统稳定。挑战包括数据一致性、高并发性能、系统故障恢复,通过上述技术方案可有效解决。
6) 【追问清单】:
7) 【常见坑/雷区】: