java - 客户端拦截器和外部负载均衡架构

标签 java jakarta-ee jboss architecture

我正在我们公司实现一个新应用程序,并且正在寻找进行集群的方法。根据 jboss 文档 here 有两种可用的架构。 .

  1. 客户端拦截器
  2. 外部负载平衡

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

问题 2:外部负载均衡器是否了解节点可以包含的代码和服务,或者它只是使用算法将请求委托(delegate)给?

最佳答案

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

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

配置集群的方法有很多种,具体取决于您的负载平衡和容错目标。例如,您可以在非集群的应用程序服务器之间进行负载平衡。容错能力较低,性能更快,因为没有 session 复制。

这里有关于第 1 点的更多详细信息。

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

当您调用远程 EJB 时,应用程序服务器会生成一个类,该类会传输到调用服务器。这就是动态代理,它包含所有网络通信的东西。

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

这里有关于第二点的更多细节。

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

带有 mod_jk 插件的 Apache HTTPD 是 JBoss 文档 here 中的一个示例。

请求可以发送到不同的服务器来解决负载或故障。 HTTP session 对象在节点之间复制。 (JBoss 中的 JGroups 库处理此问题,IP 多播也是一种常用技术)

因此,负载均衡器/反向代理不需要了解代码,它只需要了解要将请求转发到的 URL,集群中的应用程序服务器会协作获取 session 信息。

关于java - 客户端拦截器和外部负载均衡架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32275463/

相关文章:

java - Android studio : When trying to put a button on, 它给了我一个渲染错误,说

java - Maven Dependency 在 Maven Dependencies 文件夹中显示为一个文件夹

java - 不能使用 AuthenticationException 的子类

Spring 与 Jboss

java - 部署期间 JBoss hibernate 异常

java - 签名的小程序不显示发布者信息

java - 无法加载库 'gsdll32'

Java:连接到数据库以获取数据

java - 如何为 Web 应用程序配置 apache http 客户端 v3.0(多线程)

Silverlight 数据访问 - 如何在服务器上保持繁琐的工作