更全的杂志信息网

一种高性能可靠服务器的设计与实现

更新时间:2009-03-28

随着互联网的迅速发展,人们生活中使用互联网的次数也是异常频繁。正是这个原因,各式各样的网络服务器应运而生。比如Apache旗下的Tomcat,Jboss服务器等等网络应用服务器[1]。但是这些服务器在实际运用的过程中都有着一个明显的短板——当客户的数量呈现爆发式的增长的时候,服务器会出现无法接收到消息、服务器死机等并发性问题[2]。本文给出了一种基于Netty网络通信框架的数据通信与网络存取平台的设计方案。在系统的底层使用Netty这个基于事件驱动、异步非阻塞的高性能网络通信框架,在客户端与服务器进行通信的过程中使用自定义的HTTPS协议,较好地改善了传统服务器并发性能较低等问题。

1 Netty框架

Netty是一个异步的,事件驱动的网络编程框架和工具[3]。使用Netty可以快速地开发出可维护的,高性能、高扩展能力的协议服务以及其客户端应用。Netty底层封装了网络层的东西,用户在使用Netty进行编程的时候不需要再去关注底层的东西,可以将更多的时间放在自己业务的实现上面。Netty框架不仅支持成熟的HTTP、WebSocket等协议,还支持自定义协议,这使得开发者可以根据自己业务的需求灵活的选择自己想要的东西,更加方便了项目的开发[4]

随着JDK8的逐渐普及,Java的原生类库已经升级到了NIO2.0,越来越多基于传统Socket变成的应用会逐步切换到新的NIO类库上来,考虑到切换和维护成本,大多数公司会选择Netty作为NIO框架来实现异步通信。目前Twitter,阿里等众多公司的服务器的底层均是由Netty框架编写的。

三国在国人心中是最优秀的一部名著,学习生活中许多常见的歇后语和成语都出自书中的故事。杨先生的译文采用直译加注释的方式,向外国读者传达“诸葛亮”是国人心目中的the Master Mind(智者),传达了民族文化形象。而后面的词典译就只是简单的字面意思。

腾讯的微信是目前使用非常广泛的社交软件。其服务器端数据的传输主要就是运用了HTTP协议。他利用HTTP协议的框架,自己定义请求和响应的格式很好地完成了消息的发送。

可以看出,无论是互联网的分布式服务框架,还是Hadoop等并行计算框架,它们集群网中的各个节点需要通过高性能的通信协议框架来实现同步或者异步的RPC调用。HTTP协议的技术优势使得HTTP得到了广泛的运用。利用Netty加上自定义协议,已经逐渐成为业界的主流用法。

2 HTTPS协议

HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer)[5]协议,是一个以安全为目标的HTTP通道,简单来说就是在HTTP协议的底层加上了SSL层[5] 。传统的HTTP协议是以明文形式来发送内容的,这样数据的安全性就得不到保障,为了解决HTTP协议这个缺陷,HTTPS协议就孕育而生。HTTP协议加上加密算法加上认证和完整性保护,这样就构成了HTTPS协议。首先来谈谈传统的HTTP协议:HTTP超文本传输协议,它是一种无连接、无状态的应用层协议,HTTP协议的底层使用的是 TCP 协议[6]。随着网络交易、网络支付等的兴起,HTTP的安全性问题也是越来越突出,主要是其数据的明文传送和消息完整性检测的缺乏[6]。下面来谈谈加密算法:HTTPS协议主要的加密算法是TLS算法。他的作用是将传输的信息进行加密,确保了安全性。下面是认证:所谓认证就是要让客户端与服务器进行相互认可。要让双方认为通信是可靠的。认证又可以分成单向认证和双向认证。这其中就使用了SSL协议。SSL依靠证书来验证服务器的身份,并且浏览器和服务器之间的通信加密。这样就保证了数据在传输过程中的安全性[7]。 最后来谈谈完整性保护:数据传输过程中,加密解密均有SSL进行,与上层的HTTP无关,对HTTP来说是透明的[7]。这样就实现了其完整性保护。

3 MD5加密算法

MD5即Message-Digest Algorithm 5(信息-摘要算法5),是计算机广泛使用的杂凑算法之一。MD5是将数据运算为另一固定长度值,是杂凑算法的基础原理[8]。MD5算法具有以下特点:1、压缩特性:无论原来的数据长度多大,使用MD5以后长度就是固定的。2、易计算性:计算方便,容易得出结果。3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的[9]

