
1) 【一句话结论】:采用分层架构,通过消息队列(如Kafka)解耦采集与处理,结合时序数据库(InfluxDB)存储原始数据,流处理框架(如Flink)实现实时分析,并配套离线批处理(Spark)和告警系统(Prometheus),确保数据高效流转与业务响应。
2) 【原理/概念讲解】:老师口吻,解释核心组件原理。
3) 【对比与适用场景】:
| 技术组件 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 消息队列(Kafka) | 分布式消息系统,提供高吞吐、低延迟的消息传输 | 基于日志存储,支持持久化;高并发写入;多消费者模式 | 数据采集层,缓冲设备数据,解耦采集与处理 | 需配置分区和消费者组,避免数据丢失 |
| 流处理框架(Flink) | 实时计算引擎,支持流式数据处理与状态管理 | 低延迟(毫秒级);支持状态计算;容错机制 | 实时分析(如实时告警、数据聚合) | 需合理配置并行度,避免资源浪费 |
| 时序数据库(InfluxDB) | 专为时间序列数据设计的数据库 | 高效的时间范围查询;支持聚合函数;支持写入高频率数据 | 存储传感器原始数据(如温度、压力) | 不适合存储结构化元数据 |
| 关系型数据库(MySQL) | 结构化数据存储 | 强一致性;支持复杂查询;事务支持 | 存储设备配置、状态表(如设备ID、位置、状态) | 查询时序数据效率低 |
4) 【示例】:
# 伪代码:设备数据生产
from kafka import KafkaProducer
producer = KafkaProducer(bootstrap_servers='kafka:9092')
for i in range(100):
data = {"device_id": "sensor_001", "timestamp": 1670000000+i, "temperature": 25+i%10}
producer.send('sensor_topic', value=data.encode('utf-8'))
producer.close()
# 伪代码:Flink流处理
from pyflink.datastream import StreamExecutionEnvironment
env = StreamExecutionEnvironment.get_execution_environment()
# 从Kafka读取数据
kafka_source = env.add_source(
KafkaSource(
bootstrap_servers='kafka:9092',
topic='sensor_topic',
value_deserializer=SimpleStringSchema()
)
)
# 解析数据
parsed = kafka_source.map(lambda x: json.loads(x))
# 实时聚合(如每5秒计算平均温度)
aggregated = parsed.key_by(lambda x: x['device_id'])
.time_window(5) # 5秒窗口
.aggregate(
lambda acc, cur: (acc[0] + cur['temperature'], acc[1] + 1),
lambda acc: (acc[0]/acc[1], acc[1])
)
# 输出到InfluxDB
influx_sink = InfluxDBSink(
url='http://influxdb:8086',
database='sensor_db',
write_options=WriteOptions().buffer_size(1000)
)
aggregated.connect(influx_sink).set_output_format(InfluxDBOutputFormat())
env.execute("Sensor Data Processing")
5) 【面试口播版答案】:
“面试官您好,针对航天设备监控平台的大规模数据采集、存储与实时分析,我的核心思路是采用分层架构,通过消息队列解耦采集与处理,结合时序数据库和流处理框架,确保数据高效流转与业务响应。具体来说,数据采集层我们选用了Kafka作为消息队列,它能缓冲设备数据并异步传输,避免设备与后端服务间的通信瓶颈;实时分析层采用Flink流处理框架,对Kafka中的数据流进行实时聚合、过滤,比如每5秒计算设备平均温度,并实时写入InfluxDB;同时,设备配置等结构化元数据存储在MySQL中,而原始时序数据用InfluxDB,因为时序数据库对时间范围查询更高效。实践中,我们通过配置Kafka的分区和消费者组,确保数据不丢失,Flink的并行度调整也优化了处理延迟,最终实现了毫秒级的实时告警和高效的数据存储。”
6) 【追问清单】:
7) 【常见坑/雷区】: