对服务器程序来说,究竟是有状态服务,还是无状态服务,其判断依旧是指两个来自相同发起者的请求在服务器端是否具备上下文关系。如果是状态化请求,那么服务器端一般都要保存请求的相关信息,每个请求可以默认地使用以前的请求信息。而对于无状态请求,服务器端所能够处理的过程必须全部来自于请求所携带的信息,以及其他服务器端自身所保存的、并且可以被所有请求所使用的公共信息。

状态服务器
如果是状态化请求,那么服务端一般需要保存请求的相关信息,每个请求可以默认地使用以前的请求信息。

状态服务器具有以下特点:

  • 保存客户请求的数据(状态)
  • 服务端容易对客户状态进行管理
  • 服务端并不要求每次客户请求都携带额外的状态数据

无状态服务器
无状态服务器处理的客户信息必须全部来自于请求所携带的信息以及其他服务器自身所保存的、并且可以被所有请求所使用的公共信息。

无状态服务器具有以下特点:

  • 并不保存客户请求的数据(状态)
  • 客户在请求时需要携带额外的状态数据
  • 无状态服务器更加健壮,重启服务器不会丢失状态信息,这使得维护和扩容更加简单

无状态的服务器程序,最著名的就是WEB服务器。每次HTTP请求和以前都没有啥关系,只是获取目标URI。得到目标内容之后,这次连接就被杀死,没有任何痕迹。在后来的发展进程中,逐渐在无状态化的过程中,加入状态化的信息,比如COOKIE。服务端在响应客户端的请求的时候,会向客户端推送一个COOKIE,这个COOKIE记录服务端上面的一些信息。客户端在后续的请求中,可以携带这个COOKIE,服务端可以根据这个COOKIE判断这个请求的上下文关系。COOKIE的存在,是无状态化向状态化的一个过渡手段,他通过外部扩展手段,COOKIE来维护上下文关系。
状态化的服务器有更广阔的应用范围,比如MSN、网络游戏等服务器。他在服务端维护每个连接的状态信息,服务端在接收到每个连接的发送的请求时,可以从本地存储的信息来重现上下文关系。这样,客户端可以很容易使用缺省的信息,服务端也可以很容易地进行状态管理。比如说,当一个用户登录后,服务端可以根据用户名获取他的生日等先前的注册信息;而且在后续的处理中,服务端也很容易找到这个用户的历史信息。
状态化服务器在功能实现方面具有更加强大的优势,但由于他需要维护大量的信息和状态,在性能方面要稍逊于无状态服务器。无状态服务器在处理简单服务方面有优势,但复杂功能方面有很多弊端,比如,用无状态服务器来实现即时通讯服务器,将会是场恶梦。

转载于:https://blog.51cto.com/qiangsh/2171776

状态服务器与无状态服务器(要点)相关推荐

  1. mysql有状态无状态_k8s statefulSet 有状态应用和无状态应用区别

    一.定义: 无状态服务:就是没有特殊状态的服务,各个请求对于服务器来说统一无差别处理,请求自身携带了所有服务端所需要的所有参数(服务端自身不存储跟请求相关的任何数据,不包括数据库存储信息) 有状态服务 ...

  2. Java - 有状态bean和无状态bean

    有状态Bean和无状态Bean的本质区别:声明周期 1. 前言:EJB EJB:称为企业Java beans,是基于分布式事务处理的企业级应用程序的组件. Sun公司发布的文档中对EJB的定义是:EJ ...

  3. 有状态服务和无状态服务的区别

    有状态服务和无状态服务的区别 有状态和无状态服务是两种不同的服务架构,两者的不同之处在于对于服务状态的处理.服务状态是服务请求所需的数据,它可以是一个变量或者一个数据结构.无状态服务不会记录服务状态, ...

  4. 有状态bean与无状态bean

    在学习bean的作用域的时候,了解了这个问题. bean5种作用域:分别是:singleton.prototype.request.session.gloabal session 接下来就讲一下有状态 ...

  5. 「小程序JAVA实战」java-sesion的状态会话与无状态会话(38)

    转自:https://idig8.com/2018/09/02/xiaochengxujavashizhanjava-sesiondezhuangtaihuihuayuwuzhuangtaihuihu ...

  6. (3) ebj学习:有状态bean和无状态bean区别

    1 区别 有状态bean : 客户端通过JNDI访问有状态bean, 服务端new该bean,并返回该代理对象 有状态bean : 客户端通过JNDI访问有状态bean, 服务端该bean是单例模式, ...

  7. 【转】多线程之有状态对象和无状态对象

    有状态对象和无状态对象 参考:https://www.cnblogs.com/xubiao/p/6567349.html 一. 基本概念 1. 什么是有状态对象 有状态对象指的是有数据存储功能的类的对 ...

  8. EJB3.0框架实例----区分有状态bean和无状态bean

    1.通过这个例子可以区分,有状态bean和无状态bean中的数据会不会混淆; 2.一种取巧的做法是:在建立的客户端的工程上右键,选择build path--->把服 务端的EJB工程导入的,新建 ...

  9. 关于drools有状态会话和无状态会话到底有何区别的看法

    关于有状态会话和无状态的会话的区别,很多人不能真正理解,小哥也不是很理解,但也有些看法,以下是官网翻译而来 一.有状态会话常见用例: 1. 监测 半自动买入股票市场监控与分析.  2. 诊断  故障查 ...

最新文章

  1. 【NLP】如何清理文本数据?
  2. jsp的flash小例子
  3. 心得 如何优雅地跨线程修改主线程窗口控件
  4. java中跨时区的日期格式转换
  5. laravel商品图片怎么展示_如何使用Laravel图片处理包intervention-image
  6. stl::vector排序二例
  7. php ci controller,Codeigniter – CI_Controller与控制器
  8. java中的装饰模式讲解,java 中设计模式(装饰设计模式)的实例详解
  9. 《JAVA程序设计教程(第7版)英文版》pdf 附下载链接
  10. 【Excel从头开始】-3 从网页导出数据到Excel
  11. 这才是真相,“轻点,疼”被禁却另有玄机
  12. EasyAr聚焦模式
  13. 机器学习——数学建模应用
  14. CCF-相反数(C语言)
  15. 计算机会议论文EI检索,ei检索会议论文算期刊_ei论文检索_ei会议论文算核心吗...
  16. C++的异常[转载]
  17. win10如何把txt更改为bat文件
  18. 制作立体图像(上):红蓝眼镜原理
  19. golang 报错is not in GOROOT
  20. Linux系统怎么做安全防护,linux系统安全防护

热门文章

  1. VScode我的setting.json设置,和搜狗输入法配置
  2. react 使用rem布局_react如何使用rem适配
  3. jquery on方法原理_jQuery 学习小结
  4. 计算机科学实验班高考线,北京工业大学计算机科学与技术(实验班)专业2015年在北京理科高考录取最低分数线...
  5. mock模拟的数据能增删改查吗_新课通知: React+Umi3+Typescript+Mock
  6. py导入包异常跳出_14-0-包的介绍及使用
  7. ef导入oracle数据类型不正确,EF Core操作Oracle踩坑记
  8. c语言小数表达式运算课程设计,数据结构课程设计表达式计算.doc
  9. Latex 导数相关符号
  10. AnalyserNode