4 系统通信

在通信系统中,客户端与服务器间的通信是通过协议来进行数据的传输,由于网络中安全是一个不可忽视的问题,所以在本系统中采用自定义的HTTPS协议来对数据进行传输。所谓自定义HTTPS协议,就是在协议的底层还是采用HTTPS协议进行封装和编解码,但是传输的内容(消息体和消息头)是自己定义的。

在本系统中会对很多表进行数据的操作,如何让传输的数据和操作的表对应是个难题。本系统采用状态码来对不同的数据表进行存取操作。状态码一共有三位数字组成:前两位数是客户端界面的编号,第三位数是功能的编号: 0注册功能 1批改功能。每一个状态码都对应着不同的数据表,这样就可以很轻松地完成数据表的存取操作了。

4.1 信息传递流程

本系统在底层使用了Netty框架,在传输上面使用了自定义的HTTPS协议来保证数据的安全性。

上面就是服务器返回给客户端的响应,其中状态码是对请求处理结果的反映。这里状态码有三种类型:①200:成功处理请求;②400:请求出现错误;③503:服务器端出现错误。与此对应的状态码的原因短语也有三种:①OK,对应状态码200;②Bad Request,对应状态码400;③Service Unavailable,对应状态码503 。其中Type是响应的类型,比如如果是登录响应,这里的Type就有三种:登录成功(successResp)、重复登录(reResp)和登录错误(errorResp)。

1)客户端与服务器间先进行证书的认证。如果证书认证失败,直接断开连接。如果证书认证成功,执行下面的步骤,此后传输的数据均是加密完成以后再进行传输的。

2)客户端发送登陆请求,此请求中包含请求方法(比如LOGIN)和客户的ID等一些需要验证的信息。

3)服务器接收到请求以后,进行解码。并且验证客户端传输过来的信息。如果验证成功,服务器就会返回给客户端登录成功的响应。如果验证失败,服务器返回给客户端登录失败的响应。

育秧和机插技术较复杂,很多农户认为机插秧技术既繁琐又难于掌握,习惯于传统水稻种植,对接受水稻机插技术的意愿不太强,顾虑较多。作为农机推广部门,一要充分利用电视、报刊、宣传资料等加强对机插秧技术的宣传;二要组织现场演示示范,让农户到现场亲眼目睹机插示范,现场了解插秧机的效率和适用性;三要召开经验交流会,邀请机插示范户来讲机插育秧技术和机插节本增效的好处,用实践经验来说服农民群众。

5)链路建立成功后,客户端服务器会保持连接。

(3)数据访问层:主要是对数据表进行操作。

7)当对方宕机或重启、I/O 异常、监听超时、编解码异常和客户端退出时,关闭连接。

现场观众的情绪生理变化被传感器捕捉下来,通过人机交互等技术转化为数值,传递到后台计算机,以数字形态描绘出每个人的情绪曲线。从情绪曲线上可以非常直观地看出,观众的兴奋值、情绪波峰、情绪波谷及情绪变化趋势。观众情绪唤起强度明显升高,则表明他们这个时候注意力非常集中,对相关内容很关注。新华网Star生物传感智能机器人可以精准捕捉被测试者“同频共振”瞬间、“心潮澎湃”瞬间,同时还能出具测试报告、生产生理传感新闻报道。[9]

4.2 框架执行流程

  

图1 系统处理流程图

此系统主要有两个功能:①作文自动批改功能。当用户将需要批改的作文提交给服务器后,服务器会自动批改作文,并将批改结果返回给客户。②学校信息注册功能。系统会根据发送请求的类型执行不同的操作。

1)学校信息注册功能:系统用MD5算法生成学校帐号,并且将生成的账号发送给客户端。最后把学校的信息保存到School表中。

2)作文批改功能:当学校信息不正确时,系统不会进行作文批改。当信息正确的时候,系统进行作文批改,当批改结果大于90分时,将作文和范文保存到对应的表格中。

4.3 系统设计

