服务器软件设计的算法和问题ppt课件_第1页
服务器软件设计的算法和问题ppt课件_第2页
服务器软件设计的算法和问题ppt课件_第3页
服务器软件设计的算法和问题ppt课件_第4页
服务器软件设计的算法和问题ppt课件_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、n 循环和并发的效力器的实现循环和并发的效力器的实现n 无衔接和面向衔接的效力器访问无衔接和面向衔接的效力器访问n 无形状和有形状的效力器运用无形状和有形状的效力器运用n 简单效力器的算法:简单效力器的算法:n 创建套接字创建套接字n 绑定到一个熟知端口绑定到一个熟知端口n 期望在这个端口上接纳恳求期望在这个端口上接纳恳求n 进入无限循环,接受客户恳求并应对进入无限循环,接受客户恳求并应对n 只适用于最简单的效力只适用于最简单的效力n 循环效力器:一个时辰只处置一个恳求循环效力器:一个时辰只处置一个恳求n 并发效力器:一个时辰可以处置多恳求并发效力器:一个时辰可以处置多恳求n 多数只提供外表并

2、发:执行多个线程,每多数只提供外表并发:执行多个线程,每个线程处置一个恳求个线程处置一个恳求n 运用线程的能够性:计算量小,主要是异运用线程的能够性:计算量小,主要是异步步I/O, 便于同时运用多个通讯信道便于同时运用多个通讯信道n 并发处置多个恳求,而不是指下层能否运并发处置多个恳求,而不是指下层能否运用了多个并发线程用了多个并发线程n 循环效力器容易构建,但是性能差;并发循环效力器容易构建,但是性能差;并发效力器难以构建和设计,但是性能好效力器难以构建和设计,但是性能好n 衔接性问题是传输协议的中心,衔接性问题是传输协议的中心,TCP/IP提提供了两种协议:供了两种协议:TCP, UDPn

3、 运用运用TCP的效力器是面向衔接的效力器的效力器是面向衔接的效力器n 运用运用UDP的效力器是无衔接的效力器的效力器是无衔接的效力器n 选择面向衔接或者无衔接的效力,依赖于选择面向衔接或者无衔接的效力,依赖于运用协议运用协议n 设计上运用面向衔接的传输效力的运用设计上运用面向衔接的传输效力的运用协议时,假照实践中运用了无衔接的传输协议时,假照实践中运用了无衔接的传输协议时,将能够不能正确地运转或者不能协议时,将能够不能正确地运转或者不能有效运转。有效运转。1. TCP的语义的语义点到点通讯点到点通讯建立可靠衔接建立可靠衔接可靠交付可靠交付具有流控的传输具有流控的传输双工传输双工传输流方式流方

4、式选择传输协议,需求思索运用程选择传输协议,需求思索运用程序要求的语义序要求的语义n 面向衔接的效力的优点:面向衔接的效力的优点:n 易于编程易于编程n 自动处置分组丧失,分组失序自动处置分组丧失,分组失序n 自动验证数据过失,处置衔接形状自动验证数据过失,处置衔接形状n 面向衔接的效力的缺陷:面向衔接的效力的缺陷:n 对每个衔接都有一个单独的套接字,耗费对每个衔接都有一个单独的套接字,耗费更多的资源更多的资源n 在空闲的衔接上不发送任何分组在空闲的衔接上不发送任何分组n 一直运转的效力器会由于客户的解体,导一直运转的效力器会由于客户的解体,导致无用套接字的过多而耗尽资源致无用套接字的过多而耗

5、尽资源n 优点:没有资源耗尽问题优点:没有资源耗尽问题n 缺陷:需求本人完成可靠通讯问题缺陷:需求本人完成可靠通讯问题n 必要时,需求一种自顺应重传的复杂技术,必要时,需求一种自顺应重传的复杂技术,需求程序员具有相当的专业知识需求程序员具有相当的专业知识n 对于可靠通讯的场所,尽量运用对于可靠通讯的场所,尽量运用tcpn 能否需求组播或者广播是思索选择何种传能否需求组播或者广播是思索选择何种传输方式的一个要素输方式的一个要素n 支持组播或者广播的效力器必需是无衔支持组播或者广播的效力器必需是无衔接的,今后会不断添加这样的运用。接的,今后会不断添加这样的运用。n 形状信息:效力器维护的,关于它和

