zoukankan      html  css  js  c++  java
  • 服务器软件设计的算法和问题

    概念性的服务器算法:创建一个socket,将它绑定到一个熟知的port上,并期望在这个port上接收请求,接着进入无限loop,在循环中,服务器接受来自client的下一个请求,处理请求,结构应答,然后将这个应答发回给客户。

    Iterative server and concurrent server : iterative server 是在一个时刻只处理一

    个请求的一种服务器实现。

           Concurrent server 是在一个时刻可以处理多个请求的一种服务器。一般来说,并发服务器更难设计和构建,其最终代码页更复杂并且难以修改。

           面对连接和无连接服务器:区别就是选择TCP还是UDP的问题。

           因为已经选择了TCP的服务器,所以暂时不介绍UDP服务器问题。TCP服务器有点是容易编程,可靠性在协议上得到保证。

           面向连接服务器缺点:要求对每个连接都有一个单独的socket,而无连接的设计则允许从一个socket上与多个主机通信。最大缺点是TCP在空闲连接上根本不发送任何分组,比如在资源的使用上,服务器拥有分配给改连接的数据接口,包括缓冲空间,并且这些资源不能被重新分配。

     

           四种服务器类型:1.循环的无连接 2.循环的面向连接 3.并发的无连接 4.并发的面向连接。我们选择的是第四种。

           服务器处理时间:request processing time 为服务器处理单个鼓励的请求所花的时间。Observed response time 为客户发送请求至服务器响应直接的全部delay. 很明显,ORT不可能小于RPT。若N代表请求队列的平均长度,对刚刚的请求来说,它的观测响应时间大约是N/2 + 1个服务器请求处理时间。

           一个循环服务器是否够用?假设一个服务器设计能力可以处理K个客户,每个客户每秒发送R个请求,则此服务器的请求处理时间必须小于每请求1/KR秒。

     

           INADDR_ANY绑定熟知端口:bind为了某个套接字知名某个链接端点,它使用了结构sockaddr_in,该结构中含有IP地址和协议端口号。Bind不能只指明协议端口号而不指明IP地址。但是,如果选择指明的IP地址,那该主机只能有一个IP地址和服务器相连接。然而路由器或者多网卡机有多个IP,服务器就没办法得到其他IP的内容了。为了解决这个问题,socket定义了特殊常量INADDR_ANY,它可以代替IP地址,它指明了通配地址(wildcard address),它与该主机的任何一个IP地址都匹配。

  • 相关阅读:
    MSDN Magazine搞错了
    Visual Studio 2005中设置调试符号(Debug Symbols)
    BCB 6的问题
    吴裕雄天生自然Spring Boot使用Spring Data JPA实现人与身份证的一对一关系映射
    吴裕雄天生自然Spring BootSpring Data JPA
    吴裕雄天生自然Spring BootSpring Boot对JSP的支持
    吴裕雄天生自然Spring BootSpring Boot的异常统一处理
    吴裕雄天生自然Spring Boot使用Spring Data JPA实现Author与Article的一对多关系映射
    吴裕雄天生自然Spring Boot解决 Error creating bean with name 'entityManagerFactory' defined in class path resource
    吴裕雄天生自然Spring Boot@ExceptionHandler注解和@ControllerAdvice注解
  • 原文地址:https://www.cnblogs.com/nickchan/p/3104390.html
Copyright © 2011-2022 走看看