看一个系统是否具备高并发的特性,主要可以从三个方面来判断:①传输:用什么样的通道将数据发送给对方,BIO、NIO或者AIO,IO模型在很大程度上决定了框架的性能。Netty框架使用的是异步NIO的模型来进行数据的传输,使传输变得高效。②协议:本系统使用自定义HTTPS协议,在保证了传输可靠的同时也保证了其高效性。③线程:数据报如何读取?读取之后的编解码在哪个线程进行?编解码后的消息如何派发?Netty中优秀的Reactor线程模型有效地解决了这些问题使传输高效可靠[10]。不仅如此,Netty还具有零拷贝,定制Buffer等等的特点。这些技术保证了Netty框架的高并发特性[11]

希望各出版社够增加英语原版书籍和音像材料的引进和出版,加大市场流通。尤其入门级英语原版童书绘本的市场细分需要加强和完善,以便给广大英语入门学习者提供充分地道的语言环境,为英语语言的灵活运用提供丰富的借鉴范本,为语言技能习得打好坚实的基础。

系统大体上可以分成:网络控制层、业务逻辑层和数据访问层三层架构。

4)客户端接收到响应以后进行解码,并且判断响应类型。如果是登陆失败响应,客户端主动断开与服务器的连接。如果是登录成功的响应,客户端继续发送业务请求。并且同时发送监听请求。

HTTP版本号:状态码,状态码的原因,短语;

“打虎”反腐产生了良好的震慑效果,社会清流不断涌现。在中国社会风气日渐好转的时代背景下,党的十九大审时度势,提出由打存量“老虎”为主转向拍增量“苍蝇”为主,打击基层腐败已然成为党和国家新的战略任务,有助于基层和农村形势好转,这也将成为未来中国农业和农村发展的新景。

(2)业务逻辑层:业务逻辑层的作用就是进行实际的业务操作。本层目前有两大线程:批改线程和注册线程。注册线程是进行用户注册的。在业务逻辑层还有批改线程:此线程会每隔一段时间就扫描作文待批改队列,如果在队列中有需要批改的作文,线程就会进行作业的批改,如果没有需要批改的作业,线程就会处于等待状态。在未来还要继续增加:分享线程、查询线程、提交线程、备份清洗线程和终止线程。其中分享线程主要进行作业或者资源的分享。查询线程是让用户根据自己的需求查询需要的信息。提交线程是让用户进行数据的提交。备份清洗线程的作用是定时备份数据库中相关表格和删除表格。终止线程是关闭数据库和服务器。

6)服务器接收到客户端的请求后,进行解码。并且通过请求的方法名来判断请求类型。当请求类型是监听请求时,服务器发送监听响应。如果请求类型是其他的类型,服务器会将请求的数据保存到链表中,进行处理。

内酯类物质具有典型的甜香味和椰子味,在国内外研究中认为,这类物质具有助香作用。本研究中β-壬内酯在35度和52度五粮液中的香气强度较其他五粮液的大,说明酒体中甜香味的差别可能与该类物质有关。低级醛类物质,如2-甲基丙醛、3-甲基丁醛一般贡献割青草味和青涩味,低度五粮液(35度和39度)中2-甲基丙醛的香气强度大于高度五粮液;3-甲基丁醛则在所有五粮液中均呈强烈的割青草味(均为5)。而这些物质对酒体的总体贡献度将是下一步工作的研究重点。

将诊断模型预测概率存为新变量绘制ROC曲线(图1),其曲线下最大面积为0.947,表明该诊断模型拟合效果(即可靠性)好,模型的拟合优度较好(P=0.056)。

5 传输协议格式

本系统的传输协议是自定义HTTPS协议。自定义HTTPS协议的意思就是:在协议的底层使用成熟的HTTPS协议,但是传输的数据和格式全是自己重新定义的。

协议分成传输请求和传输响应两个部分:

5.1 传输请求

请求方法名: /Teacher或/Student,HTTP版本号;

步骤2:按属性重要性(即条件属性的决策权值)由小到大对属性aj(j=1,2,…,m)进行排序,若出现重要性相同的情况,则依据各条件属性候选断点的个数从多到少进行排序。

Date:请求发送日期,年-月-日;

Content-Length:请求中实体主体的大小,单位:Byte;

Content-Length:请求中实体主体的大小,单位:Byte;

Body: 实际过程需要传输的数据,使用protobuf进行序列化。

请求的最开始是请求的方法名,相比于传统的HTTP协议的方法名(PUT GET等),这里的方法名是重新定义的,比如说进行登录请求时方法名是LOGIN;进行提交请求时方法名是SUBMIT等等。接下来是URL的值,这里的数值只有两种:Teacher和Student分别对应教师或者学生的请求。在Body中,里面装的是服务器需要进行处理的数据,为了传输的高效性,这里将数据进行序列化以后再进行传输。这里使用的序列化工具是Google公司推出的Protobuf工具。这个工具具有压缩率高,传输性能好,安全性能高等一些特性。

