客户端拦截器和外部负载平衡架构

时间:2015-08-28 16:13:31

标签: java java-ee jboss architecture

我正在公司实施新的应用程序,而我正在寻找集群方法。根据jboss文档here,有两种类型的架构可供使用。

  1. 客户端拦截器
  2. 外部负载平衡
  3. 问题1:在客户端拦截器架构中。客户端具有代理对象,它知道将消息路由到哪个服务器。谁在这里客户?我知道java脚本/ HTML无法保存代理对象。它是节点前面的spring / servlet层吗?

    问题2:外部负载均衡器是否知道有关代码和节点可以包含的服务的信息,或者只是使用算法将请求委托给?

1 个答案:

答案 0 :(得分:1)

For 1 - 客户端是远程EJB动态代理和/或应用程序客户端容器(桌面应用程序)

对于2 - 外部负载均衡器对代码一无所知。 (我看到这个解决方案的使用远远超过问题1中的情况)

有许多方法可以配置群集,具体取决于您的负载平衡和容错目标。例如,您可以在非群集的应用程序服务器之间进行负载平衡。由于没有会话复制,故障容忍度更低,性能更快。

以下是关于数字1的更多细节。

在问题1中假设我有一个分布式应用程序。说一个在应用服务器上运行的Web应用程序和EJB,我希望调用另一个应用程序服务器的某些EJB。

当您调用远程EJB时,应用程序服务器会生成一个转移到调用服务器的类。这是动态代理,它包含所有网络通信内容。

在整个应用服务器市场中,我们通常会看到两种配置形式,(1)一个动态代理类,它知道集群并将调用其他节点,(2)一个带有节点列表的CORBA URL,即corbaloc: :nodeA.host.com,nodeB.host.com /...

以下是关于数字2的更多细节。

第二种情况通常是我们向“外部”世界的呼叫者提供基于HTTP的服务,WebUI,REST,SOAP等。

带有mod_jk插件的Apache HTTPD是JBoss docs中的一个例子here

可以将请求发送到不同的服务器以解决加载或失败问题。 HTTP会话对象在节点之间复制。 (JBoss中的JGroups库处理这个问题,IP Multicast也是一种常用技术)

因此,负载均衡器/反向代理不需要知道它只知道有关转发请求的URL的代码,集群中的应用程序服务器会协作以获取会话信息。