6、客户形状信息:效力器维护的,关于它和客户正进展的交互形状信息正进展的交互形状信息n 无形状效力器:没有保管任何形状信息无形状效力器:没有保管任何形状信息n 形状效力器:维护形状信息的效力器形状效力器:维护形状信息的效力器n 无形状源于对确保可靠性的要求:无衔接无形状源于对确保可靠性的要求:无衔接传输不可靠,要求无衔接传输不可靠,要求无衔接n 传输协议不能保证可靠,运用协议的设计传输协议不能保证可靠,运用协议的设计必需保证可靠必需保证可靠n 实现效力器假设有形状依赖,必需慎实现效力器假设有形状依赖,必需慎重重n 一个无衔接效力器,允许客户从效力器机一个无衔接效力器,允许客户从效力器机器磁盘上读出

7、文件器磁盘上读出文件n 要坚持无形状,每个客户恳求都必需指要坚持无形状,每个客户恳求都必需指定文件名,文件中的位置,读取的字节数定文件名,文件中的位置,读取的字节数n 设计效力器的时候,我们留意到:设计效力器的时候,我们留意到:n 文件翻开和封锁的额外开销较高文件翻开和封锁的额外开销较高n 运用该效力器的客户恳求能够只读十来字运用该效力器的客户恳求能够只读十来字节节n 客户通常按顺序读取文件数据客户通常按顺序读取文件数据n 效力器从内存缓冲区读取数据比磁盘快得效力器从内存缓冲区读取数据比磁盘快得多多n 优化效力器性能维护一个小的文件信息表优化效力器性能维护一个小的文件信息表n 运用运用IP地址

8、和端口号索引地址和端口号索引n 将没有发现的读取数据从磁盘读到内存将没有发现的读取数据从磁盘读到内存文件名:文件名:X偏移量:偏移量:512缓存指针:缓存指针:文件名:文件名:Y偏移量:偏移量:1024缓存指针:缓存指针:用于文件用于文件X的缓存从的缓存从512字节开场字节开场用于文件用于文件Y的缓存从的缓存从1024字节开场字节开场hash(IP addr,port)有关客户运用的文件的信息表有关客户运用的文件的信息表n 上述的信息表格可以改善效力器性能上述的信息表格可以改善效力器性能n 需求程序员极其小心:检查文件名等需求程序员极其小心:检查文件名等n 假设客户出了缺点重新启动,将会重新获

