微信号:infoqchina

介绍:有内容的技术社区媒体

多租户JVM技术前瞻

2013-10-15 18:43 InfoQ

IBM多租户JVM(Multitenant JVM)目前随着IBM JAVA 8 beta版已经发布。通过在一个多租户JVM上运行多个应用程序,云系统可以加速应用系统的启动时间、减少应用系统内存消耗。主要开发者Graeme Johnson和Michael Dawson撰文介绍了多租户云系统JVM背后的技术,并讨论了主要成本以及其带来的收益。


文章首先介绍了多租户JVM诞生的背景:


对于运行系统、提供服务所需的基础设施,云供应商必须权衡其成本消耗及其可带来的收益。这种利弊权衡迫使供应商寻找多种系统架构。云供应商目前可从无共享架构到多用户共享架构范围内进行选择。无共享架构中,供应商提供面向单一用户的软件、硬件及应用程序。多用户共享架构中,多个用户共同使用供应商提供的同一款应用软件,并共享底层软件、硬件。


选择框架主要需要权衡密集度(density) 与隔离性(isolation)。密集度指特定软硬件可提供的系统和服务的数目。共享度越高,密集度就越高。密集度越高,供应商成本越低。同时,共享度的增高将降低租户(tenants,指交付的单个系统或服务)间的隔离性。隔离性描述了单个租户对活动与其他租户数据的影响程度。


对于基于JAVA的租户,可按是否共享JVM对框架进行划分。任何共享顶层应用的框架一定共享了JVM。共享JVM既可以节省内存又可以节省处理时间。但是在传统的JVM技术中,共享JVM将导致基础架构层失去隔离性,从而要求顶层应用提高自身隔离性以满足架构需求。本文介绍的多用户共享架构已在IBM最新发布的JAVA 8测试版中进行实验,并且成功。这个架构具有传统共享JVM架构优点,此外还表现出优于传统共享JVM框架的隔离性。


使用多用户共享JVM最大的优点是部署可以避免多个标准JVM相关的内存消耗。这种内存消耗主要来自:


Java堆消耗成百上千兆的内存。而且即使对象是相同的,堆对象也不能在JVM之间共享。此外,JVM还倾向于使用所有分配给他们的堆,即使它们只在在很短的时间才会用到峰值量。


因为生成的代码是私有的并且消耗内存,所以JIT编译器需要占用几十兆的内存。代码的生成也需要消耗大量的处理器时间,而这会使应用运行变慢。


类的内部结构占用内存(很多组成部分还会存在所有应用中,如String,Hashtable)。而且这些结构在每一个JVM中都会有一个实例。


每个JVM会给每个核分配一个默认的垃圾收集辅助线程,同时每个JVM还有多个编译线程。垃圾收集活动和编译活动可以一个或多个的JVM中同时出现,但是考虑到JVM会竞争有限的处理器时间,这种现象不是非常理想。


多租户JVM可以减少内存占用、降低处理成本,除此之外,相对于传统的在单个JVM上运行多个应用的方式,多租户JVM还可以提供了更好的隔离性。


另外一个益处来自启动时间的缩短:当第一个租户启动后,后续启动的应用将需要少于第一个的启动时间,因为JVM已经在运行了。启动时间的减少有利于运行周期短的程序的使用。而且我们在脚本处理时经常会用到这类程序。


当然,鱼和熊掌不可兼得。多租户JVM的缺点包括:


相比于多个应用运行在单个隔离的JVM这种传统方式,多租户JVM的主要弊端来自于隔离性的降低。例如,多租户JVM中一个原生崩溃(native crash)可以影响到所有租户。


为了执行JVM工作我们必须要执行多租户扩展(multitenancy extensions),这会对性能带来不好的影响。然后,这影响会随着租户数量的增加而下降——因为通过在同一个系统运行多个JVM我们可以避免处理器和内存的浪费。


***********************************

本文来自InfoQ微信公众账号:infoqchina

1、回复“今日新闻”,查看今天更新的新闻;

2、回复“今日英文”,查看今天英文站的更新;

3、回复“文章 +关键词”,搜索关键词相关内容;

4、回复“QCon”,了解QCon大会相关信息;

5、回复“活动”,了解最近InfoQ组织的线下沙龙;

6、回复“架构师”,获取《架构师》下载地址;

7、回复“投稿”,了解投稿和加入编辑团队的流程。

***********************************

 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 Cell:挨冻了,肠道菌会帮宿主减肥? 15岁被FBI带走,骗扎克伯格退学创业,遭死亡威胁,他三次改变世界 腾讯新闻React同构直出优化实践 思考,快与慢(P71) 性能、UX、跨平台:移动Web应用UI框架大比拼