百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

车联网平台百万级消息吞吐架构设计|车联网系列专题 05

off999 2025-03-19 01:04 38 浏览 0 评论

前言

车辆在行驶过程中,会持续不断产生海量的消息,每一条通过车联网上报的数据都是非常珍贵的,其背后蕴藏着巨大的业务价值。因此我们构建的车辆 TSP 平台也通常需要拥有千万级主题和百万级消息吞吐能力。

传统的互联网系统很难支撑百万量级的消息吞吐。在本文中,我们将主要介绍如何针对百万级消息吞吐这一需求进行新一代车联网平台架构设计。

车联网场景消息吞吐设计的关联因素

车联网的消息分为上行下行

上行消息一般是传感器及车辆发出的告警等消息,把设备的信息发送给云端的消息平台。下行消息一般有远程控制指令集消息和消息推送,是由云端平台给车辆发送相应的指令。

在车联网消息吞吐设计中,我们需要重点考虑以下因素:

消息频率

车在行驶过程中,GPS、车载传感器等一直不停地在收集消息,为了收到实时的反馈信息,其上报接收的消息也是非常频繁的。上报频率一般在 100ms-30s 不等,所以当车辆数量达到百万量级时,平台就需要支持每秒百万级的消息吞吐。

消息包大小

整个消息包大小一般在 500B 到几十 KB 不等。当大量消息包同时上报时,需要车联网平台拥有更强的接收、发送大消息包的能力。

消息延时

车辆在行驶过程中,消息数据只能通过无线网络来进行传输。在大部分车联网场景下,对车辆的时延要求是 ms 级别。平台在满足百万级吞吐条件下,还需要保持低延时的消息传输。

Topic 数量和层级

在考虑百万级消息吞吐场景时,还需要针对消息 Topic 数量和 Topic 树层级进行规范设计。

Payload 编解码

当消息包比较大的时候,需要重点考虑消息体的封装。单纯的 JSON 封装在消息解析时不够高效,可以考虑采用 Avro、Protobuf 等编码格式进行 Payload 格式化封装。

对于百万级消息吞吐场景,基于 MQTT 客户端共享订阅消息或通过规则引擎实时写入关系型数据库的传统架构显然无法满足。

目前主流的架构选型有两种:一种是消息接入产品/服务+消息队列(Kafka、Pulsar、RabbitMQ、RocketMQ 等),另外一种是消息接入产品/服务+时序数据库(InfluxDB、TDengine、Lindorm 等)来实现。

接下来我们将基于上述的关联因素和客户案例的最佳实践,以云原生分布式物联网消息服务器 EMQX 作为消息接入层,分别介绍这两种架构的实现方式。

EMQX+Kafka 构建百万级吞吐车联网平台

架构设计

Kafka 作为主流消息队列之一,具有持久化数据存储能力,可进行持久化操作,同时可通过将数据持久化到硬盘以及 replication 防止数据丢失。后端 TSP 平台或者大数据平台可以批量订阅想要的消息。

由于 Kafka 拥有订阅发布的能力,既可以从南向接收,把上报消息缓存起来;又可以通过北向的连接,把需要发送的指令通过接口传输给前端,用作指令下发。

我们以 Kafka 为例,构建 EMQX+Kafka 百万级吞吐车联网平台:

  • 前端车机的连接与消息可通过公有云商提供的负载均衡产品用作域名转发,如果采用了 TLS/DTLS 的安全认证,可在云上建立四台 HAProxy/Nginx 服务器作为证书卸载和负载均衡使用。
  • 采用 10 台 EMQX 组成一个大集群,把一百万的消息吞吐平均分到每个节点十万消息吞吐,同时满足高可用场景需求。
  • 如有离线离线/消息缓存需求,可选用 Redis 作为存储数据库。
  • Kafka 作为总体消息队列,EMQX 把全量消息通过规则引擎,转发给后端 Kafka 集群中。
  • 后端 TSP 平台/OTA 等应用通过订阅 Kafka 的主题接收相应的消息,业务平台的控制指令和推送消息可通过 Kafka/API 的方式下发到 EMQX。

引用或分隔线

