第七讲 服务器软件设计的算法和问题.ppt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第七讲 服务器软件设计的算法和问题 第七 服务器 软件设计 算法 问题
- 资源描述:
-
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,计算机通信与网络编程,电子科大计算机学院,*,单击此处编辑母版标题样式,互联网络程序设计,第七讲 服务器软件设计的算法和问题,电子科技大学软件学院,计算机通信与网络编程,电子科大计算机学院,本讲概要,无连接和面向连接的服务器访问,无状态和有状态的服务器应用,循环和并发的服务器的实现,计算机通信与网络编程,电子科大计算机学院,服务器算法,简单服务器的算法:,创建套接字,绑定到一个熟知端口,期望在这个端口上接收请求,进入无限循环,接受客户请求并应答,只适用于最简单的服务,socket,服务器端,bind,listen,accept,close,send,recv,简单服务器的算法有时候并不合理,这样情况:,联系这个简单服务器的第,1,个客户要求传送,1,个巨大的文件(,200,兆,B,),而联系到这个服务器的第,2,个客户要求传送,1,个小的文件(,20B,),如果服务器一直等到第,1,个文件传送完毕才考虑传送第,2,个文件,那第,2,个客户就将为了,1,个小文件的传送而等待一段,不合理的时间,因为请求很小,第,2,个用户期望可以得到立即的处理。但如果按照简单服务器算法来处理这样情况可能不合理。,要考虑现在使用的服务器是如何处理的?,计算机通信与网络编程,电子科大计算机学院,并发服务器和循环服务器,循环服务器:一个时刻只处理一个请求,并发服务器:一个时刻可以处理多请求,常见的并发技术:,多线程并发技术,:(多数只提供表面并发)执行,多个线程,,每个线程处理一个请求,单线程异步,I/O,技术,:计算量小,主要是异步,I/O,管理多个连接,多进程并发技术,:并发处理多个请求,而不是指下层是否使用了多个并发线程,计算机通信与网络编程,电子科大计算机学院,并发服务器和循环服务器,循环服务器,(,1,),特点,:容易构建,但是性能差(,因这样的服务器要使客户等待服务,),(,2,),应用场合,:如果服务器的访问量不大,而且客户的每个请求所需要的处理时间短,并发服务器,(,1,),特点,:难以构建和设计,但是性能好,(,2,),应用场合,:如果服务器的客户访问量较大,而且每个请求可能需要较长的,I/O,处理时间,各个请求所要求的处理时间变化很大,服务器运行在具有多个处理器的计算机,计算机通信与网络编程,电子科大计算机学院,面向连接和无连接的访问,连接性是问题是传输协议的中心,,TCP/IP,提供了两种协议:,TCP,UDP,使用,TCP,的服务器是面向连接的服务器,使用,UDP,的服务器是无连接的服务器,选择面向连接或者无连接的服务,依赖于应用协议,设计上使用面向连接的传输服务的应用协议时,如果实际中使用了无连接的传输协议时,将可能,不能正确,地运行或者,不能有效,运行。,计算机通信与网络编程,电子科大计算机学院,传输协议的语义,TCP,的语义,点到点通信,建立可靠连接,可靠交付(按序),具有流控的传输,双工传输,流模式,UDP,的语义,多对多通信,不可靠服务,缺乏流控制,报文模式,选择传输协议,需要考虑应用程序要求的语义,计算机通信与网络编程,电子科大计算机学院,面向连接的服务器,面向连接的服务的优点:,易于编程,传输协议会自动处理分组丢失,分组失序,服务器不需考虑,自动验证数据差错,处理连接状态,面向连接的服务的缺点:,对每个连接都有一个单独的套接字,耗费更多的资源(而,os,必须永远运行而不能耗尽资源),在空闲的连接上不发送任何分组,始终运行的服务器会因为客户的崩溃,导致无用套接字的过多而耗尽资源,导致服务器终止运行,计算机通信与网络编程,电子科大计算机学院,无连接的服务器,优点:没有资源耗尽问题,缺陷:需要自己完成可靠通信问题,必要时,需要一种自适应重传的复杂技术,需要程序员具有相当的专业知识,对于可靠通信的场合,尽量使用,tcp,是否需要组播或者广播是考虑选择何种传输方式的一个因素,tcp,只提供点到点通信,不允许应用访问广播或组播,支持组播或者广播的服务器必须是无连接的,udp,计算机通信与网络编程,电子科大计算机学院,四种基本类型的服务器,循环的或者并发的,使用面向连接的或者无连接的传输,循环的,无连接,循环的,面向连接,并发的,无连接,并发的,面向连接,计算机通信与网络编程,电子科大计算机学院,请求处理时间,循环服务器是最简单的,客户按照顺序等待。是否能够满足要求取决于所需的反应时间,观测响应时间,:客户发送请求到服务器响应之间的全部时延。,请求处理时间,:服务器处理单个孤立的请求所花费的时间。,当服务器正处理一个已经存在的请求时,另一个请求到达了,系统将这个新的请求,排队,计算机通信与网络编程,电子科大计算机学院,请求处理时间,当服务器有一个队列的请求需要处理时,,观测响应时间,请求处理时间,当服务器有一个队列的请求需要处理时,观测响应时间如何变化?,计算机通信与网络编程,电子科大计算机学院,循环的面向连接的服务器算法,通过,TCP,的面向连接的循环服务器算法,1,、创建套接字并将其绑定到它所提供服务的熟知端口上;,2,、将该端口设置为被动模式,使其准备为服务器所用;,3,、从该套接字上接收下一个连接请求,获得该连接的新的套接字;,4,、重复地读取来自客户的请求,构造响应,按照应用协议向客户发回响应;,5,、当某个特定客户完成交互时,关闭连接,并返回步骤,3,以接受新的连接。,计算机通信与网络编程,电子科大计算机学院,用,INADDR_ANY,绑定熟知端口,服务器需要创建套接字并将其绑定到所熟知的端口上,getportbyname,:服务名映射到熟知端口上,bind,为某个套接字指明某个端点,使用结构,sockaddr_in,,该结构含有,IP,地址和端口号,对于多接口主机使用,INADDR_ANY,(特殊常量)指明了一个通配地址(取替某个特定,IP,地址),让该主机的任何一个,IP,地址都匹配。允许套接字接收发给该机器的任一个,IP,地址的数据报,计算机通信与网络编程,电子科大计算机学院,将套接字置于被动模式,调用,listen:,将套接字置于被动模式,一个参数指明套接字内部的请求队列长度,请求队列保存一组,TCP,传入连接请求,来自客户,都向这个服务器请求一个连接,接收连接并使用这些连接,调用,accept:,获得下一个传入连接请求,返回新的连接的套接字的描述符,服务器接收这个新连接,使用,read,获得来自客户的应用协议,使用,write,发回应答。,服务器结束连接,使用,close,释放套接字,计算机通信与网络编程,电子科大计算机学院,无连接循环服务器的算法,多数循环服务器使用无连接的传输,循环服务器对于小的处理时间的服务工作很好。,无连接,服务器算法如下:,1,、创建套接字并将其绑定到所提供服务的熟知端口上;,2,、重复读取来自客户的请求,构造响应,按照应用协议向客户发回响应。,计算机通信与网络编程,电子科大计算机学院,无连接的服务器中构造应答,无连接服务器不能使用,connect,(因限制了套接字的使用),无连接服务器使用,sendto,:,指明了发送的数据报和它将去的地址,retcode,=,sendto(s,msg,len,flags,toaddr,toaddrlen,);,其中,,msg,是缓存的地址,该缓存含有要发送的数据,toaddr,是指向,sockaddr_in,结构的指针,该结构含有报文将发往的端点的地址,计算机通信与网络编程,电子科大计算机学院,无连接的服务器中构造应答,服务器从收到的请求中的源地址获得应答的地址。调用,recvfrom,得到数据和对方的地址,retcode,=,recvfrom(s,buf,len,flags,from,fromlen,);,recvfrom,有两个指定了两个缓存的参数:,将到达的数据报放置在一个缓存中(,buf,),把发送者的地址放到第二个缓存(,from,指明),计算机通信与网络编程,电子科大计算机学院,引入并发服务器的原因:,需要给多个客户提供快速的响应时间。,并发性将会缩短响应时间,计算机通信与网络编程,电子科大计算机学院,并发服务器的算法,在以下场合,并发,将会缩短反应时间,给多个客户提供快速响应。,构造要求有相当的,I/O,时间的响应,即使只有一个,CPU,,也可以部分重叠地使用处理器和外设(当处理器忙于计算响应时,,I/O,设备可以将数据传送到存储器中,而这可能是其他响应所需要的),各个请求所要求的处理时间变化很大,时间分片允许单个处理器处理那些只要求少量处理的请求,而不需要等待处理完那些需要很长处理时间的请求,服务器运行在具有多个处理器的计算机上,不同的处理器处理不同的请求,结论:,大多数并发服务器自动适应下层的硬件:,硬件资源(如更多的处理器)给得越多,这些服务器的性能就越好,计算机通信与网络编程,电子科大计算机学院,主线程和从线程,尽管可以使用一个单线程实现并发服务器,但是大多数使用多线程:,主线程,最先开始执行在熟知的端口上打开一个套接字,等待一个请求,并为每个请求,创建一个从线程,(可能在一个新进程中),主线程不与客户直接通信,,每个从线程处理一个客户的通信。,从线程,构成响应并发送给客户后,这个从线程便退出,计算机通信与网络编程,电子科大计算机学院,并发的无连接的服务器的算法,主服务器线程接受传入请求(数据报)并为处理每个传入请求而创建一个从线程:,主,1,、创建套接字并将其绑定到所提供服务的熟知地址上。让该套接字保持为未连接的,主,2,、反复调用,recvfrom,接收来自客户的下一个请求,创建一个新的从线程来处理响应,从,1,、从来自主进程的特定请求以及到该套接字的访问开始,从,2,、根据应用协议构造应答,并用,sendto,将该应答发回给客户,从,3,、退出(即:从线程处理完一个请求后就终止),计算机通信与网络编程,电子科大计算机学院,并发的无连接的服务器的算法,由于创建进程或者线程是昂贵的,因此只有很少的,无连接,服务器采用并发实现,程序员必须仔细考虑:在无连接协议情况下,并发性的开销是否比,速率上的获益(并发性的好处),大,计算机通信与网络编程,电子科大计算机学院,并发的面向连接服务器算法,面向连接的服务器在多个,连接,之间(而不是在各个请求之间)实现并发,主服务器线程接受传入连接,并为每个连接创建一个从线程或进程。,主线程从来不与客户直接进行通信。,在从线程同这个客户进行交互时,主线程在等待其他的连接,从线程处理完毕后,它就关闭这个连接。,计算机通信与网络编程,电子科大计算机学院,并发的面向连接服务器算法,在多个,连接,之间实现并发,主,1,、创建套接字并将其绑定到所提供服务的熟知地址上。让该套接字保持为面向连接,主,2,、将该端口设置为被动模式,主,3,、反复调用,accept,以便接收来自客户的下一个连接请求,并创建新的从线程或者进程来处理响应,从,1,、由主线程传递来的连接请求开始,从,2,、用该连接与客户进行交互;读取请求并发回响应,从,3,、关闭连接并退出,计算机通信与网络编程,电子科大计算机学院,服务器并发性的实现,两种形式的并发性:进程和线程,服务器创建多个进程,每个进程都有一个执行线程,服务器在一个进程中创建多个执行线程,将在,11,章和,12,章说明,主进程,从进程,主线程,从线程,主从进程都由一个单线程的进程实现,一个进程包含多个执行线程,计算机通信与网络编程,电子科大计算机学院,把单独的程序作为进程使用,并发服务器为每个连接创建一个新从线程,对于单线程的进程:采用,fork,实现,程序中包含主进程和从进程的全部代码,在调用,fork,之后,原进程由循环回去接受下一个传入连接,而新进程成为处理这个连接的从进程,计算机通信与网络编程,电子科大计算机学院,#include,#include,int,mul,sum,;,int,main(void,),int,i,pid,;,sum=0;,mul,=1;,if(pid,=fork()0),for(i,=1;i=5;i+),printf(The,value of i is%,dn,i,);,fflush(stdout,);,sum+=i;,printf(The,sum is%,dn,sum,);,/,父进程,else if(,pid,=0),for(i=1;i 0),for(i,=1;i=5;i+),printf(The,value of i is%,dn,i,);,fflush(stdout,);,sum+=i;,printf(The,sum is%,dn,sum,);,/,父进程,else if(,pid,=0),execl(./mul,./mul,NULL,);,else,exit(1);,exit(0);,if(,pid,=fork()=0),for(i=1;i=5;i+),printf(The,value of i is%,dn,i,);,fflush(stdout,);,mul,*=i;,printf(The,multiplex is%,dn,mul,);,计算机通信与网络编程,电子科大计算机学院,各个服务器使用的场合,循环的和并发的:,如果循环方案产生的响应时间对应用来说足够,就可以使用循环;否则需要并发,真正的和表面上的并发性:,创建线程或切换环境的开销大,服务器需要在多个连接之间共享或者交换数据,用,单线程,;,使用线程开销不大,服务器需要在多个连接之间共享或者交换数据,用,多线程,;,每个进程可以孤立运行或者要得到最大并发性,使用,多进程,面向连接的和无连接的:,当应用协议处理了可靠性问题,或者应用在局域网环境内时,使用无连接的传输。否则使用有连接传输。,计算机通信与网络编程,电子科大计算机学院,服务器类型小结,循环无连接服务器,对每个请求的处理少,往往是无状态的,,最常见的,循环的面向连接服务器,对每个请求处理少的服务,但要求有,可靠的传输,,较常见,并发的,无连接的服务器,不常见,,为每个请求创建一个新线程或进程,并发的面向连接的服务器,最一般的,。可靠传输,并发处理多个请求,多进程可以是多个独立的程序,多线程(进程)或者单线程方式,计算机通信与网络编程,电子科大计算机学院,服务器死锁,循环的面向连接的服务器:,某个客户和服务器建立一个连接,客户不再发送请求,服务器无法使用,recv,得到请求,服务器将在这里阻塞(会等待一个永远也不会到来的请求),客户不能正常工作(因不处理服务器的响应),将导致,客户接收窗口填满并将停止传输数据,而服务器的外发存储数据区填满,服务器被阻塞,计算机通信与网络编程,电子科大计算机学院,服务器死锁,可能阻塞的系统调用会产生死锁,如没有本地缓存时(存放已发数据),发送方,send,或者,write,会阻塞;接收方,recv,或者,read,调用也将阻塞。,单线程的服务器会被阻塞死锁,在服务器中,死锁是一个严重的问题,因为它意味着一个客户的行为会使服务器不能处理其他客户的请求,计算机通信与网络编程,电子科大计算机学院,小结,服务器的简单概念:循环运行,等待请求,处理请求,发送应答,很少计算,的服务,循环实现工作得好;,当面向连接的传输时,循环服务器一次处理一个连接;,对于无连接的传输,循环服务器一次处理一个请求,计算机通信与网络编程,电子科大计算机学院,小结,为了更加有效,服务器是用,并发,处理多个请求;,面向连接服务器为处理,每个新连接,创建一个线程,/,进程,通过这种方法,在各个连接之间提供并发性。,无连接服务器通过为,每个请求,创建一个新线程,/,进程而提供并发性。,客户的问题或者使用了阻塞系统调用的情况对于,循环服务器,以及使用,单线程实现的并发服务,中死锁都可能发生,作业,画出单线程并发的面向连接服务器的进程结构,注意标上相关的文字说明。,详细分析并发服务器和循环服务器的特点,并说明这两种类型服务器的应用场合。,展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




第七讲 服务器软件设计的算法和问题.ppt



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/13179177.html