您能否简单解释一下,由于EJB实现了什么可伸缩性,以及我将面临哪些问题,例如,如果我不将EJB用于大型应用程序
提前致谢。
答案 0 :(得分:2)
EJB不会为您提供任何特殊的可伸缩性奖励,并且不使用它们也不会受到惩罚。
一些“EJB是可扩展的”炒作来自对象池被视为性能助推器的日子。
EJB可以帮助您以两种方式编写有效的代码:
但如果没有EJB,上述两个目标都是可以实现的。
无论如何:你应该使用它们,因为它们确实使代码更好,更容易维护。这两种品质通常有助于构建可扩展的应用程序。
答案 1 :(得分:1)
由于EJB实现了可伸缩性,您能简单地解释一下吗
通过在集群中部署EJB来实现可伸缩性:http://docs.oracle.com/cd/A97688_16/generic.903/a97677/cluster.htm。简而言之:每个请求都将由群集中的一个服务器接收。然后,此服务器决定它是否自己处理请求,或将其转发到另一台服务器。哪个服务器将处理请求由一些可配置的算法决定,最简单的是循环(即第一个请求进入服务器1,第二个请求进入服务器2,依此类推)。
但是,根据我的经验,不在EJB级别上进行群集更容易,而是更高级别。这意味着,有一个(外部)负载均衡器接收所有请求并将它们转发到包含EJB的应用程序服务器(再次通过某些算法,如循环法)。在这种情况下,应用程序服务器不必彼此了解,这更容易配置。
但是,在某些情况下,可能需要EJB级别的群集,例如,如果您有有状态会话bean ,则必须支持会话故障转移(即,服务器当前正在崩溃时处理请求,会话必须移动到另一个服务器,以便用户不会注意到任何事情)。但这很少是必要的。
我将面临哪些问题,例如,如果我不使用EJB 大型应用。
我建议使用EJB或Spring作为大型应用程序的替代方案。这些框架负责处理您自己必须自己做的细节编程,如下所示
如果使用Spring,您甚至不必部署到成熟的应用程序服务器,而是可以使用简单的servlet容器。
答案 2 :(得分:0)
我认为这个问题是基于错误的前提。
您无法通过使用EJB或任何其他技术来“实现可伸缩性”。通过设计可伸缩性来实现可伸缩性;即避免瓶颈(各种瓶颈)并避免资源的低效使用。