首页 > 范文大全 > 正文

基于Jboss AS集群的Web应用架构设计

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于Jboss AS集群的Web应用架构设计范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要:这篇文章从软件开发实用技术的角度出发,介绍了一种采用Java开源软件JBoss AS 所提供的集群功能,来架构、设计、开发高性能、高可靠性的Web应用的方法。

关键字:集群;JBoss AS;Web应用;架构设计

中图分类号:TP311.56,TP302.1,TP319

Web Application Architecture and Designment Based on JBoss AS Cluster

YIN Wan-cheng

(Key Laboratory of Information Network Security, Ministry of Public Security, Shanghai, 201204)

Abstract:Following the applied points of software development technology, this paper introduce a template of architecture designment and development high performance and high availability web application.

Key words: Cluster; JBoss AS;Web Application;Architecture and Designment

1 引 言

随着Internet技术的不断发展,Internet用户的不断增加,现代信息社会对Internet应用的需求也越来越大。Web应用是Internet的核心内容,如何设计、开发、部署高性能、高可靠性的Web应用成为广大ICP(Internet Content Provider)厂商和相关技术人员关注的焦点。集群(Cluster)技术虽诞生已久,但应用还不广泛。随着计算机技术的不断发展,社会上提供集群功能的软件也越来越多。本文通过介绍引入一种开源应用服务器(Application Server)软件JBoss AS和它提供的集群功能,结合Web应用架构设计开发中的常见问题,提供一种架构、设计、开发、部署高性能、高可靠性Web应用的方案,希望能对读者有所帮助。

2 JBoss AS和JBoss Cluster

JBoss AS是一种开源的实现Java EE(Enterprise Edition)规范的应用服务器软件,是目前社会上应用最广的Java EE应用服务器软件之一。目前最新的稳定版是实现Java EE v6的Jboss-6.1.0.Final。它已根据潜在用户的不同需求定制了几个配置,如all、default、minimal、standard等。

JBoss Cluster开始于2001年4月,现在已部署在JBoss AS的all配置中。用户只需进行简单修改就能利用JBoss Cluster提供的强大功能。JBoss Cluster是一组具有共同功能的节点(Node)的划分(Partition)。一个节点可以是一台JBoss AS机器,也可以是一台机器中多个JBoss AS实例(Instance)中的一个。通过多节点的架构,JBoss Cluster就能实现容错恢复(Fault Tolerance)和负载均衡(Load Balancing)的目的,能容错恢复就能提高系统的可靠性,能负载均衡就能提高系统的性能。

JBoss Cluster的特点:集群中的节点通过底层软件JGroup的多播数据包能自动发现;对JNDI(Java Naming and Directory Interface)、EJB(Enterprise Java Bean)等的容错恢复和负载均衡;对HTTP Session的复制等。

3 Web应用与Java EE简介

Web应用技术从1989年发展到现在,从静态HTML页面到动态服务页面,再到现在Web2.0。Web应用也从最初的信息检索,发展到现在以人为中心的、以数据为核心的社会服务形式。但客户端请求(Request)、服务器端响应(Response)的传统应答模式没有改变。高可靠性(Hign Availability)、高性能计算(High Performance Computing)仍然是Web应用系统的追求目标。

Java EE为企业开发基于Java语言的应用提供了一组规范(Specification)。依照该规范开发的基础软件(Web Server和Application Server)和上层应用软件可以由不同厂商独立开发,同一应用软件可以部署在不同的基础软件上,从而为软件的跨平台、可移植提供了保障。该规范很好地涵盖了Web应用开发的很多方面,定义了一组企业开发组件:

 Servlet:用来接收客户端发送过来的Http Request,并做出相应的Http Response。

 Entity Bean:用来展示、保存实体数据,与企业信息存储系统交互。

 Stateless Session Bean:客户端随机使用一个该实例,该实例的两次函数调用间不保存客户端状态。

 Stateful Session Bean:该实例保存函数调用间的状态,一个客户端生产对应的一个实例。

 Singleton Session Bean:只有一个实例,在多个客户端间共享,支持并发访问。

4 jboss Cluster中Java EE核心服务、开发组件的集群

JNDI:是Java EE应用服务器提供的最重要服务之一,JBoss Cluster提供的HA-JNDI服务具有透明的容错恢复、负载均衡、客户端自动发现、统一的JNDI视图等。对于在同一AS中的客户端,只需在初始化InitialContext时,指定jnp.partitionName的值为你的分区名;对于客户端在另一个JVM(Java Virtual Machine)中的客户端,则需在初始化InitialContext时,指定java.naming.provider.url=node1:1100,node2:1100,nodeN:1100即可。

Session Bean:对于Stateless类型的Session Bean,只需在该类打上org.jboss.ejb3.annotation.Clustered的评注即可。对于Stateful类型的Session Bean,由于在函数调用间有状态,所以除了增加同样的Clustered评注外,还需指定存储状态信息的CacheConfig评注。

Entity Bean:在JBoss Cluster中,所有节点里的Entity Bean实例通过分布式缓存、复制来保持同步。通过在持久化配置文件persistence.xml中添加二级缓存来减少与数据库的往返,从而提高性能,同时给每个Entity Bean打上org.hibernate.annotations.Cache的评注

Http Session:只要是Session状态复制和负载均衡。第一步通过在web部署描述文件Web.xml中增加来实现。在JBoss AS 6.0中配置了一个基于Apache Httpd的负载均衡器mod_cluster组件,JBoss AS节点通过mod_cluster的专有连接与前端的Httpd服务器进行状态等信息的交互,从而Httpd能更快、更好地发现后台集群中JBoss AS节点的变化,为容错恢复和负载均衡提供更快的预处理。

5 系统架构设计

如图1所示:用户的http访问请求通过Apache Httpd服务器负载均衡到JBoss AS Web集群中的不同节点机器上,该节点将该请求通过https重定向到自己的登录服务Servlet上,该Servlet通过HAJNDI找到JBoss AS EJB集群中的EJB Bean,该Bean通过查询数据库等后台基础服务后,确认登录是否成功,并将结果返回给Servlet,Servlet再将登录结果直接返回给访问用户。该系统为了提高系统性能,做了两次均衡负载,首先是通过Apache Httpd将大量的访问请求随机分配给后台的Web集群,这样Web集群中的不同节点就可以并行工作;第二次是通过HAJNDI将Web集群中Servlet需要的EJB服务随机分配到EJB集群中,这样EJB集群中节点也就可以并行工作。在每个集群中通过Cache机制,也实现了高可靠性。

6 系统主类图

如图2所示:在JBoss AS Web集群中,每个节点上部署一个Web应用包(即war包),该war包中主要包含一个从HttpServlet中扩展来的LoginServlet类,该类通过检测收到请求的Scheme,如果是http则将该请求重定向为https请求,因为https请求会从用户端带上用户个人证书。该Servlet通过HAJNDIFactory得到JBoss AS EJB中的LoginServiceBean的引用。在JBoss AS EJB集群中,有一个单例、初始化的DatabaseConnectionPool,LoginServiceBean通过该单例得到DatabaseConnection实例。LoginServiceBean类定义打上@Clustered注释,是配合HAJNDI应用功能的。

7 核心代码

参考文献:

[1] Sacha Labourey, Bill Burke. 《JBoss AS Clustering》

[2] Brian Stansberry, Galder Zamarreno, and Paul Ferraro. 《High Availability Enterprise Services with JBoss Application Server Clusters》

作者简介:尹晚成(1976-),男,湖北省大冶市人,助理研究员,硕士,主要研究方向为信息网络安全应用技术