IBM Multitenant JVM 最近是作为 IBM Java™ 8 beta 的一部分提供的。通过在单一的多租户 JVM 中运行多个应用程序,云系统可以加快应用程序的启动时间,并减少其内存占用。本文达内西安Java培训(www.xatarena.cn)讲师将介绍多租户云 JVM 背后的技术,并讨论主要成本和收益。
云供应商必须权衡运行系统和提供服务所需的基础架构的成本与供应商所获得的效益。这些成本效益考虑因素促使供应商考虑采用多种架构。他们的选择范围涵盖从无共享 架构到共享多租户 架构的一系列架构。在无共享架构中,供应商提供完全专用于每个客户的硬件、软件和应用程序。在共享多租户的架构中,可以使用单个应用程序支持多个客户的应用程序,而且所有底层的硬件和软件都是共享的。
沿着这个架构系列进行发展时的主要权衡因素是隔离 和密度。密度是由一组特定的硬件和软件交付的系统和服务的数量。共享的资源越多,密度就越高。密度越高,供应商的成本也就越低。同时,更多共享可以降低 租户 之间的隔离水平,这里的租户指的是所提供的单独系统或服务。隔离是一个租户对其他租户的活动和数据的影响程度。
对于基于 Java 的租户,在架构系列中的定位包括共享或不共享 JVM。在共享顶层应用程序的任何架构中,必须共享 JVM。共享 JVM 既能节省内存,又能节省处理器时间。但是,如果使用传统的 JVM 技术,那么共享 JVM 通常会从基础架构层中删除所有剩余的隔离,要求顶层应用程序自身提供这种隔离。
Java多租户 JVM 的成本和效益
达内西安Java培训老师表示,使用多租户 JVM 的主要优势是,可以通过部署来避免通常与使用多个标准 JVM 有关的内存消耗。此开销是由以下几个原因造成的:
Java 堆消耗数百 MB 的内存。即使对象是相同的,JVM 之间也无法共享堆对象。此外,JVM 往往会使用分配给它们的所有堆,即使它们只在很短的时间内需要峰值量。
即时(JIT)编译器占用了几十 MB 的内存,因为生成的代码是私有的,所以会占用内存。生成代码也需要大量的处理器周期,这会从应用程序中窃取时间。
类的内部构件(其中的许多构件,比如 String 和 Hashtable,都存在于所有应用程序中)占用了内存。每个 JVM 都存在所有这些构件的一个实例。 |
|