服务器软件设计的算法和问题.ppt
《服务器软件设计的算法和问题.ppt》由会员分享,可在线阅读,更多相关《服务器软件设计的算法和问题.ppt(30页珍藏版)》请在三一办公上搜索。
1、互联网络程序设计,第七讲 服务器软件设计的算法和问题电子科技大学计算机学院,互联网络程序设计,电子科大计算机学院,服务器软件设计概述,无连接和面向连接的服务器访问无状态和有状态的服务器应用循环和并发的服务器的实现简单服务器的算法:创建套接字绑定到一个熟知端口期望在这个端口上接收请求进入无限循环,接受客户请求并应答只适用于最简单的服务,互联网络程序设计,电子科大计算机学院,并发服务器和循环服务器,循环服务器:一个时刻只处理一个请求并发服务器:一个时刻可以处理多请求多数只提供表面并发:执行多个线程,每个线程处理一个请求使用单线程的可能性:计算量小,主要是异步I/O,便于同时使用多个通信信道并发处理
2、多个请求,而不是指下层是否使用了多个并发线程循环服务器容易构建,但是性能差;并发服务器难以构建和设计,但是性能好,互联网络程序设计,电子科大计算机学院,面向连接和无连接的访问,连接性问题是传输协议的中心,TCP/IP提供了两种协议:TCP,UDP使用TCP的服务器是面向连接的服务器使用UDP的服务器是无连接的服务器选择面向连接或者无连接的服务,依赖于应用协议设计上使用面向连接的传输服务的应用协议时,如果实际中使用了无连接的传输协议时,将可能不能正确地运行或者不能有效运行。,互联网络程序设计,电子科大计算机学院,传输协议的语义,TCP的语义点到点通信建立可靠连接可靠交付具有流控的传输双工传输流模
3、式,UDP的语义多对多通信不可靠服务缺乏流控制报文模式,选择传输协议,需要考虑应用程序要求的语义,互联网络程序设计,电子科大计算机学院,面向连接的服务器,面向连接的服务的优点:易于编程自动处理分组丢失,分组失序自动验证数据差错,处理连接状态面向连接的服务的缺点:对每个连接都有一个单独的套接字,耗费更多的资源在空闲的连接上不发送任何分组始终运行的服务器会因为客户的崩溃,导致无用套接字的过多而耗尽资源,互联网络程序设计,电子科大计算机学院,无连接的服务器,优点:没有资源耗尽问题缺陷:需要自己完成可靠通信问题必要时,需要一种自适应重传的复杂技术,需要程序员具有相当的专业知识对于可靠通信的场合,尽量使
4、用tcp是否需要组播或者广播是考虑选择何种传输方式的一个因素支持组播或者广播的服务器必须是无连接的,今后会不断增加这样的应用。,互联网络程序设计,电子科大计算机学院,故障、可靠性和无状态,状态信息:服务器维护的,关于它和客户正进行的交互状态信息无状态服务器:没有保留任何状态信息状态服务器:维护状态信息的服务器无状态源于对确保可靠性的要求:无连接传输不可靠传输协议不能保证可靠,应用协议的设计必须保证可靠实现服务器如果有状态依赖,必须慎重,互联网络程序设计,电子科大计算机学院,优化无状态服务器,一个无连接服务器,允许客户从服务器机器磁盘上读出文件要保持无状态,每个客户请求都必须指定文件名,文件中的
5、位置,读取的字节数设计服务器的时候,我们注意到:文件打开和关闭的额外开销较高使用该服务器的客户请求可能只读十来字节客户通常按顺序读取文件数据服务器从内存缓冲区读取数据比磁盘快得多优化服务器性能维护一个小的文件信息表,互联网络程序设计,电子科大计算机学院,优化无状态服务器,使用IP地址和端口号索引将没有发现的读取数据从磁盘读到内存,文件名:X偏移量:512缓存指针:,文件名:Y偏移量:1024缓存指针:,用于文件X的缓存从512字节开始,用于文件Y的缓存从1024字节开始,hash(IP addr,port),有关客户使用的文件的信息表,互联网络程序设计,电子科大计算机学院,优化无状态服务器,上
6、述的信息表格可以改善服务器性能需要程序员极其小心:检查文件名等如果客户出了故障重新启动,将会重新获得一个不同的端口号,先前的表项将会失去作用,最终会耗尽服务器资源服务器可以选择删除LRU(最近最少使用)条目。但是如果客户经常崩溃,可能让服务器删除一个合法的客户条目优化无状态服务器的时候,程序员必须小心如果客户经常崩溃或者重启,或者网络使报文重复或者迟延,管理少量状态信息也会消耗资源,互联网络程序设计,电子科大计算机学院,四种基本类型的服务器,循环的或者并发的使用面向连接的或者无连接的传输,互联网络程序设计,电子科大计算机学院,请求处理时间,循环服务器是最简单的,客户按照顺序等待。是否能够满足要
7、求取决于所需的反应时间观测响应时间:客户发送请求到服务器响应之间的全部时延。请求处理时间:服务器处理单个孤立的请求所花费的时间。循环服务器一次处理一个请求。如果N代表请求队列的平均长度,观测响应时间大约是N/2+1个服务请求处理时间如果一个服务器设计处理K个客户,每个客户每秒发送R个请求,服务器请求处理时间必须小于每请求1/KR秒。否则请求队列将溢出。这时设计者必须考虑并发实现,互联网络程序设计,电子科大计算机学院,循环的面向连接的服务器算法,通过TCP的面向连接的循环服务器算法1、创建套接字并将其绑定到它所提供服务的熟知端口上;2、将该端口设置为被动模式,使其准备为服务器所用;3、从该套接字
8、上接收下一个连接请求,获得该连接的新的套接字;4、重复地读取来自客户的请求,构造响应,按照应用协议向客户发回响应;5、当某个特定客户完成交互时,关闭连接,并返回步骤3以接受新的连接。,互联网络程序设计,电子科大计算机学院,用INADDR_ANY绑定熟知端口,服务器需要创建套接字并将其绑定到所熟知的端口上getportbyname:服务名映射到熟知端口上bind为某个套接字指明某个端点,使用结构sockaddr_in,该结构含有IP地址和端口号对于多接口主机使用INADDR_ANY指明了一个通配地址,让该主机的任何一个IP地址都匹配。,互联网络程序设计,电子科大计算机学院,将套接字置于被动模式,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 服务器 软件设计 算法 问题

链接地址:https://www.31ppt.com/p-6473292.html