谈荣强 吴森
摘 要:“十三五”规划重点项目指出了建设物联网应用基础设施和服务平台,在此基础上各大物联网平台厂商推出自己的产品,如阿里云物联网平台、中国移动OneNET平台、中国电信Wing平台等。同样,电动汽车产业的发展推动着共享充电桩需求的急剧增速,文中以共享充电桩物联网软件平台架构建设思路为依托,提出一种物联网软件平台系统架构设计方案。
关键词:物联网;软件架构;平台架构;共享充电桩;分布式架构;双向异步通信
中图分类号:TP39文献标识码:A文章编号:2095-1302(2019)12-0-03
0 引 言
物联网实现了物质世界的数字化,以互联网为基础,结合通信技术与传感器达到感知万物的能力。物联网具有数量庞大、通信频繁、实时性高、海量存储等特点,传统软件技术无法满足物联网设备的接入要求,需采用新一代信息技术,如云计算、大数据、分布式等技术手段,将单机无法承载的海量通信接入和海量数据存储分散,从而满足物联网应用的要求。共享充电桩行业伴随新能源汽车产业的发展而快速崛起,2015年出台的《关于加快电动汽车充电基础设施建设的指导意见》使共享充电桩行业迎来发展的机会。大量充电桩设备的接入对软件系统平台提出了更高的要求,本文基于共享充电桩软件系统平台,设计出一套适合物联网设备接入的通用型物联网软件系统平台架构,为物联网平台建设提供解决方案。
1 总体架构设计
系统平台主要由充电桩物理感知层、网络接入层、网络通信层、业务处理层、应用层五个层次组成,架构如图1所示。
在充电桩物理感知层,电动汽车首先通过汽车自身的电池管理系统与充电桩CAN总线进行感知与交互,包括充电枪连接状态感知、BMS运行状态感知、电动车充电电量感知等,电动汽车将自身相关状态上报到充电桩,充电桩根据状态做出对应的处理。例如,充电桩感知到电动汽车处于插枪状态时,充电桩生成插枪状态的报文并发送到软件管理后台。
在网络接入层,以物联网卡为基础,TCP/IP协议作为网络传输协议。充电桩通过外部或内部感知各种设备的连接及运行状态,根据通信报文协议生成对应的状态报文。报文经物联网卡以网络传输的方式传输到软件管理后台。
在网络通信层,软件管理后台与充电桩之间建立TCP Socket通信连接。由充电桩发起Socket通信连接请求,首先经过负载均衡服务器对通信连接服务器进行负载计算,选择其中一个通信服务器与充电桩完成Socket连接,并将充电桩注册信息存储在分布式缓存系统中。通信服务器负责维持Socket通信状态,实现与充电桩之间的双工通信。
在業务处理层,网络通信层的通信服务器经由分布式消息队列系统发送消息到集群业务处理服务器,集群业务处理服务器根据自身负载情况选择是否消费队列消息。业务处理服务器根据消息内容判断业务类型及处理方式,并将数据及时存入分布式数据库中(如HBase,MongoDB)。业务处理服务器处理完消息后从分布式缓存系统中获取到负责对应充电桩Socket通信连接的通信服务器,并向该通信服务器专属队列通道发送回应消息,从而实现与充电桩之间异步可靠的双向通信。
在应用层,各种相关应用与业务处理服务器之间以Restful接口进行无状态通信。应用可通过业务处理服务器对外开放的接口,实现向充电桩发送指令以及接收充电桩传送过来的消息,系统也可实现各种定制化功能,如APP扫码充电、刷卡充电等。
2 负载均衡调度
常用的负载均衡调度算法主要有轮询、最小连接、散列等,考虑到不同服务器的性能、网络环境、物理条件等因素,可在这些算法基础上做相应加权,从而达到负载均衡的目的。整个系统平台在Socket通信服务、队列消费、Restful接口服务部分都实现了负载均衡,需要根据具体实际情况选择合适的调度算法。
在通信服务器和Restful接口服务层,通常可选择加权轮询或加权最小连接的方式实现。具体算法如下。
(1)加权轮询
假设有一组服务器S,服务器数量为n,则:
指定一个指示变量i表示上一次选择的服务器,初始值为-1,指示变量w为当前调度的权值,则服务器i的权值为Wi,则:
Wmax=max(W0, W1, W2, ..., Wn-1),表示所有服务器集合的最大权值;
Gmax=(W0, W1, W2, ..., Wn-1),表示所有服务器集合的权值的最大公约数。
当一次请求进入时,执行如下:
while (true) {
i= (i+1) mod n;
if (i == 0) {
w = w - Gmax;
if (w<= 0) {
w = Wmax;
if (w == 0)
return NULL;
}
}
if (Wi>= w)
return Si;
}
(2)加权最小连接
假设有一组服务器S,服务器数量为n,则:
S={S0, S1, S2, ..., Sn-1}
指定一个指示变量i,指示变量Ci为服务器Si的当前连接数,则服务器i的权值为Wi,则:
表示所有服务器当前连接数总和。
当一次请求进入时,执行如下:
for (m = 0;m < n; m++) {
if (Wm> 0) {
for (i = m+1; i < n; i++) {
if (Cm*Wi>Ci*Wm)
m = i;
}
return Sm;
}
}
return NULL;
在业务处理层,每个业务处理服务器的消费能力不一致,任务的处理时间也会存在差异,轮询的方式导致消费能力不足的服务器无法达到预期效果,消息不能及时处理。本文推荐使用公平分发调度方式,使消息都可得到正确的处理及反馈。具体算法如下。
公平分发:
假设有一组服务器S,服务器数量为n,则:
S={S0, S1, S2, ..., Sn-1}
指定一个指示变量i,初始值为-1,初始状态下空闲服务器Sempty={S0, S1, S2, ..., Sn-1},当队列中产生一条消息时,执行如下:
while (true) {
i= (i+ 1) mod n;
if(Si∈Sempty){
Sempty remove Si;
return Si;
}
}
当消费服务器完成消息消费时,执行如下:
Sempty add Si;
3 平台优势与特点
(1)分布式架构。平台整体采用分布式架构设计方案,支持各个节点的单一部署与集群部署,伸缩性强,从而避免了单点故障问题。
(2)服务粒度细。整个系统平台划分为几个层次,不是大而全的系统架构,更偏向微服务架构方案,每个服务负责具体单一的业务方向,系统维护更加简单。
(3)跨平台通信。平台节点支持跨平台通信,不限制平台与开发语言,对外应用服务接口采用Restful,协议友好,具备平台无关性,使用简单。
4 结 语
本文设计了基于分布式架构的物联网应用基础设施和服务平台,解决了传统单体系统工程架构工程量大、维护复杂等问题。该系统平台架构方案能够很好地解决传统单体系统工程的问题,在架构设计方面充分考虑不同节点能最大支撑的负载量,支持服务水平扩展,方便根据不同节点自身情况选择合适的硬件以及硬件数量。通信服务与业务服务之间采用分布式队列的方式实现服务间的通信与消息传递,从而达到消息的异步传递与处理,保障通信服务的高可用。分布式缓存解决了业务服务与通信服务之间的消息通信,保障消息的双向异步通信。通过该系统平台的架构设计方案,缓解了现有物联网软件平台负载量低、性能不高的情况,为百万级物联网软件平台建设提供了思路。
參 考 文 献
[1]杨世敬.基于智慧路灯的智慧城市系统研究[J].科技风,2019(11):86.
[2]吴振宇.基于Web的物联网应用体系架构和关键技术研究[D].北京:北京邮电大学,2013.
[3]屈钢,邓健青,韩云路.Linux集群技术研究[J].计算机应用研究,2005(5):100-101.
[4]刘博伟,黄瑞章.基于HBase的金融时序数据存储系统[J].中国科技论文,2016,11(20):2387-2392.
[5]杨扬,田茂,高士木,等.基于Netty的城市智慧路灯管理系统[J].物联网技术,2018,8(4):84-86.
[6]陈强,武佳佳.基于Netty高并发物联网服务器研究与设计[J].电子技术与软件工程,2018(7):34-35.
[7]佘鹏.LVS集群加权最小连接调度算法的研究[J].计算机与数字工程,2019,47(4):794-798.
[8]王亮,高晓佳,王宏国,等.基于LVS的大规模网络负载均衡技术研究[J].科技传播,2018,10(23):115-117.
[9]马巍,武欣嵘,郑翔,等.Rabbit MQ在实时监控系统中的应用[J].军事通信技术,2017,38(1):82-85.
[10]杨博雄,倪玉华,刘琨,等. 现代物联网体系架构中核心技术标准及其发展应用研究[J].物联网技术,2013,3(1):71-76.