云计算环境下的 JVM 虚拟化特性初探以及云计算基础
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
云计算环境下的JVM 虚拟化特性初探
JSR121/JSR284 简介
李三红, 高级软件工程师, IBM
简介:云计算的概念是Google 提出的。从用户的角度理解,云计算强调的是IT 服务的交付和使用模式。在云计算环境下,这些IT 服务通过网络( 通常是internet) 以按需(On Demand)、易扩展(Extensibility) 的方式获得。按照云计算平台提供的服务种类,划分出了云计算平台的三层架构,即:Infrastructure as a Service(IaaS),Platform as a Service (PaaS), 以及Software as a Service (SaaS)。IaaS 的代表如亚马逊的Amazon Web services(AWS),PaaS 的代表如Google App Engine(GAE),以及SaaS 的代表如IBM Lotus Live。本文将在介绍这些典型的云计算环境基础上,围绕着云计算的两个重要的主题:多租户和资源管理,展开我们的讨论,讨论的重点涉及将来的Java 平台会为云计算提供什么样的基础支持。
标记本文!
发布日期: 2011 年10 月12 日
级别:中级
访问情况: 433 次浏览
目前对于到底什么是云计算,什么样的平台属于云计算平台,等等围绕云计算相关的问题,不同的软硬件厂商对此都有自己不同的理解,有着自己不同的定义。他们所提供的云计算平台也是千差万别。谈到云计算,大家总会联想到这些方面的东西:比如说高伸缩性(High Scalability) ,成本节约(Cost Saving),按需使用(Use On Demand), 等等。我们姑且不论云计算带来的这些纷繁多样的种种概念,如果仅仅从技术角度来讲,云计算本身并不是一个什么新奇的概念,可以理解为一种新型的IT 服务交付使用方式,而传统的技术比如虚拟化、集群、网格等等都可以用来作为云计算平台的支撑技术。更详尽的有关云计算概念的介绍,请参考Wikipedia 描述。
云计算平台架构
一般来讲,云计算平台被解释为如下的架构,图 1 所示。
图 1. 云计算平台架构.
最下的一层是IaaS,提供CPU,网络,存储等基础硬件的云服务。在IaaS 这一层,著名的云计算产品有Amazon 的S3(Simple Storage Service),提供给用户云存储服务。
再上一层是PaaS,提供类似于操作系统层次的服务与管理,比如Google GAE,你可以把自己写Java 应用( 或者是Python) 丢在Google 的GAE 里运行,GAE 就像一个”云”操作系统,对你而言,不用关心你的程序在那台
机器上运行。
最后一层是SaaS,就是我们所熟悉的软件即服务。事实上SaaS 的概念的出现要早于云计算,只不过云计算的出现让原来的SaaS 找到了自己更加合理的位置。本质上,SaaS 的理念是:有别的传统的许可证付费方式( 比如购买Windows Office),SaaS 强调按需使用付费。SaaS 著名的产品很多,比如IBM 的LotusLive, 等。
多租户(Multi-Tenant)
多租户的概念是伴随云计算而出现的,在这里有必要介绍一下,我们后面的讨论很大量涉及这个概念。
多租户是一个软件架构方面的概念,指的是一个软件实例(Application Instance) 可以供多个组织(Organization 或者称为Tenant) 使用。这里可以理解为应用程序的虚拟化,也即:多个租户共同使用同一个软件实例,但是每一个租户在数据集,配置等方面有自己的虚拟划分。实际上,在某种程度上,基于B/S 架构的应用程序比如J2EE 应用本身就是多租户性质的,因为大家都是使用浏览器来访问同一份部署在Application Server 上的软件实例。这里之所以说是”某种程度”,是因为对于我们谈到的数据集按租户虚拟划分,现实的J2EE 应用并没有支持。这个东西本文在后面会详细谈到。
接下来的章节,将以S3 和GAE 为例子,围绕本文讨论的主题:多租户和资源管理,简单介绍一下在这些典型的云计算平台上,多租户是怎么样进行部署的,以及在这些平台上的资源是如何被管理的。
回页首
多租户及资源管理在S3 的支持
Amazon S3 向用户提供的在线的(基于Internet) 云存储服务。用户可以在S3 上存储任何数据,这些数据可以是私有的亦或是可以被公共访问的。Amazon S3 支持Web 浏览器或者BitTorrent 来访问这些数据。一般来讲,用户使用S3:
l作为Backup server:存储你的私有数据到S3 上去,这样你就不需要自己购买维护自己的备份磁盘,你只是付费从Amazon 租赁磁盘空间。
l作为Data host: 存储数据到S3 上,并且其他人有访问这些数据的权限。这里,你付费的对象不是传统意义上的ISP,而是Amazon。
S3 存储涉及两个核心的概念:S3 bucket 和S3 object。S3 object 是对存在于Amazon S3 上内容的抽象,其包括两方面的内容:数据和元数据,数据指的是你存储的真正的内容,比如一份PDF 文档,一个HTML 文件等。而元数据是对该数据的描述,比如可以用于指定当前存放的内容的Content-Type 是text/html。每一个S3 object 有一个唯一的Key 来标志。S3 bucket 是存放S3 object 的容器。如果用个类比的话,S3 bucket 相当于于磁盘上的文件系统,而S3 Object 则是这个文件系统中的一个文件。
我们用一个简单的例子来看,在S3 上多租户是怎么做出来的?
假如想利用S3 存储 web 站点,首先需要创建名为””的bucket,然后在这个bucket 里创建诸如:键值为“”( 空串),”catalog”, “catalog/929339”的objects,这些objects 对应的URL 分别为: “/”,“/catalog/”,“/catalog/929339”,而object 的值就是相应的HTML 页面,元数据Content-Type 被设置为text/html(相应于标准的http 定义)。
如果多租户的角度来看,我们可以把S3 看作是在线的存储服务器,各个租户可以把自己的信息存储在S3 上,比