HP―UNIX下IO多路复用网络服务器的设计方案.docVIP

  • 6
  • 0
  • 约3.48千字
  • 约 6页
  • 2016-09-10 发布于北京
  • 举报

HP―UNIX下IO多路复用网络服务器的设计方案.doc

HP―UNIX下IO多路复用网络服务器的设计方案.doc

HP―UNIX下IO多路复用网络服务器的设计方案   摘 要:文章首先介绍了TCP网络服务器实现的思路,然后详细描述了用到的相关技术。在文中还详细介绍了实现IO多路复用的服务器的设计方案。最后介绍了网络编程的最新的发展情况和新的技术。文中提到的TCP网络服务器指的都是以软件方式运行的服务器,而非硬件服务器。   关键词:TCP协议;网络服务器SOCKET编程;HP-UNIX;多路复用;阻塞   中图分类号:TP393.09   1 TCP网络服务器概述   当今社会是网络时代,计算机和网络通信技术的发展,使得电脑已经走进了千家万户。我们平时上网浏览网页、收发邮件、下载文件,其实都是在和TCP网络服务器打交道,打开电脑连接网络,其实都是在和居于幕后的各种各样的服务器做交流。在日常应用中,我们经常接触到的服务器有数据库服务器、WEB服务器、FTP服务器、邮件服务器以及各种媒体服务器,它们都是以软件的方式来实现,然后运行在硬件服务器上。   HP-UNIX是一个网络操作系统,同是它也是一个商业操作系统,安装并运行在专用的硬件服务器。它是UNIX操作系统的一个分支,支持各种网络编程技术,同时也支持多进程和多线程。服务器编程,用到的技术主要有SOCKET网络编程,涉及到的是传输层的TCP/IP协议。对于重要的网络服务应用,基本都是IO多路复用的并发服务器。   2 系统设计基本原则   2.1 支持并发。所谓并发,对于网络服务器而言,就是在同一时间内发生的客户访问。服务器必须支持同一时间多个客户端的连接;在编程实现上,一种技术是IO多路复用,另一种技术是使用多进程或者多线程。   2.2 减少资源占用。根据请求的业务逻辑,实现最快的时间响应和最小的时间延迟;服务器在运行时,尽量减少占用服务器资源,包括内存、CPU使用率等等。   2.3 运行稳定。系统能够7*24小时不间断运行,并且工作正常。   2.4 系统自维护。输出运行信息,便于用户进行系统维护和诊断系统运行故障。   3 设计方案   3.1 IO复用方案。一种是通过非阻塞的方式实现。在这种方式下,服务器仅仅注意检查是否有客户在等待连接,有就接受连接;在没有客户在等待时accept调用立即返回。同样,如果有用户发送了数据则recv接收数据,如果没有接收到数据,recv也会立刻返回。但是这种轮询会占用CPU资源,使CPU处于忙碌中工作状态,从而降低性能。   另一种是使用select函数来实现。调用非阻塞的socket会大大地浪费系统资源。而调用select()会有效地解决这个问题,它可以把服务器进程本身挂起来。它使用系统内核监听服务器已接收的所有文件描述符,包括读写和连接在内的任何活动,只要确认在被监控的文件描述符上出现活动(包括有用户连接、用户发送了数据),select()调用将返回,并把有事件活动的文件描述符准备好,从而实现了服务器进程的并发。这种方式,可以随时找出客户端的任何变化,而不必由进程本身对输入进行测试而浪费CPU开销。经过比较,方案采用select函数调用来实现IO多路复用。   3.2 服务调度方案。当一个用户连接服务器之后,服务端可以通过多进程的方式提供服务,也就是使用fork函数调用;也可以使用多线程的方式提供服务,也就是调用pthread系列函数。使用fork实现在技术实现方式上比较简单,但是占用资源比较大,系统开销比较高;使用多线程的方式,有一定的技术难度,但是系统资源占用较低,从服务器本身来说内存占用及CPU使用率等都不高。HP-UNIX平台支持多线程技术,也支持多进程的实现方式,在这里,我们采用多线程的方式。   3.3 稳定性方案。服务采用循环服务的方式,除非是手动停止服务器,否则永远运行。   3.4 运行信息输出方案。服务器以文本文件的方式提供运行日志,实时记录本身的运行数据。包括连接、断开情况,数据发送、接收情况;最重要的是特殊情况的记录,如各种出错信息异常信息等。   4 系统用到的技术   4.1 Socket编程。socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open-读写write/read-关闭close”模式来操作。在实现服务的过程中,会调用一个名称为socket的函数,它处于网络协议和用户进程之间,是一个抽象的概念。   Socket主要的应用分式分为两种,一种是保持稳定的连接,以STREAM数据流的方式提供服务,称为TCP;另一种是没有连接,以DATAGRAM数据报的方式提供连接,被称为UDP。只有在数据准确性能够允许一定差错,实时性要求不高、或者数据量小的场合才会使用UDP数据报的连接方式,其它场合,都会使用TCP连接。  

文档评论(0)

1亿VIP精品文档

相关文档