论文部分内容阅读
Apache Mina框架由于在数据接收的便利性和传输性能上优异的表现,时常被开发人员作为TCP服务器的开发框架。而随着近几年来物联网技术的快速发展,传统行业开始和互联网结合,越来越多的设备终端需要通过TCP通信上传各种数据到服务器进行处理。传统的单个Apache Mina TCP服务器已经不能够满足高并发量的客户端请求,时常需要搭建服务器集群,用多个服务器分摊客户端请求的压力来解决这个问题。但是搭建服务器集群需要软硬件非常复杂的配置过程,而且Apache Mina并没有提供集群开发功能。因此本文将在Apache Mina现有模块基础之上扩展出一个能够直接支持TCP服务器集群开发的功能组件,使得开发人员在使用Apache Mina开发TCP服务器集群时可以很方便的使用该组件,简化服务器集群的开发和搭建过程。论文的主要研究工作有如下几点:(1)分析了Apache Mina的TCP服务端处理Socket连接的源码,指出了单台Apache Mina服务器处理高并发Socket连接时会出现响应延时、吞吐率降低的瓶颈,进而提出给Apache Mina增加一个集群开发功能组件Mina-Cluster,使Apache Mina直接支持TCP服务器集群开发和搭建。通过分析LVS、Nginx和HAProxy三种常用集群软件工作流程提出一个主从式架构方案(Master-Slave)用于解决组件的架构设计问题。(2)本文提出的主从式架构方案由3个关键节点组成,Client节点负责和Master节点通信并获取具体服务器信息;Master节点负责调度客户端的请求;Slave节点负责具体服务器信息的采集以及和Master节点通信。据此本文分3个研究点分别对Client、Master、Slave三个节点的结构进行了详细设计。第一个研究点是设计Client节点的结构,定义Client节点和Master节点之间的通信流程和通信协议。第二个研究点是设计Master节点的结构,包括定义Master节点和Slave节点之间的通信流程和通信协议,设计信息存储模块和可配置模块,设计可扩展负载均衡策略接口和3种基础负载均衡算法。第三个研究点是设计Slave节点结构,并通过马尔科夫模型分析了Slave节点的高可用性。(3)为了开发人员可以方便使用在Apache Mina中扩展出的TCP服务器集群开发功能,加快TCP服务器集群的开发和搭建,本文设计了功能的API并定义了API使用规范。API主要包括三个基本类:ClientToMaster封装了Client和Master的通信过程;Master类封装了信息存储模块和负载均衡算法;Slave类封装了服务器信息采集模块以及和Master节点通信过程。(4)对扩展的功能Mina-Cluster进行功能测试验证,通过测试结果分析新增功能能够正常工作。搭建集群环境,对Mina-Cluster进行性能测试,证明Mina-Cluster开发通信服务器集群有减小服务器响应时间的作用。最后将Mina-Cluster应用到智能燃气表通信服务器中进一步验证了Mina-Cluster能够在实际项目中正常使用。