有状态和无状态服务器

1、无状态与有状态的服务器

      服务器维护的、跟正在进行的客户端交互活动有关的信息称为状态信息。不保存状态信息的服务器称为无状态服务器,反之称为有状态服务器。

      对高效率的要求,促使设计者再服务器内保存状态信息。在服务器中保存少量信息可以减少客户和服务器之间交换报文的大小,并使得服务器快速相应请求。从本质上讲,状态信息能让服务器记住客户端以前的请求,并在新的请求到来时计算出渐进的相应。相比之下,采用无状态服务器在于协议的可靠性:如果报文丢失、重复、传送失序或者客户端的计算机崩溃并重启,状态信息就会出错。如果服务器在计算响应时使用了错误的状态信息,则有可能作出错误的响应。

      在理想状态下(即网络可靠传输所有的报文而且计算机永不崩溃),在服务器中保存每个正在进行交互的状态信息可以减少报文的大小,并使处理更简单。

      一般来说,只有使用了复杂的协议解决了不可靠传输和系统重启的问题,才能维护正确的状态信息。概括的说:

      在实际的互联网中,机器有可能崩溃和重启,报文可能丢失、延迟、重复或者传送失序,采用有状态的服务器会导致应用协议的复杂,而这种协议是很难设计、理解和正确实现。

2、无状态是一个协议问题

      一个服务器究竟是无状态的还是有状态的,这取决于应用协议而不是实现。如果应用协议规定某个报文的含义在某种程度上取决于先前的报文,那么就不可能提供无状态的交互。

      从本质上讲,无状态的问题的焦点在于应用协议是否承担可靠传输的责任。为了避免问题发生,确保交互的可靠性,应用协议的设计者必须确保每个报文绝无二义性。也就是说,报文既不能依赖是否被按序交付,也不能依赖先前已经被交付的报文。从本质上讲,协议设计者必须确保:无论请求什么时候到达以及到达几次,服务器都给出相同的相应。数学家用术语幂等(idempotent)来指一个总是产生相同结果的数学运算。用这个术语来称呼这样一些协议:无论报文到达几次,它们都能确保服务器给出相同的响应。

      如果一个互联网中的下层网络可能使报文重复、延迟,或者传送失序,或者运行客户应用的计算机可能意外崩溃,那么服务器必须是无状态的。如果应用协议被设计成各个操作是幂等的,则服务器只能是无状态的

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值