在这一方案架构中,EMQX 作为消息中间件具有如下优势,可满足该场景下的需求:

  • 支持千万级车辆连接、百万级消息吞吐能力。
  • 分布式集群架构,稳定可靠,支持动态水平扩展。
  • 强大的规则引擎和数据桥接、持久化能力,支持百万级消息吞吐处理。
  • 拥有丰富 API 与认证等系统能顺利对接。

百万吞吐场景验证

为了验证上述架构的吞吐能力,在条件允许的情况下,我们可以通过以下配置搭建百万级消息吞吐测试场景。压测工具可以选用 Benchmark Tools、JMeter 或 XMeter 测试平台。共模拟 100 万设备,每个设备分别都有自己的主题,每个设备每秒发送一次消息,持续压测 12 小时。

压测架构图如下:

性能测试部分结果呈现:

EMQX 规则引擎中可以看到每个节点速度为 10 万/秒的处理速度,10 个节点总共 100 万/秒的速度进行。

在 Kafka 中可以看到每秒 100 万的写入速度,并且一直持续存储。

EMQX+InfluxDB 构建百万级吞吐车联网平台

架构设计

采用 EMQX+ 时序数据库的架构,同样可以构建百万级消息吞吐平台。在本文我们以 InfluxDB 时序数据库为例。

InfluxDB 是一个高性能的时序数据库,被广泛应用于存储系统的监控数据、IoT 行业的实时数据等场景。它从时间维度去记录消息,具备很强写入和存储性能,适用于大数据和数据分析。分析完的数据可以提供给后台应用系统进行数据支撑。

此架构中通过 EMQX 规则引擎进行消息转发,InfluxDB 进行消息存储,对接后端大数据和分析平台,可以更方便地服务于时序分析。

  • 前端设备的消息通过云上云厂商的负载均衡产品用作域名转发和负载均衡。
  • 本次采用 1 台 EMQX 作为测试,后续需要时可以采用多节点的方式,组成相应的集群方案(测试 100 万可以部署 10 台 EMQX 集群)。
  • 如有离线离线/消息缓存需求,可选用 Redis 作为存储数据库。
  • EMQX 把全量消息通过规则引擎转发给后端 InfluxDB 进行数据持久化存储。
  • 后端大数据平台通过 InfluxDB 接收相应的消息,对其进行大数据分析,分析后再通过 API 的方式把想要的信息传输到 EMQX。

场景验证

如测试架构图中所示,XMeter 压力机模拟 10 万 MQTT 客户端向 EMQX 发起连接,新增连接速率为每秒 10000,客户端心跳间隔(Keep Alive)300 秒。所有连接成功后每个客户端每秒发送一条 QoS 为 1、Payload 为 200B 的消息,所有消息通过 HTTP InfluxDB 规则引擎桥过滤筛选并持久化发至 InfluxDB 数据库。

测试结果呈现如下:

单台 EMQX 服务器实现了单台服务器 10 万 TPS 的消息吞吐持久化到 InfluxDB 能力。参考 EMQX+Kafka 架构的测试场景,将 EMQX 的集群节点扩展到 10 台,就可以支持 100 万的 TPS 消息吞吐能力。

结语

通过本文,我们介绍了车联网场景消息吞吐设计需要考虑的因素,同时提供了两种较为主流的百万级吞吐平台架构设计方案。面对车联网场景下日益增加的数据量,希望本文能够为相关团队和开发者在车联网平台设计与开发过程中提供参考。

相关推荐

华硕电脑蓝屏怎么修复(华硕蓝屏怎么办)

华硕电脑蓝屏恢复的方法如下:安全模式进入系统。重启电脑后,连续按下F8键直至出现启动选项界面,选择安全模式进入系统,若此时能够正常运行,说明问题可能是由于软件冲突引起的。检查驱动程序兼容性。过于陈旧或...

win10教育版怎么改成专业版(win10最稳定三个版本)

一、首先,点击Windows10“开始”菜单,找到电脑应用列表,二、然后,在应用列表中找到“Windows系统”文件夹中找到“命令提示符”,点击打开。三、然后,系统跳转到“命令提示符”窗口。四、然后,...

