对于服务器程序来说,有个基本假设,即服务器是基于状态请求,还是基于无状态请求。根据这个假设,可以将服务器划分为状态服务器和无状态服务器。
状态服务器
如果是状态化请求,那么服务端一般需要保存请求的相关信息,每个请求可以默认地使用以前的请求信息。
状态服务器具有以下特点:
- 保存客户请求的数据(状态)
- 服务端容易对客户状态进行管理
- 服务端并不要求每次客户请求都携带额外的状态数据
无状态服务器
无状态服务器处理的客户信息必须全部来自于请求所携带的信息以及其他服务器自身所保存的、并且可以被所有请求所使用的公共信息。
无状态服务器具有以下特点:
- 并不保存客户请求的数据(状态)
- 客户在请求时需要携带额外的状态数据
- 无状态服务器更加健壮,重启服务器不会丢失状态信息,这使得维护和扩容更加简单
无状态的服务器程序,最著名的就是WEB服务器。
每次HTTP请求和以前请求没有直接关联。
为了跟踪客户请求的状态信息,请求中加入COOKIE。
COOKIE的存在,是无状态化向状态化过渡的一种手段。