5.2 传输响应

(1)网络控制层:网络控制层可以分成3大线程。监控线程:本线程的作用是对客户端进行监控。监控线程会定时发送监听请求,用来监听客户端是否掉线。接收数据线程:本线程的作用是负责从互联网接收海量客户端发送来的 HTTP 请求并解析它们,同时根据解析结果把这些 HTTP 请求按照分类存入对应的消息队列中,并负责唤醒对应的工作线程;发送数据线程负责把业务逻辑层与数据访问层处理完成的数据发送给对应的客户端。

Date:请求发送日期,年-月-日;

Type:响应的类型;

Waters Acquity UPLC-TQ-D型液质联用仪(美国,Waters公司),H1650R台式高速冷冻离心机(中国,上海卢湘仪离心机仪器有限公司),BT125D电子天平(德国,赛多利斯股份公司),G560E涡旋混合器(美国,Scientific Industries公司)。

Body: null。

2.有效地处理情绪。当外方监督大发雷霆暴跳如雷的时候,我方项目经理并没有生气和发火,而是有条不紊地进行沟通,摆事实,讲道理。这和《哈佛管理导师》课程的情绪处理不谋而合。项目经理保持冷静,觉察外方监督的意图,了解到他的信息和目的后,克服困难,很好地解决了问题。

客户端与服务器之间数据交换的过程,处理步骤如下:

党的十八大报告指出:“中国特色社会主义,既坚持了科学社会主义基本原则,又根据时代条件赋予其鲜明的中国特色,以全新的视野深化了对共产党执政规律、社会主义建设规律、人类社会发展规律的认识,从理论和实践结合上系统回答了在中国这样人口多底子薄的东方大国建设什么样的社会主义、怎样建设社会主义这个根本问题,使我们国家快速发展起来,使我国人民生活水平快速提高起来。”[1]中国特色社会主义从道路、理论和制度方面揭示中国特色社会主义发展的本质和规律,推进中国特色社会主义健康发展的重要原因,是它所具有的先进思维方法,即马克思主义科学分析方法。这种方法是一个体系,可以从不同层次、不同角度来把握,但主要是以下几种。

6 系统可靠性分析

在复杂的网络环境中,每一个细小的失误都会导致服务器出现故障,因此本系统设计了两大方案保证系统的可靠运行。

(1)识别是否进入油气层。图1中进入D区前3H曲线状态为WH 为高值且较稳定,CH和BH值较接近,偶尔交叉重合;进入D区后3H曲线变化较大,CH 曲线和BH 曲线突然交叉,CH 值减小,BH值增大,WH 值也缓慢增大,最终形成WH>BH>CH的格局,且在D区内趋势较稳定。进入D区后,甲烷相对含量骤然增大,虽然D区下部气测值有较大降幅,但其甲烷相对含量依然保持较稳定的状态。从图1还可看出,CH曲线和BH 曲线的交叉点及甲烷相对含量突变点正好与电阻率高值半幅点基本吻合,再结合现场岩屑和荧光录井资料,可判断D区进入了油气层。

6.1 监听机制

本系统的客户端首先发送监听请求,当服务器端接收到客户端发送过来的请求后,服务器端生成监听响应,并且发送到客户端。当客户端接收到监听响应以后,将生成的监听请求发送到服务器,然后服务器就重复上述步骤。如果出现掉线的情况,客户端或者服务器就不再发送监听信息,当客户端和服务器在一个自己规定的时间端内没有数据的传输,那么服务器就认定此客户端已经离线。这样通过这种监听机制,可以保证通信的任何一方出现网络故障、I/O异常或者系统出错,都能被及时地检测出来,保证了系统的有效性和可靠性。

6.2 登录保护

采用登录列表的方式防止用户的重复登录。登录保护功能是由服务器实现的,首先服务器会将所有合法的用户存放到一个用户列表中,当有用户登录服务器以后,服务器首先会在用户列表中寻找是否有此用户的信息,如果没有直接返回登录错误的响应。当有此用户的信息以后,服务器会再在登录列表中查找是否有此用户信息,如果登录列表有此用户,服务器直接返回重复登录响应,如果没有此用户信息,服务器返回登录成功的响应。并将此登录用户信息保存到登录列表中。如此一来,就保证了用户的登录安全,实现了登录保护。

