
1) 【一句话结论】:采用分层架构(设备-边缘-传输-处理-存储-应用),结合物联网设备、边缘计算、消息队列(如Kafka)和分布式数据库(如时序数据库InfluxDB),确保实时采集设备状态、原料批次信息,并通过消息队列同步至中央数据库和电商平台,同时通过最终一致性保障数据一致性。
2) 【原理/概念讲解】:系统分为五个核心层:
3) 【对比与适用场景】:
数据传输方式对比(MQTT vs HTTP vs WebSocket):
| 传输方式 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| MQTT | 发布-订阅协议,轻量、低带宽 | 支持QoS(0/1/2),保证消息可靠,适用于设备端 | 物联网设备(传感器),需要低功耗、低带宽 | 需要broker,消息格式简单(JSON) |
| HTTP | 请求-响应协议,通用 | 适用于需要状态管理、复杂请求的场景 | Web应用、API调用 | 请求-响应模式,可能产生延迟 |
| WebSocket | 基于TCP的双向通信 | 实时双向通信,低延迟 | 实时聊天、实时数据推送 | 需要握手,适用于需要实时交互的场景 |
数据一致性保障方案对比(最终一致性 vs 强一致性):
| 方案 | 定义 | 特性 | 适用场景 | 注意点 |
|---|---|---|---|---|
| 最终一致性 | 系统最终所有副本数据一致 | 非实时,但保证最终一致 | 大规模分布式系统,对实时性要求不高 | 需要时间窗口,可能存在短暂不一致 |
| 强一致性 | 系统所有副本数据实时一致 | 实时,但可能牺牲性能 | 需要实时数据同步的场景(如金融、实时监控) | 可能导致系统复杂,延迟较高 |
4) 【示例】:数据采集与传输伪代码(设备端):
# 设备端(传感器)伪代码
import paho.mqtt.client as mqtt
import json
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe("device/temperature")
def on_message(client, userdata, msg):
data = json.loads(msg.payload.decode())
# 过滤异常值(如温度>50℃)
if data['temperature'] > 50:
print("异常温度,跳过")
return
# 发布到边缘节点(或Kafka)
client.publish("edge/temperature", json.dumps(data))
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("edge-broker", 1883, 60)
client.loop_forever()
边缘节点处理并转发到Kafka:
# 边缘节点(Kafka生产者)伪代码
from kafka import KafkaProducer
import json
producer = KafkaProducer(bootstrap_servers=['kafka-broker:9092'], value_serializer=lambda v: json.dumps(v).encode('utf-8'))
def send_data(data):
topic = "production-data"
producer.send(topic, data)
producer.flush()
# 消费者(应用服务)伪代码
from kafka import KafkaConsumer
import json
consumer = KafkaConsumer(
'production-data',
bootstrap_servers=['kafka-broker:9092'],
value_deserializer=lambda m: json.loads(m.decode('utf-8'))
)
for message in consumer:
data = message.value
# 写入数据库并同步电商平台
save_to_db(data)
call_eshop_api(data)
5) 【面试口播版答案】:各位面试官好,针对卫龙生产车间的自动化监控系统设计,我考虑采用分层架构,结合物联网设备、边缘计算和消息队列。首先,设备层部署温度、湿度传感器和产量计数器,通过4G/5G连接;边缘层节点负责本地预处理,缓存数据;传输层用Kafka作为消息队列,设备通过MQTT推送数据到边缘节点,再发布到Kafka主题;处理层应用服务消费数据,写入中央数据库(如MySQL)和时序数据库(如InfluxDB),同时同步到电商平台后台。数据一致性通过最终一致性保障,确保系统高可用,支持实时监控和预警。
6) 【追问清单】:
7) 【常见坑/雷区】: