为什么 Java EE 是可扩展的?
我从各种来源听说Java EE是高度可扩展的,但对我来说,你似乎永远无法将Java EE应用程序扩展到谷歌搜索引擎或任何其他大型网站的级别。
我想听听为什么它如此具有可扩展性的技术原因。
我从各种来源听说Java EE是高度可扩展的,但对我来说,你似乎永远无法将Java EE应用程序扩展到谷歌搜索引擎或任何其他大型网站的级别。
我想听听为什么它如此具有可扩展性的技术原因。
Java EE 被认为是可扩展的,因为如果您考虑 EJB 体系结构并在适当的应用程序服务器上运行,那么它包括透明集群并允许使用 EJB 的多个实例来为请求提供服务的功能。
如果你在普通的java中手动管理事情,你必须自己弄清楚所有这些,例如通过打开端口,同步状态等。
我不确定你能不能把谷歌定义为一个“大型网站”。这就像将互联网比作您的办公室局域网一样。Java EE并不是要扩展到全球层面,这就是为什么像亚马逊和谷歌这样的网站使用自己的技术(例如,使用MapReduce)。
有许多论文讨论了Java EE可扩展性的效率。例如,这个
使Java EE可伸缩的就是使任何东西都可伸缩的:关注点分离。随着处理或 IO 需求的增加,您可以添加新硬件并以半透明的方式重新分配负载(对应用大部分是透明的,对配置猴子来说显然不那么透明),因为分离的、孤立的关注点不知道或不关心它们是位于相同的物理硬件上还是在群集中的不同处理器上。
您可以使用任何语言或执行平台制作可扩展的应用程序。(是的,即使是古代 System 370 大型机上的 COBOL。像Java EE这样的应用程序框架(当然还有其他框架——Java EE在这方面并不是独一无二的!)给你的,是能够通过为你做很多繁重的工作来轻松(相对而言)做到这一点。
当我的 Web 应用程序使用 EJB 来执行某些业务逻辑时,该 EJB 可能位于同一 CPU 内核上,位于同一 CPU 中的不同内核上,位于完全不同的 CPU 上,或者在极端情况下,甚至可能位于整个星球上。我不知道,在大多数情况下,只要有表演,我就不在乎。同样,当我在消息总线上发送消息进行处理时,我不知道也不在乎该消息的去向,哪个组件进行处理以及该处理发生的位置,只要性能符合我的需求。这就是配置猴子要解决的全部问题。该技术允许这样做,并且工具已经到位,可以评估随着系统尺寸的扩大,哪些部分必须去哪里才能获得可接受的性能。
现在,当我尝试用手滚动所有这些时,我会立即开始解决问题。如果我没有提前考虑所有的代理、调度和分发等,那么当我的应用程序扩展到单台计算机的处理范围之外时,我现在在将一些应用程序转移到另一个盒子时进行了重大的重写。然后,每当我的能力增长时,我都必须一次又一次地这样做。
如果我确实提前考虑了所有这些,我将为每个应用程序编写大量样板代码,这些代码对所有相同的事情进行了微小的更改。我可以以可扩展的方式编写代码,但我是否想每次都这样做。该死的。时间。我编写应用?
因此,Java EE(和其他框架)带来的是预先编写的样板,用于构建可扩展应用程序的常见要求。当然,将我的应用程序编写到这些应用程序并不能保证它们是可扩展的,但是这些框架使编写所述可扩展应用程序变得更加容易。