很多团队会把车联网平台当成一个“物联网平台”来做,等到上线之后才发现,事情并没有那么简单。

几十万台车同时在线、每个业务域都在上报数据、远程控车指令要尽快回到车端、数据监管对存储和出境又严格限制——这样的系统,高并发只是入场门票,低时延才是硬骨头,而数据合规会从架构层面卡住你。这篇文章想把这几个问题拆开看,讨论车联网平台架构设计中真正的约束在哪里,以及它们之间如何相互影响。
高并发接入:车联网的“高并发”和 Web 系统不一样
车联网的高并发,不只是“请求量大”。Web 系统的高并发是大量短链接请求,扛住 QPS 就差不多;车联网的高并发是海量设备保持长连接,每辆车长时间在线,持续上报状态。系统要关心的不只是吞吐量,还有连接数、心跳、离线重连、网络抖动。一个十万级车队的平台,在线连接数可能远高于常规 Web 系统的峰值请求数。
很多团队在早期会踩一个坑:为了快速上线,直接暴露 HTTP 接口接收车辆上报。车辆规模小的时候没问题,等到数量起来,每条上报都要建立连接,连接池占用严重,网络抖动时大量重连可能把接入层打满。这时再切到 MQTT,几乎等于重做接入层。所以协议选型最好是前置,而不是等容量顶不住了再改。
更麻烦的一点是车辆会移动。一辆车从上海开到南京,沿途可能要切换好几处接入节点。如果网关设计成“同一辆车必须由某个固定实例处理”,每次切换都要做会话迁移,延迟和失败率都会上升。好的做法是让接入网关尽量无状态,把必要会话信息放到外部存储,或者在协议层允许设备平滑重连。
即使选对了协议,消息规划也得认真做。MQTT 本身支持发布订阅和 QoS 分级,但所有消息都往一个主题里塞,反而会把不同特性揉在一起。高频遥测可以容忍少量丢失,控制指令必须可靠到达,关键事件需要精确记录,这三类消息放在同一个通道里,必然互相影响。可以按消息类型拆分成不同主题,再配合不同 QoS 策略,让互不干扰的数据走各自的通道。
下面是一个简化版的消息分流思路,方便说明“不同消息进不同通道”这件事:
# 按消息类型分流,避免互相挤占通道
def route(vehicle_id, message):
if message.type == "telemetry":
deliver("topic/telemetry", message, qos=0) # 高频遥测,可容忍少量丢失
elif message.type == "command":
deliver("topic/command", message, qos=2) # 控制指令,必须可靠
elif message.type == "event":
store(vehicle_id, message) # 关键事件,走精准存储
else:
append_to_batch(message, "raw/logs") # 低频日志,批量入湖
如果这一步没做好,一旦出现大量车辆同时上报的突发流量,比如早高峰或路段拥堵,高频遥测数据很容易挤占控制指令的通道,造成指令下发延迟甚至积压。高并发的核心不是“能收多少数据”,而是“当不同优先级的数据同时涌来时,系统还能不能保证关键消息及时通过”。
低时延:真正的瓶颈在链路,而不只在服务器
低时延需求在车联网里无处不在:远程空调、远程寻车、遥控泊车,以及部分辅助驾驶相关指令。很多指令的端到端允许时间很短,云端处理时间其实只占其中一小部分,大头经常在网络传输和车端协议栈。这就是为什么单靠把云端服务优化到极致,并不能解决低时延问题。
算一笔很粗的账:假设车到云网络一跳 50ms,云处理 10ms,云到车再一跳 50ms,这就是 110ms,还没有算车端内部处理。如果车辆在弱网区域,或连接到较远的中心节点,延迟会更高。对于百毫秒量级的控制目标,这种物理延迟已经是很重的负担。靠堆机器或换语言框架,根本弥补不了。
边缘计算因此成为低时延场景的必需品。比较常见的做法是在区域级或路侧机房部署边缘节点,让车辆数据先在本地区域内完成实时处理,再决定是否把数据同步到中心云。边缘节点处理两类任务:一类是本地指令闭环,不经过中心云;另一类是高频数据的聚合和清洗,减少中心云压力,同时保留一段时间的原始数据供审计和回溯。
边缘节点通常会跑一套规则引擎,把本地要处理的指令和需要上送的遥测分开。下面是一个简化配置:
# 边缘消息路由示例
rules:
- name: local_control_fast_path
when:
topic: "vehicle/+/command"
region: "华东"
action: "route_to_edge_command_queue"
- name: telemetry_aggregate
when:
topic: "vehicle/+/telemetry"
interval: 5s
action: "window_aggregate_and_send"
但边缘计算并不等于把云端服务原样搬到边缘。边缘节点的算力和存储有限,不能承载全量业务。更合适的做法是,把规则引擎、小范围实时计算、本地缓存放到边缘,而把用户画像、全量历史、模型训练这些任务留在中心云。这个取舍需要根据业务场景去平衡,不能为了“看起来先进”硬上。
这里有一个架构上的天然矛盾:高并发要求中心化,以便用更大集群处理负载;低时延要求分布化,以便更靠近终端车辆。两者不是单纯叠加的关系,而是一个权衡。如果平台规模不大、时延要求没那么严,一开始就上边缘计算,反而会让运维复杂度和成本明显上升。
下面的表格总结了两种主流架构路线在关键维度上的差异,可以结合自己的场景参考:
| 维度 | 中心云集中式架构 | 边缘云协同架构 |
|---|---|---|
| 典型时延 | 较高,依赖物理链路 | 本地指令时延明显降低 |
| 高并发处理 | 需要大带宽和集中扩容 | 边缘聚合后中心压力变小 |
| 数据合规 | 集中存储便于统一审计 | 支持本地留存,但审计分散 |
| 运维复杂度 | 相对简单 | 大量边缘节点需要版本管理和监控 |
| 适用阶段 | 小规模试点、车队管理 | 大规模接入、低时延、出海合规 |
数据合规:从技术细则到架构约束
车联网涉及的数据种类很多:车辆位置、驾驶员身份、驾驶行为、车辆状态、车内摄像头画面、外部道路环境。这些数据在不同国家和地区的监管框架下,重要性和敏感程度都不一样。和通用互联网业务相比,汽车行业的数据合规约束明显更复杂,因为数据一旦进入车辆场景,就往往和个人信息甚至国家安全产生关联。
一个常见误区是:只要做了字段加密、做了脱敏,就算满足合规。实际上,加密和脱敏只是技术手段,合规关注的是整个数据使用链条。一条位置数据从采集、传输、存储、查询、共享到删除,每个环节是否都有依据,是否遵循最小化原则,是否留下处理日志,这些问题都要在架构里回答。
比如车辆轨迹数据如果无限期保留,将来做数据安全评估时,很难证明自己符合数据留存的可控性要求。比较基础的做法,是在数据接入层就对不同数据类型设置生命周期策略,例如:
- 原始轨迹数据:按当地法规要求保留,过期聚合或删除;
- 高频遥测数据:原始明细短期保留,聚合结果作为长期数据;
- 车辆与用户关联数据:分离存储,访问时通过接口做受控关联。
跨境合规是另一个容易让架构调整的方案。如果车企要进入海外市场,数据本地化存储往往不是运维部署问题,而是架构设计初期就要定下来的底线。比如在几个大区分别部署独立资源,让每个区域的数据只在本区域内闭环。等到系统上线后再想处理,成本会高出一个量级。
实际项目中经常出现一种被动情况:平台已经上线几个月,审计方来问“你们每一类数据都存在哪个地方?谁能访问?保留多久?”结果团队需要花好几个星期去梳理系统,甚至有些数据的流向根本无法还原。如果一开始就画清楚数据流图,并把数据分级映射到存储和接口设计里,这件事会轻松很多。
所以数据合规并不是安全部门“加几个权限”就行,它是一个架构层面的约束。接入层要能识别数据类型并打标,存储层要能支持分级和生命周期,接口层要能控制越权访问,审计日志要能追踪到每一次敏感数据的处理。这些能力一旦缺失,后面很难补。
落地思路:把三个问题放在同一张图上
如果上面这些内容都看完了,回到实际设计,建议不要直接照搬某个参考架构,也不要盲目选最新的技术栈。先按下面的路径走一轮,大概率比直接写代码要有用:
- 梳理业务数据流:把车辆产生的所有数据列出来,标出实时性要求、数据敏感等级和保留周期;
- 确定延迟目标:区分哪些操作必须在本地闭环,哪些可以接受中心云往返,这决定了边缘节点的覆盖范围;
- 选择接入层方案:以车况上报为主,优先考虑 MQTT 这类长连接消息网关,而不是暴露 HTTP;控制指令还要设计应用层确认机制;
- 设计数据存储分层:指令类、遥测类、日志类分开存储,并配置不同生命周期;
- 把合规要求映射到技术能力:数据分级、加密、脱敏、审计日志,作为平台的默认能力,而不是后期补丁。
这套思路的价值,在于把高并发、低时延、数据合规放到同一个决策模型里。比如高并发接入方案会影响时延目标,边缘节点部署位置会影响数据本地化,而数据分级又决定了存储选型和访问控制。任何一个点单独优化,都可能破坏另外两个点的目标。
还有一个容易被忽视的问题:团队经常把高并发、低时延、数据合规拆给不同小组分别负责。结果接入层自己优化了一套,边缘团队又另建了一套体系,安全团队再部署一套审计工具,最后三套系统之间的数据流转完全对不上。车联网平台架构设计需要有一个全局负责人,或者至少有一份全局的数据流图,否则这三个挑战会各自形成孤岛,最终在验收时爆发为一个更大的问题。
车联网平台架构设计没有标准答案。不同阶段的车队规模、车型品类、业务区域,会得到完全不同的架构。重要的是先明确业务的延迟要求、数据合规边界和并发预期,然后在这些约束之间找平衡。希望这篇文章能把“三重挑战”背后的关系说清楚,下一次做技术决策时,至少知道自己在权衡什么。
原创文章,作者:fudengji,如若转载,请注明出处:https://fudengji.cn/article/624/