李宽荣 高勇
天津市普迅电力信息技术有限公司 天津 300300
摘要:按照中共中央办公厅、国务院办公厅印发《党政机关公务用车管理办法》要求,大型央企每辆车的使用都必须严格管理,实现有迹可查。因此对车载终端的统一安装,集中监控需求应运而生。同时随着近年电动汽车行业的快速发展,《新能源汽车及充电设施公共数据采集技术规范》的推出,对终端设备和车辆实时数据采集需求,成为车联网建设必须解决的问题。车联网智能接入网关必须满足大规模终端设备接入需求,保证终端设备有序、稳定、高效、安全接入的分布式接入网关系统。
关键词:高并发;网关;多协议适配
1功能设计
智能接入网关可以实现感知设备和基础网络应用之间的协议转换,既可以实现广域互联,也可以实现局域互联。采用模块化设计,主要包括设备交互能力模块、数据处理能力模块、Web服务能力模块和网关管理能力模块。
1.1设备交互能力
设备交互能力提供多种不同协议标准的设备接入,对于应用层起到统一标准协议的作用,屏蔽不同设备差异,这样可以加强应用层的通用性,提高应用层复用能力。
主要提供网络数据IO请求,包括指令下发和数据接收两大类能力。其中为了保证连接稳定,系统采用支持NIO的通信框架作为基础通信框架,数据缓存采用消息队列实现削峰能力。同时IO模块和数据处理服务模块中与消息处理相关功能中设计有看门狗功能,在消息进程失败后,会主动重启消息处理,以保证高可用能力。
1.2数据处理能力
数据处理/Web服务能力负责从不同的感知设备到接入网络的协议转换,将下层的标准格式的数据统一封装,保证不同的感知设备的协议能够变成统一的数据和信令;将上层下发的数据包解析成感知层协议可以识别的信令和控制指令。
主要提供多线程消息处理能力,保证高并发时的稳定消息处理能力,支持信息协议自定义扩展能力,消息处理采用运行时发现方式保证消息处理能力的动态扩展,信息异步持久化处理,同时对外提供服务能力。数据数据持久化采用关系型数据库,主要存储解析后的消息原文和设备的基础台账数据。
1.3 Web服务能力
为前端业务应用、设备管理提供服务接口,采用能力中心微服务架构,通过注册中心方式发布微服务。前端应用通过注册中心查询请求服务。提供终端设备数据查询、编辑服务,提供下行指令数据处理相关服务,为设备管理提供下行指令控制转发服务。
1.4网关管理能力
强大的管理能力,对于任何大型网络都是必不可少的。首先要对网关进行管理,如注册管理、权限管理、状态监管等。网关可以管理不同的感知设备、不同的应用,保证能够使用统一的管理接口技术对末梢网络感知节点进行统一管理。
主要提供车辆信息管理,终端设备管理、SIM卡管理、车辆品牌管理、终端设备类型管理、运营商管理、终端设备连接状态查看,终端设备通信内容查看、终端位置地图历史轨迹回放、终端设备下行指令测试、终端程序升级、终端报文转发等功能。
2架构设计
智能接入网关主要完成与通信和规约解释相关的处理逻辑。其中,网关服务器的主要功能包括前置通信调度、数据采集、数据处理等。前置通信调度是对各种与终端的远程通信方式进行通信的管理和调度;数据采集负责采集终端设备数据,并进行协议解析;数据管理负责对数据的合理性检查、存储、统计。
2.1网关部署物理架构
数据采集层的物理设备由若干网关服务器组成,每台网关服务器相对独立,支持成本低廉的横向扩展。离散部署的终端设备可分按照区域进行划分,与各自区域内的网关服务器进行通信,实现并发通信压力的分解。
2.2网络通信技术架构
智能网关设计为具有高性能和高伸缩性的网络通信应用程序框架,通过采用基于Java nio技术异步的、事件驱动的非阻塞I/O通信模型,实现对高并发、多协议适配的支持。
2.3高并发技术架构
充电设备离散连接,通过长连接与前置系统进行通信,在充电设备待机状态下,每台设备以30秒的间隔向网关服务器发送心跳数据,保持长连接状态。当设备处于密集使用期时,每台设备与网关服务器的通信更加频繁,除了保持心跳数据外,还有充电过程实时数据、预约指令、充电控制指令、充电设备实时状态数据等。如果服务器端处置不当,轻则导致充电设备连接断开、重则导致服务不可用,服务器宕机等严重后果。
2.4多协议适配方案
充电设备厂商可以根据本通信协议标准进行程序编写,达到满足接入的条件。但当市场化运营时,存在大量私人终端设备接入的可能,私人终端设备品牌繁多,各种通信协议林立。在接入时,不可能要求所有私人终端设备进行协议修改,所以采集系统的多协议适配成为必备功能。
3关键技术研究
3.1Netty框架
Netty是由JBOSS提供的一个java开源框架,Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。Netty是一个基于NIO的客户、服务器端的编程框架,使用Netty可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户、服务端应用。Netty相当于简化和流线化了网络应用的编程开发过程,例如:基于TCP和UDP的socket服务开发。
3.2Redis缓存技术
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis是一个Key-Value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis 支持各种不同方式的排序。与Memcached一样,为了保证效率,数据都是缓存在内存中。区别是Redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis是一个远程内存数据库,它不仅性能强劲,而且还具有复制特性以及为解决问题而生的独一无二的数据模型。Redis提供了5种不同类型的数据结构,各式各样的问题都可以很自然地映射到这些数据结构上:Redis 的数据结构致力于帮助用户解决问题,而不会像其他数据库那样,要求用户扭曲问题来适应数据库。除此之外,通过复制、持久化(persistence)和客户端分片(client-side sharding)等特性,用户可以很方便地将 Redis 扩展成一个能够包含数百 GB 数据、每秒处理上百万次请求的系统。
在智能接入网关业务设置中,需要大量使用到终端设备状态数据、交易数据等实时数据。使用传统的关系型数据库必然会对服务器造成负载压力,从而导致服务器响应速度变慢,严重影响服务器稳定性,增加服务器架设成本。在设计智能接入网关架构时采用了传统关系型数据库与缓存数据库相结合的数据存储方式,目的在于将需要持久化的数据存储在关系型数据库中,将需要频繁读取、更新的数据存储在缓存数据库中,可以很大程度地提升读写效率,并减轻关系型数据库的负载,对关系型数据库起到很好的补充作用。
智能接入网关主要在应用端使用Redis缓存服务器,在Redis服务器中主要存储包括:终端设备的基本信息、用户在应用系统地图上的终端设备实时状态、用户在充电过程中的充电事实数据、用户预约单的实施状态等实时性较强的数据。
终端设备的基本数据通过平台在资产录入的时候同步到Redis缓存服务器中,应用系统的大量用户在地图显示中需要大量的查询终端设备的状态,数据从Redis总读取可以极大的缓解数据库的读取压力,避免与平台管理系统争抢数据库资源。
用户预约单信息在终端设备故障或升级维护的情况下,会停止使用,对用户的预约单需要实时的刷新预约单的状态,这种频繁的查询会对数据库造成大量的资源浪费,因此,为了提高查询效率和缓解数据库压力,将用户预约单信息保存到Redis服务器中,如果Redis服务器的预约单状态发生变化,用户会第一时间得到信息,同时Redis服务器会与数据库保持同步数据更新。
3.3通信安全技术
通过对后台协议间通信协议的设计,增加信息交互时的加密、压缩及签名技术,确保在后台与车载终端关键指令的安全性。同时,在安全的前提下,确保信息通信效率的及时性,满足业务过程中的,用户体验。确保信息的安全性与及时性。
协议采用的通信方式应符合JT/T 794-2011中的相关规定,通信协议采用TCP或UDP,平台作为服务器端,终端作为客户端。当数据通信链路异常时,终端应保存异常期间的位置信息汇报消息。在数据通信链路恢复正常后,立即发送保存的消息。
参考文献:
[1]刘静. 智能车载终端接入平台与高并发处理技术的研究与实现[D]. 中国科学技术大学, 2019.
[2]张雪姣. 面向电动汽车的高并发数据处理平台的设计与实现[D]. 电子科技大学.
[3]王轶闻, 李军伟. 新能源电动汽车的发展现状[J]. 科技信息, 2012(31):223+260.
[4]王国金, 徐曼. 智能接入网关设计及其物联网应用[J]. 中国科技成果, 2013, 000(017):57-59.