基于WebLogic的集群Web服务器的实现(1)
2015-09-02 01:00
导读:计算机应用论文论文,基于WebLogic的集群Web服务器的实现(1)样式参考,免费教你怎么写,格式要求,科教论文网提供的这篇文章不错:
摘 要 为了提高Web访问的实时性和吞吐量,本文提出了一种基于
摘 要 为了提高Web访问的实时性和吞吐量,本文提出了一种基于WebLogic的负载均衡集群系统的构建方案。应用于我们的Internet网络服务器上,将负载分给多个服务器分担,能够解决Internet服务器面临的大量并发访问造成的CPU或I/O的高负载问题。本文对系统进行了压力测试,实验结果表明该系统能够适应大型商业网站的需求。 关键词 负载均衡;集群;可伸缩性;可用性
0 引言 互联网的出现使信息访问产生了质的飞跃,但随之而来的是Web流量的激增(高并发访问),由于涉及信息量十分庞大,用户访问的频率也高,许多基于Web的大型公共信息系统(如电子图书馆、BBS、搜索引擎和远程教育等)需要在实时性和吞吐量方面都具有较高性能的Web服务器支持。一些热门的Web站点由于负荷过重而变的反应迟缓。如何提高Web服务器的性能和效率成为一个亟待解决的问题。 实际上,服务器的处理能力和I/O已经成为提高Web服务的瓶颈。如果客户的增多导致通信量超出了服务器能承受的范围,那么其结果必然是服务质量下降。显然单台服务器有限的性能不可能解决这个问题,一台普通服务器的处理能力只能达到每秒几万个到几十万个请求,无法在一秒内处理上百万个甚至更多的请求。显然,采用高性能的主机系统(小型机或大型机)是可行的,但是除了价格十分昂贵外,这种高速、高性能的主机系统,很多情况下也不能解决同时处理几万个并发,因为,高速主机系统只是对于复杂的单一任务和有限的并发处理显得高性能,而Internet中的Web服务器大多数处理是“简单任务”、高强度并发处理,因此即便有大资金投入高性能、高价格的主机系统,也不能很好的满足Web应用的需要。这就是利用Web服务器集群实现负载均衡的最初基本设计思想[1]。1 负载均衡集群 高扩展型集群,即负载均衡集群技术[2],就是带均衡策略(算法)的服务器集群。负载均衡集群在多节点之间按照一定的策略(算法)分发网络或计算处理负载。负载均衡建立在现有网络结构之上,它提供了一种廉价有效的方法来扩展服务器带宽,增加吞吐量,提高数据处理能力,同时又可以避免单点故障[3]。 以Web访问为例,后台的多个Web服务器上面有相同的Web内容,Internet客户端的访问请求首先进入一台服务器,由它根据负载均衡策略(算法)合理地分配给某个服务器[4]。1.1 基于WebLogic的负载均衡集群 WebLogic支持集群技术,即让一组Server指向同一域名一起工作从而提供一个更强大、更可靠的应用平台。对于客户端而言,无论Cluster中有几个Server在工作,看上去都是一个[5]。集群技术有两个最明显的特色: (1)可伸缩性:Cluster对加入其中的Server在性能上没有限制(如普通的PC机),为了提高性能,当客户端的请求大幅增加时,可以动态地向Cluster中添加Server。并且,配置Cluster当一台机器的资源没有被完全利用时,可以在同一机器上启动多个Server,但要求每一个Server使用不同的IP,而不能用同一IP的不同端口。 (2)高可用性:由于在Cluster中同一service在多个Server上同时存放或放在一个共享文件系统中,因此相同的请求可以有多个Server提供,并且Server间还可以复制状态信息。这样,当其中某一Server宕机或无法响应请求时,其它的Server会立即接管它的任务,从而把应用和客户端完全隔离开来。1.2 WebLogic 集群的工作机制 每一个Clustered service,在每一个server上都会有一个instance,即一个replica,这些replicas集合在一起形成一个replica-aware stub。这些stubs负责客户端与相关的服务器段对象的通信,当客户端请求该service时,实际上是向stub发出请求,stub根据不同的算法调用集合中某一replica,如果调用失败,stub会检测到错误并重新调用其它的replica。Cluster支持多种算法:随机、轮循、基于性能的负载均衡的轮循(Weight-based round-robin)、根据参数值调用(Parameter-based routing)。 WebLogic Cluster通过负载均衡和容错最大程度的实现了它的可伸缩性和可用性。[6] 为了提高Cluster的可伸缩性,必须保证充分利用每一个Server。WebLogic可以在不同平台、不同性能的机器上安装Server并进行Cluster,然后采用Weight-based round-robin算法达到负载均衡,从而使每一个Server都得到充分的利用。 为了使Cluster具有高可用性,必须具备故障恢复的能力,这一点可以通过replica-aware stub的容错功能来实现。Stub 主要是通过在检测到错误信息时重新进行调用的方式实现容错。当重新调用不会导致错误的结果时(如stub确认failed server不能接收到请求),容错功能自动实现。而有些情况下,重新调用可能会导致某一service被请求了多次的错误结果。例如:客户端C请求Clustered购物车服务中的additem()方法,replica-aware stub接收到请求,根据算法调用Server1上的service,Server1响应请求并返回结果,但在结果成功到达客户端之前,Server1出现错误。此时stub接收到错误信息,因此重新调用Server2上的这一方法,但实际上Server1已经将item加入购物车,这样就造成重复。为了解决这种问题,可以为服务添加一个唯一标识,如上述的additem()方法中可添加一个参数——序列号。每一个item有一个唯一的sequence,相同sequence的item不能被重复添加。2 构建WebLogic集群2.1 Domain和Server Domain是WebLogic Server实例的基本管理单元。所谓Domain就是,由配置为Administrator Server的WebLogic Server实例管理的逻辑单元,这个单元是有所有相关资源的集合。 Server是一个相对独立的,为实现某些特定功能而结合在一起的单元。[7] 一个Domain 可以包含一个或多个WebLogic Server实例,甚至是Server集群。一个Domain中有一个且只能有一个Server 担任管理Server的功能,其它的Server具体实现一个特定的逻辑功能。2.2 系统实现方案 在此,操作系统平台使用Windows 2000,软件使用Bea WebLogic Server 8.1 SP2,程序基于J2EE架构,有以下两种方案: a.单层混合型的集群架构(Cluster) 这种架构将所有的Web应用以及相关的服务应用全部置于集群中的单一WLS实例中,这种架构的优势在于: 易于管理; 灵活的负载平衡机制; 更强的安全控制; b.多层结构的集群架构(Cluster) 这种架构使用两个WLS集群,一个放置表静态内容和集群Servlet,另一个放置集群EJB。一般应用于下面这些情况: (1)在负载平衡机制需要调用集群EJB中的方法时; (2)在提供内容与提供对象的服务之间需要更大的机动性时; (3)在需要更高的系统稳定性时;2.3 集群应用的必要条件 集群中的所有Server必须位于同一网段,并且必须是IP广播(UDP)可到达的。[8] 集群中的所有Server必须使用相同的版本,包括Service Pack。 集群中的Server必须使用永久的静态IP地址。动态IP地址分配不能用于集群环境。如果服务器位于防火墙后面,而客户机位于防火墙外面,那么服务器必须有公共的静态IP地址,只有这样,客户端才能访问服务器。共2页: 1 [2] 下一页 论文出处(作者):