操作系统  办公  实用知识  设计  开发  WEB开发  移动开发  数据库  软件工程  网管  安全  管理  信息化  答疑  渠道 

Web应用下的集群基础技术分析-Session故障恢复

2006-8-28 发布方:东方通科技 网友评论 0 条 点击进入论坛

   几乎所有的商用应用服务器都对集群提供支持以达到对应用系统的负载均衡、冗余备份、容错的目的,从而得到最大限度的可用性、可靠性及可伸缩性。集群模式下,一组服务器协同工作,当一个服务器失败时,请求会被透明地转发到备份或者同步处理的服务器上,并不会因此而影响客户的访问。对客户最严重的影响可能是一次失败的请求,如果再次发出请求,即可得到继续的服务。

    将应用从一个服务器无故障迁移至另一个服务器,对于带有会话的应用来讲,Session信息在服务器之间的正确传递(即Session复制)是集群的基础。可用于服务器间Session复制的方法很多,选择的因素主要取决于应用程序集群的规模、复制的目标和 Web容器支持的复制策略。复制具有性能成本,包括 CPU 周期(存储在会话中对象的序列化)、网络带宽(网络复制),以及Session持久化时写入磁盘或数据库的成本。用得比较广范的复制方法有:基于内存的复制,基于JDBC的复制及基于文件系统的复制。

    基于内存的复制

    基于内存的复制方式是参与集群的服务器共享序列化的会话数据副本。实现机制可以是复制所有会话到所有主机中,也可以是在一台主服务器和一台(或更多)备份服务器之间进行复制。前者可提供最大的可用性,实现负载均衡也最容易,但会消耗每个节点的内存及网络带宽从而限制了集群的规模。后者则提供了更好的系统伸缩性能,但增加了故障迁移时负载均衡任务的复杂度,因为它必须能确定另外哪一台(或几台)服务器有这个会话。
 
    基于JDBC的复制

    基于JDBC的复制方法是序列化会话内容并将它写入数据库。这种方法相当直观,其优点是不仅会话可以故障转移到其他主机,而且即使整个群集失效,会话数据也可以保存下来。基于JDBC复制的缺点是性能成本,数据库事务是昂贵的。此外,虽然它可以在 Web 层很好地伸缩,却可能在数据层产生伸缩问题。如果群集增长到一定程度,扩展数据层以容纳会话数据会很困难或者成本无法接受。
 
    基于文件系统的复制
 
    文件方式的复制类似于JDBC方式的复制,只是使用共享文件服务器而不是数据库来存储会话数据。这种方式的成本一般比使用数据库的成本(硬件成本、软件许可证和计算开销)低,其代价则是可靠性的降低(数据库可提供比文件系统更强的持久化保证)。       

基于以上几种复制方式的特点,从整个集群系统的伸缩性,可用性,可靠性,容错性等综合考虑出发,TongWeb应用服务器为Web应用下Session的故障恢复提供了两种可选方案:基于内存的复制和基于JDBC的复制。

    TongWeb上基于JDBC的Session复制
 
    TongWeb上JDBC方式的Session复制的实现原理是利用Web容器采用的拦截器策略,创建一个全新的拦载器,在拦载器的方法中,实现相应的Session数据库存/取及失效时数据库内容及时更新等功能,再以合适的顺序插入到拦载器数组中,从而实现JDBC方式的Session复制功能。

    此外,为了提高系统的响应性能,提供对Session的内存Cache功能供用户选择。目前有两种Cache方式:全部Cachea或者不Cache。为了提高系统的可用性,还提供了可视化的界面用于JDBC方式Session复制的配置管理。
    TongWeb上基于内存的Session复制

    基于内存的Session复制的TongWeb应用级集群拓扑结构如图1所示: 
 
    图1 内存的Session复制的TongWeb应用级集群拓扑图

    在这种方式下,TongWeb通过限制Session复制只能在两个节点之间进行(主服务器和备份服务器)来提高集群系统的吞量以获得更好的伸缩性。如果一个失效,另一个节点会自动将Session数据复制到其它可用的节点上。分两种情况:
 
    1. 当主节点失效,备份节点立即变为主节点,同时选择新的备份节点并复制Session数据。

    2. 当备份节点失效,立即为所有以该节点为备份节点的主节点选择一个备份节点,并复制Session数据。
 
    同时,在备份节点有效的情况下,当请求不改变Session数据时,只复制维护Session生命期的数据,而不是所有的Session数据以减小复制Session的数据量,从而最大限度地降低Session复制所带来的系统及网络开销。为了保证会话信息正确的在服务器之间迁移,会话ID中包含有主服务器和备份服务器的IP地址和端口的base64编码信息。会话ID的格式如下:
 
    参与集群:生成的随机数 + 节点的IP地址和端口的编码 + (主节点编码+备份节点编码)

    不参与集群:生成的随机数 + 节点的IP地址和端口的编码 + (节点的会话亲和字,即节点IP和端口的编码)
 
    此外,由于TongWeb集群提供的是以Web 应用为最小粒度的访问控制,即集群节点上部署的应用可以不同,所以Session复制只在部署了同一应用的节点之间复制数据。
综上所述,TongWeb集群系统具有很高的故障恢复能力、可靠性、可用性及可伸缩性。

已有 0 位对此文章感兴趣的网友发布了看法    
我来评两句 登录邮箱: 密码:
  匿名发表
今日推荐
技术文库(共有 46430 篇文章)
操作系统
办公软件
实用知识
网络管理
软件开发
WEB开发
软件工程
数据库
设计在线
信息安全
行业信息化
管理信息化
重点推荐
电子杂志订阅
点击电子杂志名称查看样刊
输入E-mail地址即可订阅
E-mail