
1) 【一句话结论】:针对双11千万级TPS的支付清算系统,设计采用“分布式负载均衡+多级缓存(Redis)+数据库读写分离+异地多活(MySQL Group Replication)+业务级幂等性处理”的高可用、高并发架构,通过负载均衡分散请求、缓存减少数据库压力、数据库读写分离提升读性能、异地容灾保障跨区域故障,同时结合事务一致性、幂等性等业务逻辑,确保系统在高并发下稳定运行。
2) 【原理/概念讲解】:老师口吻解释:
3) 【对比与适用场景】:
| 组件 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 负载均衡(Nginx) | 七层负载均衡器,支持HTTP/HTTPS | 支持会话保持、健康检查、upstream权重 | Web层请求分发,需配置复杂 | 需监控健康状态,避免故障节点接收请求 |
| 负载均衡(LVS) | 四层负载均衡器,IP虚拟化 | 高性能,低延迟,内核实现 | 大流量TCP/UDP请求 | 需内核支持,配置复杂,对系统要求高 |
| 缓存(Redis) | 内存数据库,支持RDB/AOF | 高并发读写,数据结构丰富(Hash/List/Set等),持久化 | 高频读场景(如商品信息、用户会话) | 需合理内存管理,数据过期策略(如分片过期) |
| 缓存(Memcached) | 纯内存缓存 | 简单,仅缓存,无持久化 | 读多写少,轻量场景 | 数据丢失,无持久化,适合临时缓存 |
| 数据库(MySQL主从复制) | 主库写,从库异步复制 | 异步复制,提升读性能,保证数据一致性 | 读多写少场景(如查询订单) | 延迟问题,需结合缓存缓解 |
| 数据库(MySQL Group Replication) | 异步多主复制 | 多活架构,跨区域故障时服务不中断 | 高可用,跨区域场景 | 需GTID,处理复制延迟,数据一致性妥协 |
| 数据库(分布式事务,如TCC) | 分布式事务协调 | 保证跨服务数据一致性 | 事务一致性要求高的场景(如支付扣款与状态更新) | 实现复杂,性能开销大 |
4) 【示例】请求处理流程(伪代码):
用户发起支付请求 → Nginx负载均衡(upstream权重1:1,健康检查存活时间10秒)→ 应用服务器集群
应用服务器处理:
1. 幂等性检查:根据订单号查询Redis(key=order_id),若存在状态(如“已支付”),直接返回成功。
2. 若未命中,从Redis获取商品信息(key=product_id),若缓存未命中,查询MySQL从库(SELECT * FROM product WHERE id=product_id)。
3. 从库返回后,写入Redis(SET key value EX 3600)并更新MySQL主库(INSERT INTO payment (order_id, amount, status) VALUES (order_id, amount, 'pending'),binlog row模式,异步复制)。
4. 执行扣款逻辑(调用银行接口),扣款成功后更新状态(UPDATE payment SET status='success' WHERE id=...),并推送消息到消息队列(如Kafka)。
5. 消息队列处理:消费者确认后,更新订单状态(Redis SET order_status 'paid')。
异地容灾处理:
若主机房故障,负载均衡切换到容灾中心服务器,从容灾中心数据库读取数据(Group Replication同步),应用服务器从容灾中心Redis获取数据。
缓存雪崩应对:
Redis缓存过期时间分片(如每分钟不同时间点过期),双11前通过爬虫/后台任务预热缓存(将热门商品数据加载到Redis)。
数据库延迟应对:
应用服务器在事务提交后,等待从库ACK(如MySQL半同步复制),或引入本地缓存+补偿机制(消息队列确认最终一致性)。
5) 【面试口播版答案】(约90秒):
“面试官您好,针对双11千万级TPS的支付清算系统,我设计的高可用、高并发架构核心是采用分布式负载均衡+多级缓存(Redis)+数据库读写分离+异地多活(MySQL Group Replication)+业务级幂等性处理。首先,负载均衡层用Nginx七层调度,配置upstream权重1:1,并开启健康检查(存活时间10秒),将请求分发到多台应用服务器集群,避免单点过载。应用层引入Redis作为二级缓存,设置maxmemory 1G,缓存商品信息、用户会话等高频数据,缓存过期时间分片(每分钟不同时间点),双11前通过爬虫预热热门数据。数据库层采用MySQL主从复制+读写分离,主库处理写请求(扣款、状态更新),从库处理读请求,提升读性能;同时部署异地容灾中心,通过Group Replication实现多活,跨区域故障时服务不中断。业务上,通过订单号检查Redis状态实现幂等性(若已支付则返回成功,否则执行扣款),结合消息队列确认最终一致性。系统还配置熔断降级(Hystrix)应对服务雪崩,限流组件(令牌桶)控制请求速率,监控用Prometheus+Grafana实时监控QPS、响应时间、缓存命中率等指标。整体架构通过负载均衡分散请求、缓存减少数据库压力、数据库读写分离提升性能、异地容灾保障高可用,确保系统在高并发下稳定运行。”
6) 【追问清单】:
7) 【常见坑/雷区】: