文/卢永华
现有技术的处理方法把不同设备连接到不同端口上,每种端口绑定一种特定设备,连接到该端口上的设备使用预先定义好的数据编码、解码算法进行数据解析。该方法需要大量的端口与设备绑定,某些设备的数量多,某些设备的数量少,造成有的端口负载大,有的端口负载小,有可能造成服务器性能瓶颈。进而影响整个系统的运行,产生不良影响。
设备虚拟化技术能够在一个端口上实现多种设备协议的绑定,所有设备可以连接在一个端口上,在端口连接资源紧张时,新开一个端口即可实现设备处理能力的提升。
图2:设备注册流程
设备虚拟化技术提供一种在单端口绑定多协议的方法,在单端口上实现一个公共接口,该接口实现以下三种功能:
(1)设备注册协议;
(2)设备编码协议;
(3)设备解码协议;
(4)设备注销协议。
当设备通过TCP连接到该端口时,通过内部机制完成设备的注册,设备通过注册后映射成为虚拟设备,该虚拟设备有设备编码能力、设备解码能力、设备超时注销机制,通过这些机制能够对设备有着完整的对应控制能力。对于框架来说,只需要管理虚拟设备即可,设备的协议内置于虚拟设备中,各种设备完成了注册流程,变转化为一种虚拟设备,端口与协议不再有绑定关系,借此实现一个端口下的多协议设备兼容。每个虚拟设备独立运行,互不影响,稳定性高。如图1所示。
每个设备都有自己的驱动文件,驱动文件继承上述公共接口,由框架负责驱动管理,能够实现驱动的动态加载,当设备连接到服务器端口上时,要自动发送一条注册信息,框架使用该条注册信息轮询所有驱动中的设备注册协议,当某个驱动中的设备注册协议能够正确解析注册信息时,锁定该设备类型,并根据注册信息填写相关属性、连接保存到驱动中,把驱动映射为虚拟设备存储到设备列表中,后续针对虚拟设备的操作就映射到实体设备上。如图2所示。
图3:设备的数据解析
图4:设备的数据编码
通过该方法确认连接到服务器的虚拟设备,后续该设备连接发送过来的信息将会使用虚拟设备中内置的设备解码协议进行数据的解析,解析出来的数据推送到框架,由框架进行后续处理。如图3所示。
当要与设备通信时,框架找到该虚拟设备,调用虚拟设备编码协议,把控制命令通过设备编码协议转化为设备能够识别的数据,并将该数据通过虚拟设备中的连接发往设备端,实现与设备的通信。如图4所示。
服务端上存储的虚拟设备为了保证其有效性,处于激活状态,需要设备间隔一定时间向服务端发送心跳包,虚拟设备内置了一个定时器进行设备心跳包的检测,在规定时间内未收到心跳包,虚拟设备认为该设备变为不可用状态,将调用设备注销协议移除该条设备驱动,并关闭该连接,并通知框架设备列表移除该虚拟设备、释放内存,完成设备的注销。如图5所示。
通过以上一系列机制,实现了实际设备与虚拟设备的映射关系,只需要对虚拟设备进行管理就实现了多真实设备的管理,大大提升软件对设备的管理能力。
图5:设备的注销
通过设备虚拟化技术,能够在一个端口上实现物联网平台的多种设备类型接入,对端口资源进行了有效的利用。设备虚拟化后实现了虚拟设备与真实设备的映射关系,只需要管理虚拟设备即可实现对真实设备的操作,操作简单方便,易于管理。当连接的设备过多时,再打开一个新端口即可实现处理能力的提升,能够轻松达到负载均衡的目的。因此该技术特别适合物联网平台进行大量设备的管理工作。