论文部分内容阅读
摘 要:信息管理云平台结构复杂度高,系统信息吞吐量大,为提高系统响应性能以及系统可扩展性,云平台采用无状态服务技术,提高平台系统的可伸缩性,系统可以通过负载均衡等手段,实现平台系统的水平扩展,提高系统整体性能。
关键词:云计算 无状态服务 云平台
中图分类号:TP393 文献标识码:A 文章编号:1672-3791(2015)11(a)-0017-02
云计算平台架构复杂,平台逻辑业务数量多,系统前台与后台交互信息量大,平台的服务设计成无状态服务更适应云计算平台应用场景,服务不保持状态信息,也即是客户端与服务端交互活动的信息,当客户端向服务器端发送服务请求时,在服务请求中携带服务器端服务响应请求所需要的一切信息[1],或者,服务端可以从外部获取到需要的信息,比如从数据库或内存获取。对于无状态服务端,如果服务端有多个服务器集群[2]而成,从客户端角度来说,由于服务是无状态的,客户端的请求可以发到集群中的任意一台服务器,获得相同的响应结果,这样,系统可以通过负载均衡[3]等手段,实现平台系统的水平扩展,提高平台系统的可伸缩性。平台的水平可扩展性能对云计算平台非常重要。
1 无状态服务概念
两个相互关联的Web用户进行交互操作,需要保留操作相关的公共信息,这些公共信息即为Web应用服务的状态,比如用户状态信息或工作流状态信息。状态信息被指定不同的作用域 [4],状态存储的由客户端或 服务器端负责。在Web应用中,服务状态的存储为系统开发提供方便,但对于分布式系统而言,带来其他方面的限制,比如容错性和可靠性限制,倘若报文丢失、重复、传送失序或者保有用户信息的服务器崩溃宕机,状态信息就会出错。如果服务器在响应服务器请求时使用了错误的状态信息,则有可能做出错误的响应,而且用户的最近所有交互操作不能透明地转移到其他冗余服务器上。此外还有服务的负载均衡限制。因为如果服务在有状态模式,某个用户的请求必须发送给已经保存了它的状态信息的服务器才能成功获得服务,如果提交到其他服务器,由于没有其相关状态系统,该请求无法解析,得不到服务。因此在有状态模式下,服务器端无法自由调度用户请求。由于HTTP是一个无状态的协议,系统必须采用额外方法和技术来保存、维护客户端状态。因而,为了克服这些不足,无状态服务成为云计算这种分布式平台的更好的技术选择。
无状态指的是任何Web服务器请求完全与其他请求相隔离,客户端任何状态信息不在服务端保存,对单次请求的处理,不依赖其他请求,也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取到。
从用户角度来看,Web服务的有状态表现为客户端与服务器端强耦合,比如浏览器中的后退操作,如果某个业务流程为step1->step2->step3,当系统执行至step2用户进行后退操作,由于用户的状态可能被不可逆地修改,系统就不是按照用户所期望的方式运行。相反,如果Web服务是无状态的,比如常用的搜索引擎服务,任何用户可以在浏览器地址栏中输入“https://www.baidu.com/s?wd=iphone&pn=60”来获得从第六十一条开始的关于iphone的搜索记录,并且如果百度某个地区服务器瘫痪了,用户相关请求透明地被转移到至其他地区的服务器,在其它服务器上得到相同的服务响应。
2 云计算平台无状态服务实现
Web系统使用的HTTP协议是无状态,在应用层上,服务器没有保存客户端的状态信息,客户端每次请求服务时,必须每次都带上自己的状态(比如通过cookie、session等)。服务端在响应客户端的请求的时候,会向客户端推送一个cookie,这个cookie记录状态信息。客户端在后续的请求中,携带这个cookie,服务端根据这个cookie判断这个请求的上下文关系,因此cookie是无状态化向状态化过渡的一个手段。
在信息管理云计算平台中,在客户端采用cookie机制来保存状态信息,在服务器端采用session会话来保存状态。session 与cookie的区别如下。
(1)session数据放在服务器中,而cookie数据存放在客户的浏览器中;
(2)服务器在一段时间内保存session数据。在访问大量增多时,会占用较多服务器的资源,降低服务性能,如果考虑到服务器性能方面,采用其它技术手段降低对服务器响应性能的影响;
(3)由于其它程序可以分析存放在本地的cookie并进行cookie欺骗,因此cookie不是很安全;
(4)单个cookie在客户端的容量有限制,一个站点在客户端存放在cookie中信息不能太多,此外,如果cookie信息过大,增加客户端与服务器的通信量,降低系统通信性能,耗费通信带宽;
(5)在云计算平台系统中,session存储登陆信息等重要信息,cookie中存储其他信息。
3 基于无状态服务的云计算平台的优点
3.1 将后台与表示层彻底分离
云计算平台采用MVC架构,实现系统解耦、松耦合的设计,服务器端将系统业务核心功能进行封装,并以服务的方式提供给客户端。业务服务对客户端透明,其具体实现客户端不再关注,客户端只用专注设计用户体验良好的UI和人机交互功能。
3.2 便于平台开发人员协同开发
对于松耦合架构系统,开发人员只需关注自己负责业务模块具体实现,与系统其它模块交互,通过统一接口方案进行对接和调用,开发人员间可以方便地进行协同开发工作。
3.3 通过负载均衡,平衡服务器压力
客户端用户请求,通过负载均衡,按一定策略,将用户请求分配到最合适的服务器进行业务处理并返回处理结果,对于系统来说,实现资源的最大话利用,提高系统整体性能。
4 结语
信息管理云平台结构复杂度高,系统信息吞吐量大,为提高系统响应性能以及系统可扩展性,服务采用无状态设计,平台系统可以很方便地实现水平伸缩,在云平台这种并发环境下,避免服务器端多线程带来的副作用。
参考文献
[1] D Booth,Hugo Hass,Francis McCabe,etal.Web Services Architecture,W3C Working Group Note[J].Concurrency & Computation Practice & Experience,2004,9(5):72-81.
[2] 贺海梁,袁玉宇.基于REST的面向资源Web应用架构参考模型[J].软件,2012,33(11):59-63.
[3] Roy Thomas Fielding.Architectural styles and the design of network-based software architectures [D]. Irvine: University of California, Irvine,2000.
[4] 岳昆,王晓玲,周傲英.Web服务核心支撑技术:研究综述[J].软件学报,2004,15(3):428-442.
关键词:云计算 无状态服务 云平台
中图分类号:TP393 文献标识码:A 文章编号:1672-3791(2015)11(a)-0017-02
云计算平台架构复杂,平台逻辑业务数量多,系统前台与后台交互信息量大,平台的服务设计成无状态服务更适应云计算平台应用场景,服务不保持状态信息,也即是客户端与服务端交互活动的信息,当客户端向服务器端发送服务请求时,在服务请求中携带服务器端服务响应请求所需要的一切信息[1],或者,服务端可以从外部获取到需要的信息,比如从数据库或内存获取。对于无状态服务端,如果服务端有多个服务器集群[2]而成,从客户端角度来说,由于服务是无状态的,客户端的请求可以发到集群中的任意一台服务器,获得相同的响应结果,这样,系统可以通过负载均衡[3]等手段,实现平台系统的水平扩展,提高平台系统的可伸缩性。平台的水平可扩展性能对云计算平台非常重要。
1 无状态服务概念
两个相互关联的Web用户进行交互操作,需要保留操作相关的公共信息,这些公共信息即为Web应用服务的状态,比如用户状态信息或工作流状态信息。状态信息被指定不同的作用域 [4],状态存储的由客户端或 服务器端负责。在Web应用中,服务状态的存储为系统开发提供方便,但对于分布式系统而言,带来其他方面的限制,比如容错性和可靠性限制,倘若报文丢失、重复、传送失序或者保有用户信息的服务器崩溃宕机,状态信息就会出错。如果服务器在响应服务器请求时使用了错误的状态信息,则有可能做出错误的响应,而且用户的最近所有交互操作不能透明地转移到其他冗余服务器上。此外还有服务的负载均衡限制。因为如果服务在有状态模式,某个用户的请求必须发送给已经保存了它的状态信息的服务器才能成功获得服务,如果提交到其他服务器,由于没有其相关状态系统,该请求无法解析,得不到服务。因此在有状态模式下,服务器端无法自由调度用户请求。由于HTTP是一个无状态的协议,系统必须采用额外方法和技术来保存、维护客户端状态。因而,为了克服这些不足,无状态服务成为云计算这种分布式平台的更好的技术选择。
无状态指的是任何Web服务器请求完全与其他请求相隔离,客户端任何状态信息不在服务端保存,对单次请求的处理,不依赖其他请求,也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取到。
从用户角度来看,Web服务的有状态表现为客户端与服务器端强耦合,比如浏览器中的后退操作,如果某个业务流程为step1->step2->step3,当系统执行至step2用户进行后退操作,由于用户的状态可能被不可逆地修改,系统就不是按照用户所期望的方式运行。相反,如果Web服务是无状态的,比如常用的搜索引擎服务,任何用户可以在浏览器地址栏中输入“https://www.baidu.com/s?wd=iphone&pn=60”来获得从第六十一条开始的关于iphone的搜索记录,并且如果百度某个地区服务器瘫痪了,用户相关请求透明地被转移到至其他地区的服务器,在其它服务器上得到相同的服务响应。
2 云计算平台无状态服务实现
Web系统使用的HTTP协议是无状态,在应用层上,服务器没有保存客户端的状态信息,客户端每次请求服务时,必须每次都带上自己的状态(比如通过cookie、session等)。服务端在响应客户端的请求的时候,会向客户端推送一个cookie,这个cookie记录状态信息。客户端在后续的请求中,携带这个cookie,服务端根据这个cookie判断这个请求的上下文关系,因此cookie是无状态化向状态化过渡的一个手段。
在信息管理云计算平台中,在客户端采用cookie机制来保存状态信息,在服务器端采用session会话来保存状态。session 与cookie的区别如下。
(1)session数据放在服务器中,而cookie数据存放在客户的浏览器中;
(2)服务器在一段时间内保存session数据。在访问大量增多时,会占用较多服务器的资源,降低服务性能,如果考虑到服务器性能方面,采用其它技术手段降低对服务器响应性能的影响;
(3)由于其它程序可以分析存放在本地的cookie并进行cookie欺骗,因此cookie不是很安全;
(4)单个cookie在客户端的容量有限制,一个站点在客户端存放在cookie中信息不能太多,此外,如果cookie信息过大,增加客户端与服务器的通信量,降低系统通信性能,耗费通信带宽;
(5)在云计算平台系统中,session存储登陆信息等重要信息,cookie中存储其他信息。
3 基于无状态服务的云计算平台的优点
3.1 将后台与表示层彻底分离
云计算平台采用MVC架构,实现系统解耦、松耦合的设计,服务器端将系统业务核心功能进行封装,并以服务的方式提供给客户端。业务服务对客户端透明,其具体实现客户端不再关注,客户端只用专注设计用户体验良好的UI和人机交互功能。
3.2 便于平台开发人员协同开发
对于松耦合架构系统,开发人员只需关注自己负责业务模块具体实现,与系统其它模块交互,通过统一接口方案进行对接和调用,开发人员间可以方便地进行协同开发工作。
3.3 通过负载均衡,平衡服务器压力
客户端用户请求,通过负载均衡,按一定策略,将用户请求分配到最合适的服务器进行业务处理并返回处理结果,对于系统来说,实现资源的最大话利用,提高系统整体性能。
4 结语
信息管理云平台结构复杂度高,系统信息吞吐量大,为提高系统响应性能以及系统可扩展性,服务采用无状态设计,平台系统可以很方便地实现水平伸缩,在云平台这种并发环境下,避免服务器端多线程带来的副作用。
参考文献
[1] D Booth,Hugo Hass,Francis McCabe,etal.Web Services Architecture,W3C Working Group Note[J].Concurrency & Computation Practice & Experience,2004,9(5):72-81.
[2] 贺海梁,袁玉宇.基于REST的面向资源Web应用架构参考模型[J].软件,2012,33(11):59-63.
[3] Roy Thomas Fielding.Architectural styles and the design of network-based software architectures [D]. Irvine: University of California, Irvine,2000.
[4] 岳昆,王晓玲,周傲英.Web服务核心支撑技术:研究综述[J].软件学报,2004,15(3):428-442.