
1) 【一句话结论】
采用“微服务拆分+分布式消息队列削峰+多级负载均衡+异地多活容灾”的架构,通过消息队列解耦处理高峰流量,结合负载均衡实现流量分发,并部署容灾中心保障业务连续性,核心是“削峰+解耦+弹性+容灾”四维保障。
2) 【原理/概念讲解】
3) 【对比与适用场景】
负载均衡策略对比:
| 策略 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 轮询(Round Robin) | 按顺序分配请求到后端实例 | 简单,流量均匀 | 新建服务时流量均衡 | 实例性能差异导致负载不均 |
| IP哈希(IP Hash) | 根据请求IP哈希固定分配实例 | 会话粘性 | 需要用户状态保持的业务 | 实例故障时用户请求失败 |
| 加权轮询(Weighted Round Robin) | 根据实例权重分配流量 | 考虑性能差异 | 实例性能差异大的场景 | 需准确评估实例权重 |
| 源IP哈希(Source IP Hash) | 根据客户端IP哈希分配实例 | 会话粘性 | 需要用户状态保持的业务 | 实例故障时用户请求失败 |
消息队列选择对比:
| 消息队列 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| Kafka | 分布式发布-订阅系统 | 高吞吐、持久化、可扩展 | 实时数据流处理、日志收集 | 需存储大量消息,适合持久化场景 |
| RabbitMQ | 企业级消息队列 | 可靠、灵活、支持多种协议 | 应用间解耦、任务队列 | 需管理消息生命周期,避免积压 |
| RocketMQ | 阿里巴巴分布式消息系统 | 高吞吐、低延迟、可靠 | 微服务解耦、日志传输 | 适合高并发、低延迟场景 |
4) 【示例】
{
"order_id": "20231026123456",
"container_id": "CTN-001",
"operation": "装卸",
"port": "Dalian Port",
"timestamp": "2023-11-11T12:00:00Z"
}
5) 【面试口播版答案】
“面试官您好,针对港口高峰期每秒10万+装卸指令的处理需求,我设计的系统架构核心是采用‘微服务拆分+分布式消息队列削峰+多级负载均衡+异地多活容灾’的组合方案。首先,通过微服务将系统拆分为指令接收、解析、调度、执行等模块,降低单点压力。然后,引入Kafka作为消息队列,将所有指令先写入队列,消费者按需消费,实现流量削峰,避免系统直接处理10万+/s的突发流量。负载均衡方面,采用API网关(Nginx)+LVS的架构,将请求分发到多个后端实例,高峰期可动态扩容实例。容灾上,部署异地多活数据中心,主数据中心(大连)处理业务,备份数据中心(如北京)实时同步数据,当主数据中心故障时,备份中心自动接管,保证业务连续性。这样既能应对高峰流量,又能保障系统高可用。”(约80秒)
6) 【追问清单】
7) 【常见坑/雷区】