ps下载官网(ps官网免费下载)

要从Adobe官网下载AdobePhotoshop(PS),可以按照以下步骤进行:1.打开网页浏览器,进入Adobe官网的主页。网址是:https://www.adobe.com。2.在网页的顶...

hiwifi极路由登录(hiwifi极路由设置)
  • hiwifi极路由登录(hiwifi极路由设置)
  • hiwifi极路由登录(hiwifi极路由设置)
  • hiwifi极路由登录(hiwifi极路由设置)
  • hiwifi极路由登录(hiwifi极路由设置)
连wifi就能打电话的软件(无卡用wifi打电话)

我的手机是安卓2.2系统所有这里只针对Android2.2系统其他系统版本的朋友可以试一试需要一款拨号软件:PPPOE拨号软件;而拨号软件必须要获得root权限(管理权限)才能拨号;下载安装这...

wifi优化大师下载(wifi优化软件)

1.设定-应用程序管理器-已下载-单击需要卸载的软件-卸载。2.点击最近应用程序键-进入任务管理器-已下载-点击""""卸载""""。3...

无网络单机游戏(好玩的无网络单机游戏)

一款能够让我们自由畅快的进行游戏的合集软件。在这个合集之中有着各种各样的单机小游戏。这些小游戏不需要联网就可以玩了,没有防沉迷系统,我们想玩多久就玩多久,合集之中小游戏的类型有很多种,有赛车类、射击类...

笔记本电脑推荐理由(推荐笔记本子)

配置落后散热出现问题是笔记本报废的主要原因因为旧电脑问题很多。一是现在新电脑价格不算贵,没必要用旧的,电脑可不兴新不如旧的说法;二是二手电脑是否大修过,是否有什么瑕疵,是否运行速度有问题,是否被人监控...

tplink设置向导(tp link路由器的设置向导)

tplink路由器首次设置时才会自动弹出向导,如果希望自动弹出,可先还原出厂设置,然后再登录即可自动弹出,还原出厂设置步骤如下:  1、路由器开启电源;  2、按下路由器表面的reset复位按钮,个别...

破解苹果激活锁的万能id(破解iphone id激活锁软件)

提前打开我的AppleID界面,点击管理您的账户。点击忘记AppleID,填写与AppleID相关的各项基本信息。通过电子邮件内的链接或回答安全问题,或者进行人工破解。1、登陆苹果官网,点击下面...

手机上不了wifi是什么原因(手机上不了网连不了wifi)

1.手机wifi已连接不可上网问题出现后首先检测一下是否为手机本身突发性的问题,可以进行关机重启一下再连接看是否还会出现这样的情况。或者使用其他手机或设备连接WiFi试试能否上网。2.如果不是手机的问...

桌面图标大小设置(怎么修改桌面图标大小设置)
  • 桌面图标大小设置(怎么修改桌面图标大小设置)
  • 桌面图标大小设置(怎么修改桌面图标大小设置)
  • 桌面图标大小设置(怎么修改桌面图标大小设置)
  • 桌面图标大小设置(怎么修改桌面图标大小设置)
win10有产品id没有密钥(win10 我没有产品密钥)

WIN10,在左下角输入WINDOWSPOWERSHELL,然后点击系统查询结果第一项,在弹出的窗口中输入:(Get-WmiObject-query‘select*fromSoftware...

win10截屏后找不到了(win10截屏后找不到了怎么办)

Win10系统截屏后没有更新通知并不是一个常见的问题。可能是由于系统设置或者安装的软件造成的。如果系统设置为静音或者禁用通知,那么截屏后不会有通知。另外,一些截屏软件可能会阻止系统通知,需要手动设置...

微软官网win10家庭版下载(微软官网win10家庭版下载速度慢)
  • 微软官网win10家庭版下载(微软官网win10家庭版下载速度慢)
  • 微软官网win10家庭版下载(微软官网win10家庭版下载速度慢)
  • 微软官网win10家庭版下载(微软官网win10家庭版下载速度慢)
  • 微软官网win10家庭版下载(微软官网win10家庭版下载速度慢)

取消回复欢迎 发表评论: