车联网云平台解决方案
资本开始砸钱在v2x(Vehicle to everything), 5G, IPV6也来了, 是时候一起探讨下物联网了。
1.通用物联网架构
参考下阿里云的架构
IotHub可以认为是设备接入的网关, 采集频率高的设备可以用长连接保持心跳(MQTT,HTTP/2等), 频率低的用http/1.1也OK。
通信想安全些就用TLS,设备认证可能用些硬件设备编号,或者物联网平台支持的一物一码, 用AES,RSA/EC/国密加解密传输数据, 不过RSA等速度不会快,数据不敏感可用哈希签名加个时间戳,确保数据传输时效性和安全。
从数据库获取设备信息慢些就加个redis缓存热点数据。
阿里云的规则引擎主要用SQL提取JSON请求数据中的字段, 蛮傻瓜化的代码都不用写两行。不过如果为了减少传输用protobuf串行化, 那怎么搞,阿里云是默认用JSON, 用阿里云就按照它的规矩定义请求数据了。
最后就是数据转发和透传到阿里云其它云组件, 例如直接到关系型数据库RDS, MQ, 或者流处理引擎, 这个具体应该要看业务场景, 车联网这种最好分发到MQ.
2. 车联网的挑战
2.1海量数据, 高并发, 高实时。数据包括车辆状态信息,位置信息,周围环境感知,人车行为数据等,如果要支持自动驾驶,数据只会更多,网上找了小部分示范数据。
create table if not exists 车辆历史数据表 (
车辆标识 varchar not null,
上传时间 bigint not null,
行驶里程 float,
发动机温度 float,
车速 float,
发动机转速 float,
油耗 float,
续航里程 float,
电量 float,
充电状态 integer,
卫星数量 integer,
卫星信号强度 integer,
卫星信号 integer,
网络信号强度 integer,
经度 double,
纬度 double,
方向角度 float,
循环模式 integer,
风扇模式 integer,
省电模式 integer,
开关门状态 integer,
发动机状态 integer,
钥匙状态 integer,
灯光状态 integer,
门锁状态 integer,
网络状态 varchar,
档位 integer
CONSTRAINT my_pk PRIMARY KEY (车辆标识,上传时间 ROW_TIMESTAMP))
COMPRESSION=’SNAPPY’,DATA_BLOCK_ENCODING=’FAST_DIFF’,SALT_BUCKETS=20;
2.2 大数据分析挑战
国家十三五规划第54条是加快构建车联网、船联网。车联网可以加快智能城市建设, 实现智能交通建设, 提高交通运输效率,减少交通死亡率, 节能减排。大量采集数据的数据挖掘和分析算法就值钱了。
2.3 安全挑战
车联网采集网关/IotHub这些应该是公网, 除了采集如果带控制车辆的车联网, 黑客攻击就直接威胁到人身安全了。
3.通用车联网架构
3.1 参考架构
参考下华为车联网的架构
参考网上一个物联网架构
华为的还是全面些,考虑了监管,所以保留了原始数据存储的分支。一般采集鉴权过简单清洗过的数据会直接上到MQ。 华为的在流处理作为消费者分析了数据并保存到了时序数据库和数据库RDS。这里需要看数据具体怎么用,有需要的话可以拆分为多个MQ消费者, 一个消费者处理数据快速插入到时序数据库, 一个消费者流处理分析统计数据到RDS。
3.2 为什么需要时序数据库
Time Series Database时序数据库, 为解决写多读少,带时间点,数据不可改, 按照时间点查询聚合检索数据。很多时序数据库实际都是由key-value NoSQL数据库改造而来, 例如较出名的influxdb是基于levelDB, 阿里的HiTSDB(收费), 华为的clouddb是基于hbase,openTSDB, GeoMesa(收费)改造。 当然还有其它开源的蛮多时序数据库, 清华的IotDB, TimescaleDB等。 Influxdb集群可惜收钱, 不然一般它是首选。
3.3 为什么要上MQ
保证请求数据的稳定一致能被处理, 最大努力补偿, 没有MQ保护, 请求过多业务处理会被冲垮, 为了稳定, MQ还是必备的。kafka虽快, 但是批量发, topic数量有限,topic多性能就下降得快, 用RocketMQ会稳些。
4.推荐一个开源的物联网大数据平台TDengine
https://blog.csdn.net/jtao1735/article/details/95937660
55岁还在写代码,钦佩和羡慕。35岁就是个节点, 中国人多不缺你一个, 笔者也受过这样的歧视, 只能屡败屡战了。
实际场景还需要考虑, 各节点的集群, 均衡负载, 监控, 设备类型, 多租户, 隔离, 机器学习用户画像,外部rest api, 安全等等,不简单, 有机会再研究下TDengine, 此文算是抛砖引玉吧。
参考文章
- 原文作者:Zealot
- 原文链接:https://www.51discuss.com/posts/v2x-solution/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。