Docker的有状态&无状态
主要针对 程序的有状态和无状态 & 容器的状态 大概做下总结
文章【无状态服务 VS 有状态服务】(http://blog.csdn.net/mysee1989/article/details/51381435)中介绍
【重要部分:】
无状态的服务器程序,最著名的就是WEB服务器。每次HTTP请求和以前都没有啥关系,只是获取目标URI。得到目标内容之后,这次连接就被杀死,没有任何痕迹。
在无状态化,加入状态化的信息,比如COOKIE,是无状态化向状态化的一个过渡手段。
状态化的服务器,比如MSN、网络游戏等服务器。他在服务端维护每个连接的状态信息,服务端在接收到每个连接的发送的请求时,可以从本地存储的信息来重现上下文关系。这样,客户端可以很容易使用缺省的信息,服务端也可以很容易地进行状态管理。比如说,当一个用户登录后,服务端可以根据用户名获取他的生日等先前的注册信息;而且在后续的处理中,服务端也很容易找到这个用户的历史信息。
状态化服务器在功能实现方面具有更加强大的优势,但由于他需要维护大量的信息和状态,在性能方面要稍逊于无状态服务器。无状态服务器在处理简单服务方面有优势,但复杂功能方面有很多弊端,比如,用无状态服务器来实现即时通讯服务器,将会是场恶梦。
个人理解区别:
有状态:请求要带动态的信息,比如个人密码、动态的请求参数之类的
无状态:每次请求的url都是一样的,死的
下面总结 对 容器的状态 的理解
参考了下http://www.dockerinfo.net/2227.html,这个文章,写的还是不能让我很明白,不过结合自己的理解,大体上可以到略懂程度
下面是这个文章 我认为重要部分:
应用程序的状态是应用程序组件完成他们工作(即执行一个任务 )所需的数据。任何应用程序都有状态。软件编程架构模式、范式和语言从根本上描述如何管理应用程序的行为(任务,操作等)和状态(数据)。
无状态,只是意味着服务实例不能为了执行一个行为,从其它地方获取数据。
因此,任何应用都有状态,但如果把程序行为和数据分离开,应用程序的组件可以是无状态的,它在执行行为时能够获取到数据即可。但是,这似乎只是简单地把问题传给其他东西-其他组件如何管理状态?
个人理解:
无状态服务:服务器提供一个接口,访问的url是死的(不用传参,或者固定的参数。服务器也不记录这个请求端的信息),每次都返回“hello word”
有状态服务:我觉得大多的业务都有状态,因为要记录用户的信息,比如tocken。
再结合第二个文章截取的文字,自己的理解:
a段:数据要变化的话,就是有状态的。数据是死的,就是无状态
b段:无状态,对数据没交互
c段:程序都应该是有状态的(对数据交互的),如果要一个【验证用户信息】服务变成无状态,也是把url的参数(密码)传给其他的【验证】服务(这个服务肯定就是有状态)。
所以总体而言,我认为大多的业务都是有状态的(需要用户验证啊)。