7 实验结果

在Windows Server 2016环境下对本系统进行简易实现,测试设备是:两台配备1000 Mb/s 以太网卡和16 G内存的 Intel Xeon 机器。本文测试CPU占用率、系统响应时间能和内存占用率等,并将其与传统的Tomcat 和基于Netty框架和私有协议的系统进行对比。

  

图2 CPU占用率

图2测试的是系统对CPU的占用率。对于传统的Tomcat网络服务器,当有大量客户接入的时候,此时的CPU几乎已经使用完,但是基于Netty开发的服务器当有高并发的情况时,其CPU占用率可以维持到一个良好的范围。自定义HTTPS协议由于已经有了成熟的编解码和传输性能,所以其实验效果比私有协议要好一些。

图3是系统响应时间的实验,当客户端的并发数量比较小的时候,三种系统的响应时间差别不大。但是当客户端的并发数量不断增长,传统的Tomca服务器的响应时间越来越大,但是基于Netty开发的系统依然具有低响应的特性。可见基于Netty开发的服务器有良好的并发特性。

  

图3 系统响应时间

图4是内存占用率实验,可以看出在相同并发量的情况下,基于Netty开发的服务器所占用的内存比Tomcat服务器小得多。当并发量大于1 500的时候,本系统的内存占用率较基于Netty和私有协议开发的服务器要小一些。

  

图4 内存占用率

图5是请求消息接收准确实验,其中F1值是消息准确率和召回率的平均值,可以用来衡量系统接收消息的准确性。可以看出在相同并发量的情况下,基于Netty开发的服务器接收消息准确性要比Tomcat大得多。

  

图5 请求消息接收准确率

使用Netty框架,本文设计并实现了一种高并发、高可靠的服务器。从实验结果可以看出当客户端的并发量明显提升的时候,本系统相较于其他服务器,在CPU占用、内存使用和系统响应等方面都有着明显的提升,有较高的通信效率和可靠性。

组合平台的水平度的好坏,精确度的高低,平台搭设的是否牢固,平台上是否有焊点、瘤子等尖锐物体,在搭设组合平台时都是需要注意考虑的问题。不能因为是临时平台就要降低标准,放松要求。

参考文献

[1] 郑建军. Java在高并发网络编程中的应用[J]. 电脑编程技巧与维护,2013(18):50-51.

[2] 杨光辉. 高性能网站架构:互联网系统架构的演进[J]. 程序员, 2013(9):22-28.

[3] 李林锋.Netty权威指南[M].北京:电子工业出版社,2014:180-300.

[4] 蒋俊杰. Cluster Work 分布式协作框架资源管理模块的设计与实现[D]. 南京:南京大学, 2015.

[5] Gourley D, Totty B. HTTP权威指南[M]. 北京:人民邮电出版社,2012:1-80.

[6] 上野宣.图解HTTP[M].北京:人民邮电出版社,2014:20-80.

[7] 陈涓,赵振平. HTTP权威指南[M].北京:人民邮电出版社,2012:1-343.

[8] 张裔智,赵毅,汤小斌.MD5算法研究[J].计算机科学,2008(7):295-297.

[9] 张绍兰,邢国波,杨义先. 对MD5的改进及其安全性分析[J]. 计算机应用,2009(4):947-949.

[10] 袁劲松, 马旭东. 基于阻塞与非阻塞 I/O 网络模型的 Java 语言实现[J]. 计算机系统应用, 2008, 17(9):98-101.

[11] 龚黔芬. 解析Java中的阻塞I/O与非阻塞I/O控制[J]. 重庆文理学院学报(自然科学版), 2006, 5(1):18-20.

 
潘思聪
《桂林航天工业学院学报》2018年第01期文献

服务严谨可靠 7×14小时在线支持 支持宝特邀商家 不满意退款

本站非杂志社官网,上千家国家级期刊、省级期刊、北大核心、南大核心、专业的职称论文发表网站。
职称论文发表、杂志论文发表、期刊征稿、期刊投稿,论文发表指导正规机构。是您首选最可靠,最快速的期刊论文发表网站。
免责声明:本网站部分资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有
如有不愿意被转载的情况,请通知我们删除已转载的信息 粤ICP备2023046998号