7服务器软件设计的算法和问题重点.ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 《计算机通信与网络编程》 第七讲 服务器软件设计的算法和问题 电子科技大学计算机学院 服务器软件设计概述 循环和并发的服务器的实现 无连接和面向连接的服务器访问 无状态和有状态的服务器应用 简单服务器的算法: 创建套接字 绑定到一个熟知端口 期望在这个端口上接收请求 进入无限循环,接受客户请求并应答 只适用于最简单的服务… 并发服务器和循环服务器 循环服务器:一个时刻只处理一个请求 并发服务器:一个时刻可以处理多请求 多数只提供表面并发:执行多个线程,每个线程处理一个请求 使用线程的可能性:计算量小,主要是异步I/O, 便于同时使用多个通信信道 并发处理多个请求,而不是指下层是否使用了多个并发线程 循环服务器容易构建,但是性能差;并发服务器难以构建和设计,但是性能好 面向连接和无连接的访问 连接性问题是传输协议的中心,TCP/IP提供了两种协议:TCP, UDP 使用TCP的服务器是面向连接的服务器 使用UDP的服务器是无连接的服务器 选择面向连接或者无连接的服务,依赖于应用协议 设计上使用面向连接的传输服务的应用协议时,如果实际中使用了无连接的传输协议时,将可能不能正确地运行或者不能有效运行。 传输协议的语义 1. TCP的语义 点到点通信 建立可靠连接 可靠交付 具有流控的传输 双工传输 流模式 2. UDP的语义 多队多通信 不可靠服务 缺乏流控制 报文模式 选择传输协议,需要考虑应用程序要求的语义 面向连接的服务器 面向连接的服务的优点: 易于编程 自动处理分组丢失,分组失序 自动验证数据差错,处理连接状态 面向连接的服务的缺点: 对每个连接都有一个单独的套接字,耗费更多的资源 在空闲的连接上不发送任何分组 始终运行的服务器会因为客户的崩溃,导致无用套接字的过多而耗尽资源 无连接的服务器 优点:没有资源耗尽问题 缺陷:需要自己完成可靠通信问题 必要时,需要一种自适应重传的复杂技术,需要程序员具有相当的专业知识 对于可靠通信的场合,尽量使用tcp 是否需要组播或者广播是考虑选择何种传输方式的一个因素 支持组播或者广播的服务器必须是无连接的,今后会不断增加这样的应用。 故障、可靠性和无状态 状态信息:服务器维护的,关于它和客户正进行的交互状态信息 无状态服务器:没有保留任何状态信息 状态服务器:维护状态信息的服务器 无状态源于对确保可靠性的要求:无连接传输不可靠,要求无连接 传输协议不能保证可靠,应用协议的设计必须保证可靠 实现服务器如果有状态依赖,必须慎重 优化无状态服务器 一个无连接服务器,允许客户从服务器机器磁盘上读出文件 要保持无状态,每个客户请求都必须指定文件名,文件中的位置,读取的字节数 设计服务器的时候,我们注意到: 文件打开和关闭的额外开销较高 使用该服务器的客户请求可能只读十来字节 客户通常按顺序读取文件数据 服务器从内存缓冲区读取数据比磁盘快得多 优化服务器性能维护一个小的文件信息表 优化无状态服务器 使用IP地址和端口号索引 将没有发现的读取数据从磁盘读到内存 文件名:X 偏移量:512 缓存指针: 文件名:Y 偏移量:1024 缓存指针: 用于文件X的缓存从 512字节开始 用于文件Y的缓存从 1024字节开始 hash(IP addr,port) 有关客户使用的文件的信息表 优化无状态服务器 上述的信息表格可以改善服务器性能 需要程序员极其小心:检查文件名等 如果客户出了故障重新启动,将会重新获得一个不同的端口号,先前的表项将会失去作用,最终会耗尽服务器资源 服务器可以选择删除LRU(最近最少使用)但是如果客户经常崩溃,可能让服务器删除一个合法的客户条目 优化无状态服务器的时候,程序员必须小心 如果客户经常崩溃或者重启,或者网络使报文重复或者迟延,管理少量状态信息也会消耗资源 四种基本类型的服务器 循环的或者并发的 使用面向连接的或者无连接的传输 循环的 无连接 循环的 面向连接 并发的 无连接 并发的 面向连接 请求处理时间 循环服务器是最简单的,客户按照顺序等待。是否能够满足要求取决于所需的反应时间 观测响应时间:客户发送请求到服务器相应之间的全部时延。 请求处理时间:服务器处理单个孤立的请求所花费的时间。 循环服务器一次处理一个请求。如果N代表请求的平均长度,观测响应时间大约是N/2+1服务请求处理时间 如果一个服务器设计处理K个客户,每个客户每秒发送R个请求,服务器请求处理时间必须小于每请求1/KR秒。否则请求队列将溢出。这时设计者必须考虑并发实现 循环的面向连接的服务器算法

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档