1.1.2 服务架构
每个节点上的 ClusterPartition MBean 定义的群集拓扑结构(clustering topography)对系统管理员很重要。但是对于大部分的应用程序开发者来说,你可能更关心从客户应用程序的角度来看的群集架构。JBoss AS 支持两种群集架构:客户端拦截器(client-side interceptors)(proxies 或 stubs)和负载平衡系统(load balancers)。
1.1.2.1 客户端拦截器
JBoss 应用服务器提供的大部分远程服务,包括 JNDI、EJB、RMI 和 JBoss Remoting,都要求客户端获得(如,查找和下载)一个 stub(或 proxy)对象。占位对象(stub object)由服务器生成,它实现服务的商业接口。客户可对占位对象调用本地方法。这个调用会自动寻找路由,并被服务器管理的服务对象引用。在群集环境里,服务器生成的占位对象也是一个懂得怎样把调用指引向不同节点的拦截器。占位对象寻找合适的服务器节点、配置调用参数、解释调用结果,并把结果返回给调用程序。
stub interceptors 拥有群集系统的更新信息。例如,它们知道所有可用网络节点的 IP 地址,怎样在节点上分摊负载的算法(请参考下一部分内容),和如果目标节点不可用时对请求进行失效切换(failover)。对于每个服务请求,服务器节点都用群集里最新的信息来更新 stub interceptor。例如,如果一个节点退出群集系统后,每个客户 stub interceptor 在下一次连接活动的节点时,都会用新的配置来更新。在 service stub 上的所有操作对于客户应用程序都是透明的。
如图1.2, “集群中的客户端拦截(代理)体系结构” 里说明了客户端拦截器群集架构。
图 1.2. 集群中的客户端拦截 (代理) 体系结构
1.1.2.2负载平衡系统
其他的 JBoss 服务,特别是 HTTP web 服务,不要求客户下载任何东西。客户端(如,web 浏览器)按照某种通信协议(如 HTTP 协议)直接发送请求和接收回复。在这种情况下,负载平衡系统需要处理所有的请求并把它们分配给群集里的服务器节点。负载平衡系统是群集里的一个典型概念。它理解群集配置和失效切换策略(failover policies)。客户只需要知道它的存在。如图 1.3, “集群的负载均衡体系” 说明了负载平衡系统的群集架构。
http://blog.51cto.com/viewpic.php?refimg=http://xudayu.blog.51cto.com/attachment/200803/200803091205050005890.jpg
图 1.3. 集群的负载均衡体系
负载平衡本身就是一个单点故障,这对于负载均衡是一个潜在的问题。它需要受到密切的监控,以确保高可用性的集群服务。