
1) 【一句话结论】:采用分层分布式架构,结合边缘计算、低延迟消息队列(Kafka)、微服务拆分与数据库分片,确保百万级车辆接入下信号灯控制延迟低于200ms,高并发处理能力达10万+QPS,并通过多数据中心容灾保障系统7×24小时可用。
2) 【原理/概念讲解】:老师解释系统分层。感知层:车辆OBU(车载单元)采集位置、速度等数据,摄像头识别车辆类型、数量;网络层:5G/LoRa将数据传输至边缘节点(如路侧单元RSU),再通过MQTT/Kafka推送到平台层;平台层:数据中台存储原始数据,计算平台(如Flink)实时计算流量,应用层(控制逻辑、可视化)决策;数据流:车辆数据→边缘节点→消息队列→计算平台→应用层→信号灯控制。高并发应对:负载均衡(Nginx)分发请求,微服务拆分(控制服务、数据服务、可视化服务),Redis缓存热点数据(如当前路口流量),数据库按区域分片(如每个城市按区域ID分片,分片键为city_id+area_id,避免热点);容灾:多数据中心(主备),数据同步(MySQL主从+RDS,分片后数据同步),故障时通过ZooKeeper保存信号灯状态,容灾切换时快速恢复状态(延迟<1秒)。类比:感知层像眼睛,网络层像神经,平台层像大脑,应用层像手,各层解耦,大脑快速处理信息后指挥手(控制信号灯)。
3) 【对比与适用场景】:消息队列(Kafka)与数据库(MySQL)在实时数据流处理中的对比:
| 特性 | 消息队列(Kafka) | 数据库(MySQL) | 使用场景 | 注意点 |
|---|---|---|---|---|
| 定义 | 分布式消息系统,高吞吐、低延迟 | 关系型数据库,事务强 | 实时数据流处理、解耦 | 需要消费端确认,写入延迟低 |
| 特性 | 持久化、高吞吐(百万级)、异步 | 事务一致、支持复杂查询 | 结构化数据存储、事务 | 写入延迟高,高并发下分片 |
| 使用场景 | 车辆数据实时传输、计算平台消费 | 存储计算后的控制规则、历史数据 | 实时计算流量 | 数据库写入延迟可能影响控制延迟 |
| 注意点 | 需要消费端确认消息,避免数据丢失 | 写入延迟影响实时性,需分片 |
4) 【示例】:
{
"vehicle_id": "V001",
"timestamp": "2023-10-27T10:00:05Z",
"lat": 39.9042,
"lon": 116.4074,
"speed": 58,
"direction": "N",
"camera_id": "C001"
}
# 边缘节点代码(RSU)
def send_to_mq(data):
kafka_producer.send("vehicle_stream", value=data, partition_key=data["lat"].encode())
# Flink计算5分钟内每个路口的流量
data_stream = KafkaSource("vehicle_stream")
windowed_stream = data_stream
.keyBy("lat", "lon")
.window(TumblingProcessingTimeWindow.of("5min"))
.sum("speed")
windowed_stream.print()
def adjust_signal_light(area, flow):
# 从Redis获取热点数据(如当前流量)
hot_flow = redis.get(f"area_{area}_flow")
if flow > 100 and hot_flow is None: # 流量超阈值且热点缓存无
return {"phase": "red", "duration": 30} # 红灯延长
else:
return {"phase": "green", "duration": 25}
5) 【面试口播版答案】:面试官您好,针对百万级车辆接入的智慧交通信号灯控制系统,我设计的方案核心是分层分布式架构,结合边缘计算、低延迟消息队列(Kafka)、微服务拆分与数据库分片,确保信号灯控制延迟低于200ms,高并发处理能力达10万+QPS。系统分为感知层(车辆OBU、摄像头)、网络层(5G/LoRa)、平台层(数据中台+计算平台)和应用层(控制应用+可视化)。数据流方面,车辆数据通过边缘节点采集后,经MQTT/Kafka推送到计算平台(Flink)实时计算流量,应用层根据规则调整信号灯。高并发通过Nginx负载均衡分发请求,微服务拆分(控制服务、数据服务),Redis缓存热点数据(如当前路口流量),数据库按区域分片(city_id+area_id)处理海量数据。容灾采用多数据中心(主备),数据同步(MySQL主从+RDS),并通过ZooKeeper保存信号灯状态,容灾切换时快速恢复(延迟<1秒),保障系统7×24小时可用。这样能支撑百万级接入,保证低延迟和高可用。
6) 【追问清单】:
7) 【常见坑/雷区】: