weblogic 部署 ejb3与 集群部署小结

转:http://blog.sina.com.cn/s/blog_5f123fed0100h1gh.html                          

 weblogic 部署 ejb3
                                 -是否要使用 remote
                                 -是否需要应用层集群
                                 -是否web部分、ejb部分分离

    正在热忠于集群的学习,很想去弄明白什么是集群、集群带给我们什么好处。
    一般地说明是:
                 Hight availability [高可用]
                 Load balancing     [负载平衡]
                 Scalability        [可扩展]
    我不喜欢这种解释,好抽象。首先 我把 集群分为两部分,一:负载平衡;二:集群
    负载平衡提供两个功能:一:负载平衡[将请求发送到集群中各server] ;二:失效转发
    集群提供三个功能:    一:增加负载[通过增加server解决部分性能问题]; 二:可扩展[可以方便地增加或卸除server] ;三:可维护[某台或多台server 挂了,有其他server顶替] ;
   

    前段时间写了《apache2.2 tomcat5.5 jboss4.2搭建 web集群+应用集群》 现在想要把工程迁移到weblogic10上,其中也出现一些问题,还是先前我说的,应用服务器到底需要哪些 jar,所以花了不少时间去分离ejb部分到底需要哪些 jar ,结果还不错:部署成功了,在这里不在累述。我要说的是:我们是否真的要将 web部分、ejb部分 分开,按照《apache2.2 tomcat5.5 jboss4.2搭建 web集群+应用集群》去部署web集群、应用集群,还是挺麻烦,那么我们就将 web部分、ejb部分都打包成ear,然后部署到jboss、weblogic。
   
    基于以上考虑,我就想是否可以不要使用 remote ejb ,毕竟 remote带来了性能上的顾虑,所以我就想不要去使用remote,只使用local, 然后祛除应用集群,只保留web集群,在外面使用apache进行负载均衡、失效转发,那么web部分只会调用本地 ejb ,对性能是有不少提高的,当然也带来了其他问题:

    1、如果某台服务器中 ejb 部分 挂了 ,但是web 部分没有挂掉,apache 继续发送 request 到web部分,这就会出问题了,因为 应用层没有集群,web部分只调用 本地 ejb ,可是 本地  ejb 部分 挂了 。于是我就要考虑,这种情况多吗?
   
    2、由于没有应用集群,那么 statefull session bean 就无法使用了,比如 apache 发送一个请求到A服务器,使用了 statefull session bean ,然后接着请求到 B服务器,但是 B服务器 是没有 A 服务器上的statefull session bean 的。

    3、所以是否使用应用层 集群 还是要看实际 的情况!将web 部分、ejb部分分离也有优势,比如基于安全的考虑,可以将 ejb 部分隐藏起来 ,使外部不容易发现。
      
    以上3点 其实是对 集群的 二层结构 和 三层结构 的考虑!
    weblogic <wbr>部署 <wbr>ejb3与 <wbr>集群部署小结
                               (两层结构)


     weblogic <wbr>部署 <wbr>ejb3与 <wbr>集群部署小结

                               (三层结构)
   
    两层结构和三层结构 是各有优势:
   
    两层结构:
            advantages:
              1、易于管理,ejb部分和web部分可以打包成ear 部署在同一server
              2、相对简单的load balaning  ,因为只需要web层 load balaning
            disavantages:
              1、 ejb 部分不能实现集群[就像上面所说的:两层结构中的 ejb container 挂了怎么办,我们只能希望整个server 挂掉]

    三层结构:
            advantages:
              1、ejb实现集群
              2、集群更加灵活
            disavantages:
              1、增加了管理上的复杂度
              1、remote 带来性能上忧虑
              2、集群中各节点的 有状态资源维护带来的开销。比如statefull session bean

     最后还是要说一点:我们工程的性能瓶颈在哪里? 是在 worker功能计算,还是在访问数据库瓶颈。
如果是在 worker功能计算, 那么集群是可行的,如果是在访问数据库 ,那么就要改进sql访问了。

posted @ 2012-11-21 13:28  ocean0606  阅读(274)  评论(0)    收藏  举报