time 
设为首页】【收藏本站
当前位置: 主页 > 软件工程 > 分析与建模 > 应用服务器集群、可用性与无session的企业应用

应用服务器集群、可用性与无session的企业应用

时间:2009-12-01 20:27 点击:605次 字体:[ ]




    本文的主要目的是讨论企业应用实现高可用性的方案。即如何在保证性能的同时,使得应用保持 24 小时的可用性。 为实现此目的,灾难恢复和性能问题的解决是必不可少的。本文仅就程序和应用服务器两方面进行讨论,不讨论数据库等相关的问题。 

    1.灾难恢复 

    所谓灾难恢复(仅对 Web 应用而言),是指在某个应用失去响应能力后(比如重启),客户端能立即透明的切换到冗余应用。这一切换对客户端来讲应该是感觉不到的。从技术上来讲,就是客户端在与服务器端进行交互的过程中,客户端在服务器端保存的状态能立即切换到新的服务器上。在 web 应用中,这些状态一般保存在 http session 里。所以所谓状态复制,一般来讲就是 http session 复制。 

    目前能提供灾难的方案之一是集群。对于 Weblogic ,集群的实现方式为 Paired servers replication : 
 
    在这种实现方式里, session 只在相邻的或者指定的两个 server 之间进行复制,当某一个 server down 掉后,需要 servers 前端的 load balancer 知道哪一台 server 是这个 Server1 的 paired backup server ,并将原来指向 Server1 的请求转发给这台 paired backup server 。应该说这种复制策略是相当高效的,但是对集群前端的路由要求比较高。 

    2.性能 

    企业应用一般会跑在多台服务器上。就性能而言,我们的期望自然是:总体性能 = 单台服务器性能 X 服务器台数。不过从上边的说明就能看出,集群中的每一台 server 都会有一部分性能耗费在 session 复制上。耗费的性能取决于 session 的大小。如果应用中 session 保留了大量的数据,或者用户数量很多,损耗的性能也将相当可观。 

    (有一种提升性能的方案是使用分布式的对象,例如 EJB ,根据对象耗费性能的不同对其所在服务器进行调整。不过这种方案早已充满了极大的争论。流行的观点认为,对于业务逻辑不是很复杂的应用,使用分布式对象只会让性能下降。因此下边将不再讨论。) 

    3.维护 

    从维护的角度上看,如果我们能不重启应用就能给应用添加新的功能,或者修改已有的 bug ,那显然相当 8 错。 

    分析

    根据上边的说明,我们可以初步得出几个结论: 

    1、要使用Weblogic集群所带来的灾难恢复的好处,就必须忍受同时带来的性能损失。 

    2、在使用weblogic集群的同时,我们必须拥有高性能的 Server 路由设备。 

    3、使用weblogic集群,在重新部署应用时,由于不能重新部署 (redeploy) 集群下单台 server 的应用,导致几台 server 需要同时停掉应用。当所有的 server 全都陷入灾难中,灾难恢复也就失去了意义。


    那么,如何在实现灾难恢复和高性能的同时,又能避免或者减少上边列举的损失呢? 

    初步的思路可以有: 

    1、如果我们能忍受某一台 server down 机后客户状态丢失的后果,那么最简单的方案就是停用集群,前端 load balancer 把相同 IP 的请求转到相同的服务器。在重新部署应用时,分批重起不同 server 上的应用。 

    2、全部采用无 session 策略。将客户状态保留在客户端。这样没有Weblogic集群也就无所谓了。我们只需要一个普通的(分发器+失败检测)将请求均匀的分发到可用的服务器上。



本文地址 : http://www.fengfly.com/plus/view-158754-1.html
标签: 可用 应用 性能 企业 集群 Server
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码: