您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 基于GPS车载监控系统的并发服务器的设计策略
基于GPS车载监控系统的智能设计策略摘要:由于GPS车载终端具有并发客户多和数据信息量大的特点,因而其应用范围极其广泛。为了便于对数据进行分析处理,对客户做到更快的响应,为客户提供服务,对数据进行存储转发,使得高性能服务器程序的设计显得尤其重要。文中基于多线程设计了高性能服务器程序,从而对处理客户端的并发请求问题提出了很好的解决方案。文中首先介绍了IOCP模型的原理,接着用IOCP模型对高性能服务器程序的设计提出了设计方法,通过比较CPU的利用率和内存的使用率等参数,得出IOCP在设计服务器上提供了最佳的系统性能。最后提出了高性能服务器程序的设计方案。关键词:GPS车载监控系统;IOCP模型;并发控制;事件;流的控制IntelligentdesignstrategiesbasedonGPSvehiclemonitoringsystemLiuLiu1,NingXu2(1.,WuhanUniversityofTechnology,Wuhan430070,China;2.,WuhanUniversityofTechnology,Wuhan430070,China)Abstract:GPSvehiclemonitoringsystemhasthecharacteristicsofnumerouscustomersandlargeamountofdata,soitiswidelyused.Inordertofacilitatedataanalysisandprocessing,achievefasterresponsetocustomers,providingservicestocustomers,datastoreandforward,makesthedesignofhighperformanceserverprogramparticularlyimportant.Inthepaperhasdesignedahigh-performanceserverprogrambasedonmulti-threads,thustoputsforwardgoodsolutionstoprocessclientconcurrentrequestproblem.FirstlyintroducingtheprincipleofIOCPmodel,then,usingtheIOCPmodeltoputadesignmethodforthehigh-performanceserverprogramdesign,throughcomparingCPUutilizationandmemoryutilizationratiowithSelectmodel,thenconcludedthatIOCPprovidesthebestperformanceofthesystemindesignontheserver.Finallyputsforwarddesignschemeofhigh-performanceserverprogram.Keywords:1引言凭借着其高精度、全天候、高效率、全球性等特点GPS(GlobalPositionSystem)在各领域发挥着重要的作用。在互联网与移动通信交叉的领域尤其能显示出其优越性,如本文所论述的车载终端。GPS车载监控系统又称GPS车辆管理系统或GPS车载监控系统,它依托卫星定位、地理信息及无线通信等技术手段,实时掌握车辆位置和状态数据,为物流运输企业提供调度管理信息的软硬件综合系统。然而车载终端必须与服务器程序和客户端程序相融合才能发挥其作用。由于客户连接数和数据量的庞大,使得服务器程序的压力也显得很大。高性能服务器程序的主要作用是能够高效的处理大量并发客户的请求,并且快速及时的处理客户的数据,同时将部分应答信息回传给客户端。要设计好一个性能优良的服务器程序,要考虑很多方面的因素,如CPU的使用率、Memory的开销等。要想做到高效处理并发用户的请求,服务器程序就需要解决两个主要的问题,一是处理并发客户的连接请求,二是对并发数据的处理。要解决这些问题,可以根据处理器内核的数量,来创建等量的工作线程,并结合IOCP(Input/OutputCompletionPort,IOCP))模型,以及操作系统的线程调度机制。文中采用多线程并结合IOCP模型对高性能的服务器程序设计进行了深入的探讨。2整体框架介绍基于车载终端的并发服务器程序的设计,主要框图如下所示。客户通过车载终端使用GSM通信设备向服务端程序发送信息。由服务端程序对数据信息进行分析处理,并将部分处理结果反馈给客户,同时将数据存储到数据库作为备份以供网站使用。另外客户可以通过网站查询汽车的相关信息。图1系统设计图3服务器程序的设计3.1IOCP模型原理IOCP是一种能够合理利用与管理多线程的机制。它是迄今为止Windows平台上最为复杂的一种I/O模型,当应用程序必须一次管理多个套接字时,完成端口模型提供了最好的系统性能,这个模型也提供了最好的伸缩性,非常适合用来处理上百、上千个客户。IOCP模型提供了一个高效复杂的内核对象,该对象通过指定数量的线程,可以在套接字上投递重叠发送和接收请求处理I/O。它的核心思想简单概括如下:将所有用户的请求投递到一个消息队列中,利用事先创建好的若干个工作者线程逐一从消息队列中取出消息并加以处理。它可以为任何用户的任何I/O操作服务,只需少数几个线程就可以处理大量I/O请求,避免CPU花费时间在大量的线程调度上,提高了资源的利用率。3.2采用IOCP模型处理并发用户3.2.1多线程的并发处理众所周知,高并发的大型服务器程序一直面临着架构复杂、线程众多难以管理、并发性能提升困难的问题。为此,各种平台都提供系统级的高级设施来协助开发者解决这个难题,例如Linux平台的epoll。对于我们熟悉的Windows平台,则有一个名为IOCP(完成端口)的内核对象,通过它,我们可以方便地创建高并发、高性能、可伸缩的网络服务器程序。下图2为IOCP模型用来解决大量用户同时请求连接服务器问题的示意图。IOCPServerProgramSendDataFeedbackFeedbackSQLDataDataBaseDataWebSite客户车载终端GSM图2IOCP模型图秉承低耦合的原则,在服务器程序设计中,我们为并发用户的连接请求,创建了四个独立的线程来进行调度处理客户的连接请求。采用这种四个线程(双核处理器)处理的机制,用来处理用户连接请求的建立,能够很好的解决大量并发用户的连接请求。3.2.2并发客户缓冲链表策略在该服务器程序的设计中我们采用链表缓冲策略来进一步的解决这个问题。该策略的原理图如下图3所示。图3缓冲链表图把已经建立的客户插入到缓冲链表中以供其他线程接收客户端发送过来的数据。在这种模式下,这四个线程只需与客户建立连接,而不去处理客户的其他请求,从而提高了服务器程序处理客户请求的速度。也不必因为等待客户端的数据,而阻塞在建立连接的线程中。3.2.3并发互斥的控制当然这几个服务器程序中的几个线程之间要处理好互斥问题,因此我们还采用了临界段(Criticalsection),通过临界段来控制线程之间的对共享数据(数据缓冲链表)的操作。这种机制在很大程度上可以解决服务器程序因为访问同一内存地址,而导致的内存访问冲突(内存不能为read或者不能为write)。3.2.4懒惰资源的智能回收机制在服务器程序设计过程中还考虑到系统的有限资源,不能把系统宝贵的资源分配给一些长时间没有任何操作的客户。在该服务器程序中把分配给这些用户的资源称为懒惰资源。为了充分利用系统资源,服务器程序还采用了清理策略,即模拟线程池机制,首先在系统中申请一块连续的内存空间,然后之后的内存申请就在这些已经申请好的内存中进行分配;另外,线程在规定的时间内,只要客户不进行任何相关的操作如:未发送数据,则强制关闭该客户并将其所占的懒惰资源进行回收IOCPserverprogramsSucceedclientconnectionInsertlistsclientConnectrequestBufferlists123…..N连接请求n连接请求1IOCPServerProgramThread1Thread2Thread3Thread4ClientConnection到内存池重新利用。这种采用链式的处理思想存在一定的误差,即不能够很准确的在规定的时间内将所有符合条件的客户连接给断开,但是这种思想能够减少系统宝贵资源的消耗。3.3大量并发数据的处理在该服务器程序中客户端每隔一定的时间便向服务器发送指定格式的信息,所以数据信息量是非常庞大的。为了解决这个问题,采用了双缓冲机制的策略,通过使用两个缓冲区实现了对大量数据的接收和处理。其原理图如下图4所示。图4双缓冲区原理图3.3.1数据的接收低耦合性,是该服务器程序所秉持的原则之一,所以采用单独的线程接收来自客户端的数据。在数据接收线程中使用while(true)来,使该线程不断的接收来自客户端的数据,从而避免缓冲区的数据没有得到及时的处理。另外若只是采用while(true),那么该线程将会消耗大量的系统资源,为了能够解决该问题而采用的事件通知机制。基于该思想,使得该线程只有当客户端有可以接收的数据才进行工作,从而避免了系统资源的消耗。3.3.2数据的处理为了能够很好的缓解缓冲区的压力,所以必须能够及时的对缓冲区的数据进行处理。同样也为了能够提高系统的性能,降低系统资源的开销,也采用了事件通知机制:即只有SQL处理队列中有SQL语句,才使该线程做相关的工作。基于这种机制在很大的程度上能大大提高了服务器程序的性能。3.4智能的线程重启服务器程序中由于一共存在若干个线程,只要一个线程因为异常或者运行结束而退出,那么其他线程的基本上做的都是无用功。因而该系统中必须能够解决线程退出或者因异常而结束的问题,datadatadatadatareceivingthreaddatanoticedataprocessingthreaddataprocessingthreaddatareceivingthreadIOCPserverClient1Client2ClientNClientN+1……datanoticeDataBasethreadRawdatabufferSQLbuffering从而确保整个系统能够良好的运行。所以创建了一个检测线程,在该线程中不断的检测各线程是否正常运行;另外,由于考虑到服务器程序性能的问题,所以我们并不是使该线程一直在使用时间片。而是采用在指定的时间间隔内对服务器程序中的所有线程进行检测,如若发现线程异常或退出则重新启动线程,从而使服务器程序能够继续正常工作。4试验结果分析为了检测使用IOCP模型设计的服务器程序的性能,将从CPU利用率和内存的使用率两个方面进行分析。并将其和Select模型的结果进行对照,得出IOCP模型在服务器程序设计上具有较佳的性能。比较结果如下表。表1CPUUtilization连接数IOCP模型(%)连接状态SelectModel(%)连接状态改进率(%)10006.20连接成功12.04连接成功5.8430007.15连接成功32.73连接成功25.58600011.32连接成功60.45连接成功49.132000020.86连接成功_部分成功_表2MemoryUtilization连接数IOCP模型(%)连接状态Select模型(%)连接状态改进率(%)10000.72连接成功1.55连接成功0.8330002.75连接成功14.60连接成功11.8560003.10连接成功35.00连接成功连接成功200004.02连接成功_部分成功_5结束语GPS车载终端要求服务端程序能够高效的处理并发数据和并发客户的连接请求,另外要求服务端程序能够及时的对客户的操作做出响应,使用IOCP模型并结合多线程对服务器程序进行设计能够很好的满足GPS车载终端的要求。同时也采用了双缓冲机制、懒惰资源的回收机制、
本文标题:基于GPS车载监控系统的并发服务器的设计策略
链接地址:https://www.777doc.com/doc-2569891 .html