软件协议转换网关在大型集成系统中的应用

2019-11-11 08:17侯小虎向逸尘
计算机时代 2019年10期
关键词:负载均衡系统集成物联网

侯小虎 向逸尘

摘  要: 隨着物联网技术的飞速发展,越来越多的物联网设备需要接入到软件平台,开发出集成化的大平台已经是不可避免的趋势。当一个集成平台需要面对多种物联网设备时,系统就需要利用协议转换网关来处理和转换各种各样的协议信息,以达到与设备通信的目的。文章分析了两种类型的协议转换网关,描述了它们在集成系统中的应用,及其负载均衡方案。

关键词: 协议网关; 物联网; 系统集成; 负载均衡

中图分类号:TP311          文献标志码:A     文章编号:1006-8228(2019)10-50-04

Abstract: With the rapid development of Internet of Things technology, more and more Internet of Things devices need to be connected to the software platform, and it is an inevitable trend to develop an integrated platform. When an integrated platform needs to face a variety of Internet of Things devices, the system needs to use protocol conversion gateway to process and transform a variety of protocol information in order to achieve the purpose of communication with devices. This paper analyses two types of protocol conversion gateways, describes their applications in integrated systemsand their load balancing scheme.

Key words: protocol gateway; Internet of Things; system integration; load balancing

0 引言

软件协议转换网关(简称协议网关)是大型信息化集成系统设计中的重点,也是设计难点。协议网关是沟通软件系统和硬件设备的桥梁,十分重要;协议网关需要接入大批量的硬件设备,需要具备很高的稳定性和并发处理能力[1]。

大型信息化集成系统一般会为每一种硬件设备分别设计一个独立的网关程序,以免其中某个网关出现问题会影响其他网关的运行,最大限度地保持系统整体稳定。

在实际应用过程中,根据与硬件交互数据方式的不同,可以对协议网关进行分类,分为TCP/UDP型协议网关和WebService、SDK型协议网关两种[2]。

1 协议转换网关介绍

1.1 TCP/UDP类型网关

TCP/UDP类型网关:TCP/UDP类型网关基于Netty实现高性能的网络接入程序,单个网关可接受的业务并发量可以达到万级。通过RocketMQ的Cluster机制,设备指令可以平均的分配到网关上,网关再将指令发送到设备上[3]。

在网关和硬件设备之间,已部署了LVS负载均衡处理。LVS建立在OSI七层模型中的第四层“传输层”之上,支持TCP/UDP的负载均衡,它能够很好的支持网关层的负载均衡[4]。

如果设备接入量实在过大,接近或达到了单个网关的处理极限,就可以多部署一套或多套网关程序,使用LVS来进行命令的分发。负载均衡技术是大型信息化集成系统开发过程中不可缺少的一种技术,在本文第3节中将有详细描述。

TCP/UDP型协议网关结构图如图1所示。

1.2  WebService和SDK型协议网关

WebService和SDK类型网关:通过RocketMQ的Cluster机制来实现扩展,同一种设备的网关,部署在多个服务器上,同时订阅这个设备的RocketMQ Topic,当消息队列里面有设备指令,将会被平均的分配到不同服务器上的网关上,当某一种设备网关处理设备指令过载时,可以通过部署一个新的网关实例,进而起到分担该网关的压力,达到性能最优[3]。WebService和SDK型协议网关结构图如图2所示。

WebService和SDK类型网关:通过RocketMQ的Cluster机制来实现扩展,同一种设备的网关,部署在多个服务器上,同时订阅这个设备的RocketMQ Topic,当消息队列里面有设备指令,将会被平均地分配到不同服务器上的网关,当某一种网关处理设备指令过载时,可以通过部署一个新的网关实例,进而做到分担该网关的压力,达到性能最优。

2 协议网关的应用

对于上文介绍的两种不同类型的协议转换网关,除了最后如何和硬件设备通信的方式有所区别,其他应用流程大体一致。在大型信息化集成系统中,协议网关的操作时序图如图3所示。

具体操作流程如下。

⑴ 分节点系统把Java message object转换为 JSON, 然后放入对应的MQ Topic。

⑵ Polling Job从 MQ Topic 提取 JSON。

⑶ Polling Job转换JSON为Java message object并调用对应的Listener。

⑷ Listener将Java message object转换为设备可识别的byte[]/String。

⑸ Polling Job調用对应的Client,并传入byte[]/String。

⑹ Client通过http/SDK/TCP/UDP等方式发送byte[]/String至设备/服务器。

⑺ 设备/服务器通过http/SDK/TCP/UDP等方式返回结果byte[]/String到网关。

⑻ Handler把byte[]/String转换为业务Java message object。

⑼ MS把Java message object转换为JSON, 然后放入对应的MQ Topic。

⑽ 分节点从MQ Topic获取到消息。

3 协议转换网关的负载均衡

协议转换网关将对接大量的硬件设备,处理大量业务请求。当单个网关无法满足使用需要时,就用利用负载均衡来实现横向扩展。

