(整理翻译By Jim Ma)
JBoss7项目lead Jason Green,最近在他的blog
上,回答了这个问题. 以下是这篇blog的译文:
简单的回答就是我们用Ahmdahl法则(高效并行)而不是Moore定律(等待硬件能有更高的时钟频率)来设计JBoss7. 目前几乎每台台式机,笔记本和服务器都至少有两个CPU核心,而且多核的趋势还在继续。 CPU 时钟频率竞争的时代其实已经终结。所以软件也必须要适应这一趋势,充分利用硬件的计算能力。
JBoss AS进行了一次重大的改变来获得这一关键的演进(evolution).我们重写了AS7,使得它的整个架构是一个全新的,高性能的和可管理的。在令人惊谈的工程师的努力下,我们从在github上一个很小的原型,在一年多的时间里实现了今天看到的具有巨大工作量的遵循Java EE Web Profile标准的J2EE服务器(更不用说我们在这期间发布了AS6,使得JBoss的用户可以早点得到关于EE6的新特性,新技术)。
在开始详细的解释以前,请允许我给出一些背景知识。应用服务器的核心问题是管理服务(service).在现代的应用服务器中几乎所有的部件都有生命周期,那就意味着在特定的时间点上,这个部件必须被启动,在以后的时间点,它必须被停止。 我们将所有具有生命周期的对象都看作是一个service.另外一个service重要的属性是,service和service的之间的依赖关系会影响到相应service的生命周期。举个例子,servlet的service依赖于web server.另外,如果这个sevlet使用到其他的资源,比如数据库连接或者是EJB,那么它也依赖于这些资源,这些依赖的资源可用以后自己才能启动。 但一个应用服务器启动或者部署时,它必须保证它能够按照正确的顺序将各种service启动。进一步,如果任何服务由于某种原因停止了,它必须能停止所有依赖于这个service的其他sevice(以相对于启动相反的顺寻停止).这在单线程的环境下是一个简单的问题。
但JBoss AS7实在并行的启动和部署这些服务。这个复杂的问题通过我们全新的服务容器解决: JBoss Modula Service Container. MSC是一个高级的并行状态机。它在运行中分析服务之间的依赖关系,并且在同一时间尽可能多的启动服务,但同时又遵循服务间的依赖关系。这就意味着不仅能够快速启动,而且能够并行的进行部署。
除了并行的service,JBoss AS7还有类模块化和并行的类加载技术。通过将类划分到恰当的类模块中,应用服务器可以自然地优化访问模式,仅仅查找一个点,就可以获得所需要的类。另外,由于限制了类模块之间的可见性,查找就没有没有那么大的开销。对于JBoss Modules, 类模块解析和查找的时间复杂度是O(1).所有的这些操作都有很高的并行性,甚至大部分的类定义也是并行的。
AS7对部署的处理也是高效的。一个主要的优化是我们通过快速扫描部分class来对annotation信息进行索引。为了取得更好的效率,我们允许模块预先生成空间效率指数(space efficient index)来更快的加载。另外一个部署时的优化,是我们谨慎的缓冲和再使用relection data,因为JVM在这方面不是很有效率。
最后,另一个重要的原因我想强调的是我们已经并且会继续会守护CPU和内存在启动和部署方面的使用情况(尽可能的少占用内存和CPU,做到尽可能的高效)。这就是在设计阶段就作出的好决定。一个有趣的例子是我们不再使用JAXB(或者其他内省机制驱动的绑定器)来解析只读一次的配置文件。JAXB或者其他采用内省机制的绑定器带来的是几乎用和真正做实际解析工作一样或者更到时间来处理如何解析。所有的这些意味着: 在AS5和AS6里处理XML的时间都比AS7的启动时间要长。
希望这些内容能够更好的从大的方面理解AS7如何获得高效性得以快速启动,为什么JBoss7与过去有很大的不同。这篇博客只是一个开始,继续关注我的下一个blog,我将讨论Jboss7的roadmap.
分享到:
相关推荐
4. 更快的部署:JBoss AS7支持热部署,可以快速地更新应用程序而无需重启服务器。 5. 集成了CLI和JMX:提供了命令行接口(CLI)和Java Management Extensions(JMX)来方便管理和监控服务器。 二、JBoss AS7安装与...
### JBoss AS7 文档概览 JBoss AS7(Application Server 7)是JBoss社区推出的一款开源应用服务器,其文档提供了全面且详细的指南、教程及资源介绍,旨在帮助开发者和管理员更好地理解和掌握JBoss AS7的各项功能与...
JBoss AS 7(Application Server 7)是一款功能强大且开放源代码的应用服务器,为开发者提供了高效稳定的开发平台,支持多种高级特性,包括EJB(Enterprise JavaBeans)、JPA(Java Persistence API)、CDI...
### JBoss AS 7 简介与特点 JBoss AS 7(Application Server 7)是JBoss系列中的一个重要版本,它标志着JBoss AS在技术架构上的一次重大革新。本文将详细介绍JBoss AS 7的历史背景、设计初衷、核心技术和内部结构,...
[Packt Publishing] JBoss AS 7 配置部署管理教程 (英文版) [Packt Publishing] JBoss AS 7 Configuration, Deployment and Administration (E-Book) ☆ 出版信息:☆ [作者信息] Francesco Marchioni [出版机构...
JBoss AS 7 是一款开源的应用服务器,由 Red Hat 公司开发,它提供了一个高效且灵活的平台来运行Java应用程序。在这个版本中,JBoss 引入了命令行接口 (CLI) 作为管理和部署应用的主要工具,以提高管理效率和自动化...
【JBoss AS7 性能调优】 JBoss Application Server 7 (JBoss AS7) 是一款开源的应用服务器,以其高效能和快速启动而受到赞誉。然而,为了确保最佳性能,对服务器进行适当的配置和调优至关重要。大约80%的应用性能取...
1. **隐式模块依赖的概念**: 隐式模块依赖指的是 JBoss AS7 自动为部署添加的一些模块依赖,这些依赖通常是为了满足部署中某些组件的需求而添加的。 2. **隐式模块依赖的添加时机**: 当部署应用程序时,如果检测到...
**JBoss AS 5(Application Server 5)**是JBoss组织推出的一款开源应用服务器,它为Java应用程序提供了强大的运行环境。JBoss AS 5在企业级应用开发领域具有举足轻重的地位,其主要特点包括: - **高可用性**:...
- **为什么JBoss AS7这么快**:文中提出的问题暗示了AS7在性能上有了显著的提升。对于管理员来说,了解性能提升的原因有助于更好地优化应用和资源利用。 - **域的概念**:域是JBoss AS7引入的一种新的管理模式。域与...
文章首先介绍了使用 Nginx 1.2.1 和 JBOSS AS 7 做为应用服务器的理由,然后详细介绍了使用 Nginx 1.2.1 + JBOSS AS 7(standalone 模式)实现负载均衡的配置过程。 在负载均衡方面,文章首先介绍了 JBOSS 官方文档...
2. 为什么JBoss AS7 这么快 8 3. JBoss AS7中的新概念-域 10 3.1. 域(Domain)的概念及其与群集(Cluster)的区别 10 3.2. 实验 11 1.1.1. 准备工作 11 1.1.2. 配置 12 3.2.1.1. Master上面的配置 14 3.2.1.1.1. ...
[Packt Publishing] JBoss AS 7 开发教程 (英文版) [Packt Publishing] JBoss AS 7 Development (E-Book) ☆ 出版信息:☆ [作者信息] Francesco Marchioni [出版机构] Packt Publishing [出版日期] 2013年06月...
Windows 环境下 JBoss AS 7 配置 HTTPS 在 Windows 环境下,配置 JBoss AS 7 的 HTTPS 需要按照特定的步骤进行。下面将详细介绍配置 HTTPS 的过程。 生成服务器端证书文件 首先,需要使用 JDK 自带的工具制作 ...
### JBoss AS7 管理指南核心知识点详解 #### 一、目标受众与预备知识 **1.1 目标受众** 本指南主要面向希望深入掌握JBoss AS7.0管理技能的技术人员,包括系统管理员、开发人员及技术支持工程师等。 **1.2 预备...
此外,手册还提到了JBoss AS7的管理API,它为开发者提供了一种程序化的方式来管理和控制JBoss服务器,非常适合开发自动化运维工具。 手册的作者Francesco Marchioni是一位拥有Sun认证的企业架构师,他的工作经验...