Apusic应用服务器对集群服务提供了优异的支持,通过Apusic集群服务,企业应用能够获得高可用性及水平可扩展性。
我们知道在集群中需要在各结点之间同步一些状态信息,每当一个结点的状态发生变化时,都需要通过多播等方式向其他结点传递状态信息,随着集群内部结点的增多,内存复制将会非常频繁,从而造成广播风暴,耗费大量的网络带宽,对性能造成很大影响。Apusic集群针对不同的场景提供了各具特色的创新性设计与实现。例如:Apusic独创的Client Session Cache(客户端会话缓存)技术。针对Stateful SessionBean, Apusic所采取的技术是客户端缓存,直接将状态信息保存在客户端,当服务器失效时将状态转移到可用服务器,这将有效降低广播风暴出现的机率,从而大大提升集群效果。Apusic自带的负载均衡器也采用类似的技术,将状态信息保存在负载均衡器中,达到同样的效果。除此之外,Apusic还提供了集群节点配对复制技术,以解决在使用第三方web负载均衡器时的状态复制问题,此时,每个节点只把自己的状态复制到集群中的一个节点上,以此避免网络风暴。。
Apusic作为专业的、成熟的JavaEE应用服务器,它提供了整套的、灵活的、有效的集群方案,是金融、电信、电力等行业的基于JavaEE技术的高性能、高可用、可扩展系统的保障。
Apusic集群主要包括Web集群、JNDI集群、EJB集群、JMS集群。
一般来说,Web集群试图解决两个问题:客户请求的负载均衡和Session的高可用。
Apusic Web集群为这两个问题提供了灵活、全面的解决方案。客户请求的负载均衡是指客户的请求依赖特定算法被合理地分配给多台Web Server来处理。Session的高可用性是指当某台Web Server失效,这台Web Server服务的客户的请求会被透明地转发给其它有效Web Server,而会话状态(Session)依然可用。我们把集群范围内具有高可用性的Session称为集群Session。
Apusic Session集群采取Instant Replication,即某节点的Session操作是即时传播(同步)到集群中的其它节点的;一些应用服务器厂商的集群Session同步采取非即时的方式,这会降低Session可用性。还有一个比较常见的场景是新节点加入工作中的Apusic集群时,新节点的Session会自动与集群同步。
JNDI作为JavaEE的基础技术,JNDI集群往往是其它上层集群技术的必要条件。JNDI集群是Apusic服务器提供的一个服务,一旦启用这个服务,集群的各节点(指Apusic服务器)都拥有一个集群JNDI树,它有别于本地JNDI树,事实上,在JNDI集群节点中,这两棵树是同时存在的。
Apusic JNDI同时具有JNDI负载均衡和失效恢复能力。Apusic JNDI负载均衡和失效恢复能力,可以通过指定JNDI服务的集群节点来实现,也可以通过启动discovery服务,自动发现能够提供JNDI服务的集群节点。
Apusic EJB集群主要面向两个问题:负载均衡和高可用性。值得注意的是,EJB集群一般都是针对EJB远程调用而言,而非本地调用(包括集群节点内部使用远程接口,因为对于这种情况,Apusic会自动优化成本地调用)。
EJB负载均衡指EJB调用通过特定算法分配到多台应用服务器的行为。这里的EJB调用指对EJB Bean接口的调用。然而,Apusic EJB集群还支持Home接口的负载均衡。目前,Apusic EJB集群支持的负载均衡算法有:RANDOM,ROUND_ROBIN,WEIGHTED,STICKY。
EJB高可用性指在某集群节点失效的时候,对它的EJB Home接口的调用或者Bean接口的调用会透明地转移到其它有效节点。
JMS是JavaEE相当重要的一部分,它为开发异步、可靠、高性能、灵活的系统提供支持。目前广泛应用于EAI、EDI等领域。Apusic JMS集群主要包括消息路由和集群队列功能。
消息路由一般用来解决在发送消息的客户端和消息目的地不能直接连通的情况。依赖智能路由算法,Apusic会在JMS网络中选择一个或多个消息路由器(Router)组成一条到达消息目的地的最优通路,负责转发消息。
Apusic MQ支持消息队列集群(Message Queue Clustering)。所谓消息队列集群是指在多个Apusic MQ之间建立路由连接,从而组成一个消息路由网络。在网络中任何一个节点上定义的集群队列都将被全部节点所共享,通过任何一个节点向一个集群队列发送/接收消息都是等效的,对客户来说无法察觉是否正在使用集群,集群中网络拓扑结构发生变化对客户也没有任何影响。
当路由节点与其他节点建立连接时,通过发布自身定义的集群队列,从而使集群队列获得共享,无须系统管理员干预,大大减少了路由网络的维护量。使用集群还可以提高系统的可用性,路由网络中单个节点发生故障停机或部分网络无法连通时并不影响集群队列的使用,同时在发送消息时根据各节点的负荷情况对负载进行分配,从而使节点处理能力和网络带宽被充分利用。