目前,负载均衡主要分为两种:一种是硬件负载均衡器,比如F5,一种是软件负载均衡策略,比如LVS。本文主要介绍如何利用LVS负载均衡技术来应对大规模业务数据。

LVS是四层负载均衡,建立在传输层之上,支持TCP/UDP的负载均衡。所以它能够很好的支持本系统中网关层的负载均衡[4]。

LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器。使用LVS可以达到的效果是:通过LVS达到的负载均衡技术和Linux操作系统实现一个高性能高可用的Linux服务器集群,它具有良好的可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的性能。LVS是一个实现负载均衡集群的开源软件项目,LVS架构从逻辑上可分为调度层、Server集群层和共享存储[4]。

LVS由ipvs和ipvsadm两部分组成,其中,ipvs(ip virtual server)是真正生效实现调度的代码;而ipvsadm负责为ipvs内核框架编写规则,定义谁是集群服务,而谁是后端真实的服务器[4]。

● LVS的优点有以下三点:

⑴ 抗负载能力强、是工作在网络层第四层上,仅用来进行数据分发,不产生实际的流量,对内存和CPU资源消耗很低,可以应对大规模的数据;

⑵ 可配置性比较低,没有可太多配置的东西,和配置复杂的其他负载均衡软件相比,减少了人为出错的几率;

⑶ 工作稳定,通过Keepalived可以实现完整的双机热备方案[5]。

● LVS有多种转发逻辑,包括:

⑴ LVS-NAT:修改请求报文的目标IP;

⑵ LVS-DR:操纵封闭新的MAC地址;

⑶ LVS-TUN:在原请求IP报文之外新加一个IP首部;

⑷ LVS-FULLNAT:修改请求报文的源和目标IP[2]。

● 本系统中采用的是LVS-DR转发模式,其特性有:

⑴ RIP与DIP在同一IP网络,RS可以使用私有地址,也可以使用公网地址,此时可以直接通过互联网连入RS,以实现配置、监控等;

⑵ RS的网关一定不能指向DIP;

⑶ RS跟Director要在同一物理网络内(不能有路由器分隔,因为要将报文封装MAC首部进行报文转发);

⑷ 请求报文必须经过Director,但响应报文不能经过Director而是由RS直接发往Client以释放Directory的压力;

⑸ 不支持端口映射(因为响应报文不经过Director);

⑹ RS可以使用大多数的操作系统;

⑺ Director的VIP对外可见,RS的VIP对外不可见;

⑻ RS跟Director都得配置使用VIP;

⑼ 确保前端路由器将目标IP为VIP的请求报文发往Director[5]。

网关层使用LVS实现负载均衡和高可用,LVS会提供一个虚拟IP,使用主、备用负载均衡服务器进行设备连接转发。当一台负载均衡服务器服务中断后,另外一台可以继续提供服务,实现网关的高可用[5]。考虑到所有网关服务器配置相同,所以LVS会采用RR轮询算法将设备的连接请求按网关顺序进行轮流分配,即平均分配每个网关的设备连接数量。当设备连接数量增长到一定程度后,可以直接增加网关服务,实现水平扩展,对架构及业务处理不产生影响[5]。

对LVS的性能可以进行多方面测试,包括高流量压力测试、高并发压力测试、响应时间测试、RR算法预期值测试(连接数是否正确分布测试)等,LVS都能够很好地通过这些测试,可以实现系统对于负载均衡的需求[5]。

4 结论

本文介绍了两种类型的软件转换网关,并针对性地通过数据流程图,说明了软件协议转换网关在大型信息化集成系统中的应用方式。

软件转换网关可以有效提升系统开发效率,有效去耦合,为实现系统互联互通打下了良好的基础。在业务量很大时,也可以通过负载均衡的方式来进行横向扩展,使系统的可用性大幅提高,具备很高的实际应用价值。

参考文献(References):

[1] 薄慕婷,丁立波,张合.智能网关软件设计与实现[J].兵器装备工程学报,2016.37(12).

[2] 佟立飞,李龙华.通用网关协议数据转换软件开发[J].自动化技术与应用,2012.31(1):16-18

[3] 谢小云.基于敏捷开发及多V模型的嵌入式温室网关的软件开发[J].电子技术与软件工程,2015.1:75-76

[4] 网络作者.使用 LVS 实现负载均衡原理及安装配置详解-会飞的鱼-博客频道-CSDN.NET[EB/OL]. https://blog.csdn.net/a494303877/article/details/59576924/.

[5] 网络作者.软件级负载均衡器(LVS/HAProxy/Nginx)的特点简介和对比-博客频道-CSDN.NET[EB/OL]. https://blog.csdn.net/huaishu/article/details/17022175.

猜你喜欢
负载均衡系统集成物联网
加氢站与调压站能源供应系统集成技术及应用
工业企业系统集成技术 系统集成技术与信息化集成系统(下)
异构环境下改进的LATE调度算法
“系统集成”式的改革
基于高职院校物联网技术应用人才培养的思考分析
中国或成“物联网”领军者
多站点同步更新系统的设计
模糊理论在Ad hoc网络通信领域的应用
车牌识别与视频监控系统集成探讨