Docker的有状态&无状态

2018-04-23  本文已影响0人  xcardata

主要针对     程序的有状态和无状态 & 容器的状态     大概做下总结

文章【无状态服务 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的参数(密码)传给其他的【验证】服务(这个服务肯定就是有状态)。

所以总体而言,我认为大多的业务都是有状态的(需要用户验证啊)。

上一篇下一篇

猜你喜欢

热点阅读