9、得一个假设客户出了缺点重新启动,将会重新获得一个不同的端口号,先前的表项将会失去作用,最终不同的端口号,先前的表项将会失去作用,最终会耗尽效力器资源会耗尽效力器资源n 效力器可以选择删除效力器可以选择删除LRU(最近最少运用但是最近最少运用但是假设客户经常解体,能够让效力器删除一个合法假设客户经常解体,能够让效力器删除一个合法的客户条目的客户条目n 优化无形状效力器的时候,程序员必需小心优化无形状效力器的时候,程序员必需小心n 假设客户经常解体或者重启,或者网络使报文反假设客户经常解体或者重启,或者网络使报文反复或者迟延,管理少量形状信息也会耗费资源复或者迟延,管理少量形状信息也会耗费资源n

10、循环的或者并发的循环的或者并发的n 运用面向衔接的或者无衔接的传输运用面向衔接的或者无衔接的传输循环的循环的无连接无连接循环的循环的面向连接面向连接并发的并发的无连接无连接并发的并发的面向连接面向连接n循环效力器是最简单的,客户按照顺序等待。能否可以满循环效力器是最简单的,客户按照顺序等待。能否可以满足要求取决于所需的反响时间足要求取决于所需的反响时间n观测呼应时间:客户发送恳求到效力器相应之间的全部时观测呼应时间:客户发送恳求到效力器相应之间的全部时延。延。n恳求处置时间:效力器处置单个孤立的恳求所破费的时间。恳求处置时间:效力器处置单个孤立的恳求所破费的时间。n循环效力器一次处置一个恳求。

11、假设循环效力器一次处置一个恳求。假设N代表恳求的平均长代表恳求的平均长度,观测呼应时间大约是度,观测呼应时间大约是N/2+1效力恳求处置时间效力恳求处置时间n假设一个效力器设计处置假设一个效力器设计处置K个客户,每个客户每秒发送个客户,每个客户每秒发送R个恳求,效力器恳求处置时间必需小于每恳求个恳求,效力器恳求处置时间必需小于每恳求1/KR秒。否秒。否那么恳求队列将溢出。这时设计者必需思索并发实现那么恳求队列将溢出。这时设计者必需思索并发实现 经过经过TCP的面向衔接的循环效力器算法的面向衔接的循环效力器算法创建套接字并将其绑定到它所提供效力的熟知端口创建套接字并将其绑定到它所提供效力的熟知端

12、口上;上;将该端口设置为被动方式,使其预备为效力器所用;将该端口设置为被动方式,使其预备为效力器所用;从该套接字上接纳下一个衔接恳求,获得该衔接的从该套接字上接纳下一个衔接恳求,获得该衔接的新的套接字;新的套接字;反复地读取来自客户的恳求,构造呼应,按照运用反复地读取来自客户的恳求,构造呼应,按照运用协议向客户发回呼应;协议向客户发回呼应;当某个特定客户完成交互时,封锁衔接,并前往步当某个特定客户完成交互时,封锁衔接,并前往步骤骤3以接受新的衔接。以接受新的衔接。 效力器需求创建套接字并将其绑定到所熟知的效力器需求创建套接字并将其绑定到所熟知的端口上端口上getportbyname:效力名映射

13、到熟知端口上:效力名映射到熟知端口上bind为某个套接字指明某个端点,运用构造为某个套接字指明某个端点,运用构造sockaddr_in,该构造含有,该构造含有IP地址和端口号地址和端口号对于多接口主机运用对于多接口主机运用INADDR_ANY指明了一个通指明了一个通配地址,让该主机的任何一个配地址,让该主机的任何一个IP地址都匹配。地址都匹配。n 调用调用listen:将套接字置于被动方式将套接字置于被动方式n 一个参数指明套接字内部的恳求队列长度一个参数指明套接字内部的恳求队列长度n 恳求队列保管一组恳求队列保管一组TCP传入衔接恳求,来传入衔接恳求,来自客户,都向这个效力器恳求一个衔接自客

14、户,都向这个效力器恳求一个衔接n 接纳衔接并运用这些衔接接纳衔接并运用这些衔接n 调用调用accept:获得下一个传入衔接恳求获得下一个传入衔接恳求n 前往新的衔接的套接字的描画符前往新的衔接的套接字的描画符n 效力器接纳衔接,运用效力器接纳衔接,运用read获得来自客户获得来自客户的运用协议,运用的运用协议,运用write发回应对。发回应对。n 效力器终了衔接,运用效力器终了衔接,运用close释放套接字释放套接字n 循环效力器的设计,编程,排错,修正很容易。循环效力器的设计,编程,排错,修正很容易。往往运用无衔接的协议。往往运用无衔接的协议。n 循环效力器对于小的处置时间的效力任务很好。循

15、环效力器对于小的处置时间的效力任务很好。n 无衔接效力器算法如下:无衔接效力器算法如下:n 创建套接字并将其绑定到所提供效力的熟知端口创建套接字并将其绑定到所提供效力的熟知端口上;上;n 反复读取来自客户的恳求,构造呼应,按照运用反复读取来自客户的恳求,构造呼应,按照运用协议向客户发回呼应。协议向客户发回呼应。n connect函数限制了套接字的运用函数限制了套接字的运用n 无衔接效力器运用无衔接效力器运用sendto:指明了发送的数指明了发送的数据报和它将去的地址据报和它将去的地址n retcode = sendto(s, msg, len, flags, toaddr, toaddrlen

16、);n 效力器从收到的恳求中的源地址获得应对效力器从收到的恳求中的源地址获得应对的地址。调用的地址。调用recvfrom得到数据和对方的得到数据和对方的地址地址n retcode = recvfrom(s, buf, len, flags, from, fromlen);n 给多个客户提供快速呼应时间需求运用并给多个客户提供快速呼应时间需求运用并发效力器发效力器n 构造要求有相当的构造要求有相当的I/O时间的呼应时间的呼应n 可以部分重叠地运用途置器和外设可以部分重叠地运用途置器和外设n 各个恳求所要求的处置时间变化很大各个恳求所要求的处置时间变化很大n 时间分片允许单个处置处置那些只需求时间

17、分片允许单个处置处置那些只需求少量处置的恳求尽快完成少量处置的恳求尽快完成n 效力器运转在具有多个处置器的计算机上效力器运转在具有多个处置器的计算机上n 不同的处置器处置不同的恳求不同的处置器处置不同的恳求n 并发效力器经过使处置和并发效力器经过使处置和I/O部分重叠来到部分重叠来到达高性能。达高性能。 虽然可以运用一个单线程实现并发效力器,但虽然可以运用一个单线程实现并发效力器,但是大多数运用多线程:是大多数运用多线程:主线程最先开场执行在熟知的端口上翻开一个套接主线程最先开场执行在熟知的端口上翻开一个套接字,等待一个恳求,并为每个恳求创建一个从字,等待一个恳求,并为每个恳求创建一个从线程能

18、够在一个新进程中线程能够在一个新进程中主线程不与客户直接通讯,每个从线程处置一个客主线程不与客户直接通讯,每个从线程处置一个客户的通讯。户的通讯。从线程构成呼应并发送给客户后,这个从线程便退从线程构成呼应并发送给客户后,这个从线程便退出出n 最简单的算法:最简单的算法:n 主主1 、 创建套接字并将其绑定到所提供效力的熟创建套接字并将其绑定到所提供效力的熟知地址上。让该套接字坚持为未衔接的知地址上。让该套接字坚持为未衔接的n 主主2 、 反复调用反复调用recvfrom接纳来自客户的下一接纳来自客户的下一个恳求,创建一个新的从线程来处置呼应个恳求,创建一个新的从线程来处置呼应n 从从1 、 从

19、来自主进程的特定恳求以及到该套接字从来自主进程的特定恳求以及到该套接字的访问开场的访问开场n 从从2 、 根据运用协议构造应对,并用根据运用协议构造应对,并用sendto将将该应对发回给客户该应对发回给客户n 从从3 、 退出即:从线程处置完一个恳求后就终退出即:从线程处置完一个恳求后就终止止n 由于创建进程或者线程是昂贵的,因此只需很少由于创建进程或者线程是昂贵的,因此只需很少的无衔接效力器采用并发实现的无衔接效力器采用并发实现 面向衔接的效力器在多个衔接之间实现并发不是在各个面向衔接的效力器在多个衔接之间实现并发不是在各个恳求之间恳求之间主主1、创建套接字并将其绑定到所提供效力的熟知地址上

20、。让、创建套接字并将其绑定到所提供效力的熟知地址上。让该套接字坚持为面向衔接该套接字坚持为面向衔接主主2、将该端口设置为被动方式、将该端口设置为被动方式主主3、反复调用、反复调用accept以便接纳来自客户的下一个衔接恳求,以便接纳来自客户的下一个衔接恳求,并创建新的从线程或者进程来处置呼应并创建新的从线程或者进程来处置呼应从从1、由主线程传送来的衔接恳求开场、由主线程传送来的衔接恳求开场从从2、用该衔接与客户进展交互;读取恳求并发回呼应、用该衔接与客户进展交互;读取恳求并发回呼应从从3、封锁衔接并退出、封锁衔接并退出 两种方式的并发性:进程和线程两种方式的并发性:进程和线程效力器创建多个进程

21、,每个进程都有一个执行线程效力器创建多个进程,每个进程都有一个执行线程效力器在一个进程中创建多个执行线程效力器在一个进程中创建多个执行线程将在将在11章和章和12章阐明章阐明主进程主进程从进程从进程主线程主线程从线程从线程n 并发效力器为每个衔接创建一个新从线程并发效力器为每个衔接创建一个新从线程n 对于单线程的进程实现,采用对于单线程的进程实现,采用fork实现实现n 程序中包含主进程和从进程的全部代码程序中包含主进程和从进程的全部代码n 从进程执行一个单独编写和编译的程序也从进程执行一个单独编写和编译的程序也许更加方便许更加方便n linux系统支持系统支持n 调用调用fork后再调用后再

22、调用execven 运用单个线程来处置客户的恳求的意义运用单个线程来处置客户的恳求的意义n 操作系统创建线程或者进程的开销太昂操作系统创建线程或者进程的开销太昂贵贵n 许多运用要求效力器在多个衔接中共享许多运用要求效力器在多个衔接中共享信息信息n X窗口系统运用显示缓存作为共享数据构窗口系统运用显示缓存作为共享数据构造,给各个窗口的显示提供外表并发造,给各个窗口的显示提供外表并发n 出如今效力器的恳求没有超越效力器的出如今效力器的恳求没有超越效力器的处置才干处置才干n 单线程的效力器运用单线程的效力器运用select系统调用进展系统调用进展异步异步I/On 创建套接字并将其绑定到这个效力的熟知

23、端口上,创建套接字并将其绑定到这个效力的熟知端口上,将该套接字加到一个表中,该表中的项是可以进将该套接字加到一个表中,该表中的项是可以进展展I/O的描画符。的描画符。n 运用运用select在曾经有的套接字上等待在曾经有的套接字上等待I/On 假设最初的套接字预备就绪,运用假设最初的套接字预备就绪,运用accept获得获得下一个衔接,并将这个新的套接字参与到表中,下一个衔接,并将这个新的套接字参与到表中,该表中的项是可以进展该表中的项是可以进展I/O的描画符。的描画符。n 假设最初的套接字以外的套接字就绪,就运用假设最初的套接字以外的套接字就绪,就运用recv或或read获得下一个恳求,构造呼

24、应,用获得下一个恳求,构造呼应,用send或者或者write将呼应发回给客户将呼应发回给客户n 继续按照以上的步骤继续按照以上的步骤2进展处置进展处置n 循环的和并发的:循环的和并发的:n 假设循环方案产生的呼应时间对运用来假设循环方案产生的呼应时间对运用来说足够,就可以运用循环;否那么需求并说足够,就可以运用循环;否那么需求并发发n 真正的和外表上的并发性:真正的和外表上的并发性:n 线程或切换环境的开销大,效力器需求在线程或切换环境的开销大,效力器需求在多个衔接之间共享或者交换数据,用单线多个衔接之间共享或者交换数据,用单线程;程;n 运用线程开销不大或者要得到最大并发性,运用线程开销不大或者要得到最大并发性,运用多进程运用多进程n 面向衔接的和无衔接的:面向衔接的和无衔接的:n 运用协议处置了可靠性问题,或者运运用协议处置了可靠性问题,或者运用在局域网环境内,运用无衔接的传输。用在局域网环境内,运用无衔接的传输。n 循环无衔接效力器循环无衔接效力器n 恳求要求处置少,无形状的,最常见的恳求要求处置少,无形状的,最常见的n 循环的面向衔接效力器循环的面向衔接效力器n 要求可靠传输的,对恳

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论