中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

云計算環(huán)境下的JVM虛擬化特性初探

2019-02-26    來源:多智時代

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

目前對于到底什么是云計算,什么樣的平臺屬于云計算平臺,等等圍繞云計算相關的問題,不同的軟硬件廠商對此都有自己不同的理解,有著自己不同的定義。他們所提供的云計算平臺也是千差萬別。談到云計算,大家總會聯(lián)想到這些方面的東西:比如說高伸縮性(High Scalability)、成本節(jié)約(Cost Saving)、按需使用(Use On Demand)等等。我們姑且不論云計算帶來的這些紛繁多樣的種種概念,如果僅僅從技術角度來講,云計算本身并不是一個什么新奇的概念,可以理解為一種新型的IT服務交付使用方式,而傳統(tǒng)的技術比如虛擬化、集群、網(wǎng)格等等都可以用來作為云計算平臺的支撐技術。更詳盡的有關云計算概念的介紹,請參考Wikipedia描述。

一般來講,云計算平臺被解釋為如下的架構,圖1所示。

云計算環(huán)境下的JVM虛擬化特性初探

圖 1. 云計算平臺架構

最下的一層是IaaS、提供CPU、網(wǎng)絡,存儲等基礎硬件的云服務。在IaaS這一層,著名的云計算產(chǎn)品有Amazon的S3(Simple Storage Service), 提供給用戶云存儲服務。

再上一層是PaaS,提供類似于操作系統(tǒng)層次的服務與管理 ,比如Google GAE,你可以把自己寫 Java 應用(或者是Python)丟在Google的GAE里運行,GAE就像一個”云”操作系統(tǒng),對你而言,不用關心你的程序在那臺機器上運行。

最后一層是SaaS,就是我們所熟悉的軟件即服務。事實上SaaS的概念的出現(xiàn)要早于云計算,只不過云計算的出現(xiàn)讓原來的SaaS找到了自己更加合理的位置。本質(zhì)上,SaaS的理念是:有別的傳統(tǒng)的許可證付費方式(比如購買Windows Office),SaaS強調(diào)按需使用付費。SaaS著名的產(chǎn)品很多,比如IBM的LotusLive、Salesforce.com等。

多租戶的概念是伴隨云計算而出現(xiàn)的,在這里有必要介紹一下,我們后面的討論很大量涉及這個概念。

多租戶是一個軟件架構方面的概念,指的是一個軟件實例(Application Instance)可以供多個組織(Organization或者稱為Tenant)使用。這里可以理解為應用程序的虛擬化,也即:多個租戶共同使用同一個軟件實例,但是每一個租戶在數(shù)據(jù)集,配置等方面有自己的虛擬劃分。實際上,在某種程度上,基于B/S架構的應用程序比如J2EE應用本身就是多租戶性質(zhì)的,因為大家都是使用瀏覽器來訪問同一份部署在Application Server上的軟件實例。這里之所以說是”某種程度”,是因為對于我們談到的數(shù)據(jù)集按租戶虛擬劃分,現(xiàn)實的 J2EE 應用并沒有支持。這個東西本文在后面會詳細談到。

接下來的章節(jié),將以S3和GAE為例子,圍繞本文討論的主題:多租戶和資源管理, 簡單介紹一下在這些典型的云計算平臺上,多租戶是怎么樣進行部署的,以及在這些平臺上的資源是如何被管理的。

Amazon S3向用戶提供的在線的(基于Internet)云存儲服務。用戶可以在S3上存儲任何數(shù)據(jù),這些數(shù)據(jù)可以是私有的亦或是可以被公共訪問的。Amazon S3 支持 Web 瀏覽器或者BitTorrent來訪問這些數(shù)據(jù)。一般來講,用戶使用S3:

作為Backup server:存儲你的私有數(shù)據(jù)到S3上去,這樣你就不需要自己購買維護自己的備份磁盤,你只是付費從Amazon租賃磁盤空間。作為Data host: 存儲數(shù)據(jù)到S3上,并且其他人有訪問這些數(shù)據(jù)的權限。這里,你付費的對象不是傳統(tǒng)意義上的ISP,而是Amazon。 S3存儲涉及兩個核心的概念:S3 bucket和S3 object。S3 object是對存在于Amazon S3上內(nèi)容的抽象,其包括兩方面的內(nèi)容:數(shù)據(jù)和元數(shù)據(jù),數(shù)據(jù)指的是你存儲的真正的內(nèi)容,比如一份PDF文檔,一個HTML文件等。而元數(shù)據(jù)是對該數(shù)據(jù)的描述,比如可以用于指定當前存放的內(nèi)容的Content-Type是text/html。每一個S3 object有一個唯一的Key來標志。S3 bucket是存放S3 object的容器。如果用個類比的話,S3 bucket相當于于磁盤上的文件系統(tǒng),而S3 Object 則是這個文件系統(tǒng)中的一個文件。

我們用一個簡單的例子來看,在S3上多租戶是怎么做出來的?

假如想利用S3存儲example.com web站點,首先需要創(chuàng)建名為”example.com”的bucket,然后在這個bucket里創(chuàng)建諸如:鍵值為 “”( 空串 ),”catalog”、“catalog/929339”的objects,這些objects對應的URL分別為:“http://example.com/”,“http://example.com/catalog/”,“http://example.com/catalog/929339”,而object的值就是相應的 HTML 頁面,元數(shù)據(jù)Content-Type被設置為 text/html(相應于標準的http定義)。

如果多租戶的角度來看,我們可以把S3看作是在線的存儲服務器,各個租戶可以把自己的信息存儲在S3上,比如 : 甲租戶可以把 http://tenantA.com網(wǎng)站放在S3上,乙租戶可以存儲的是http://tenantB.com網(wǎng)站,各個租戶共享S3的使用。

除了多租戶支持,S3還有資源的使用管理,計費等功能,如圖2所示:

云計算環(huán)境下的JVM虛擬化特性初探

圖 2. S3 存儲價格表

較之于IaaS、Google App Engine提供了更多的系統(tǒng)抽象能力。如果做一個比喻的話,IaaS相當于你有了一臺擁有存儲、網(wǎng)絡、CPU等計算資源的計算機,而PaaS的Google App Engine則是裝在這臺計算機上的操作系統(tǒng)。設想一下,如果你開發(fā)一個傳統(tǒng)意義上的J2EE應用,你要關心的事情除了應用程序本身之外,還有:要部署在什么樣的應用服務器上,使用什么樣的數(shù)據(jù)庫,應用的可伸縮性(Scalability)等等。而有了GAE,這些東西你都不需要關心了,你只需要根據(jù)GAE規(guī)范開發(fā)J2EE應用,然后把它部署在GAE云里,GAE會幫助你管理除了你的應用程序本身的所有事情。

GAE本身就是多租戶的架構,即:來自不同租戶的、任何一個符合GAE規(guī)范J2EE都可以部署在GAE上。

而且,部署在GAE上的應用實例,如果你想把它作為一個SaaS應用的話,本身也可以實現(xiàn)多租戶,也就是說:當你的一個部署在GAE上的J2EE應用需要被不同的租戶使用時,可以使用Google提供的Namespace API將其虛擬化為多個應用實例。比如:該SaaS應用的不同的租戶使用了不同的子域名(subdomain),tenantA 的子域名是tenantA.example.com,tenantB的子域名是tenantB.example.com等等,你可以使用下面的代碼把不同的租戶劃歸在不同的命名空間里,它們可以在共享同一個Datastore實例的基礎上按照不同的租戶實現(xiàn)相互的隔離。

清單 1. GAE App Multitenancy

以下是引用片段:

//Filtertosetthenamespacebydifferentsubdomain.

publicclassNamespaceFilterimplementsjavax.servlet.Filter{

@Override

publicvoiddoFilter(ServletRequestreq,ServletResponseres,FilterChainchain)

throwsIOException,ServletException{

//Makesureset()isonlycalledifthecurrentnamespaceisnotalreadyset.

if(NamespaceManager.get()==null){

NamespaceManager.set(req.getServerName());

}

//Chainintothenextrequest.

chain.doFilter(req,res);

}

//…remainingFiltermethodsinit()anddestroy()

}

值得注意的是,GAE Namespace使用了Thread-local storage的技術。也就是說,你在Filter設置的Namespace Manager,其生存期 ( 或者叫做有效范圍 ) 是存在于單個HTTP Request生命周期內(nèi) ( 即:當前線程服務該請求的期間內(nèi) ),而不是租戶登錄后的整個Session周期。

類似于Amazon S3,GAE也提供了資源的管理計費功能,如圖3所示。

云計算環(huán)境下的JVM虛擬化特性初探

圖 3. GAE資源管理

寫到這里,總結一下:我們看到,無論是S3還是GAE,都對多租戶以及資源管理做了支持。 事實上,不只是S3和GAE,多租戶以及資源管理是任何一個云計算平臺都必須具備的一個核心特質(zhì)。

如何我們簡單的把S3和GAE看作是運行在Java平臺的上的應用程序 ( 底層運行的是 JRE ! ),那么我們可以說:S3和GAE都在Java Application這個層次上對這兩個需求做了它們自己的實現(xiàn)。進一步設想,如果我們要求底層的 JRE 本身就能對多租戶和資源管理提供支持,那么有理由相信,這些部署在JRE上的Java應用,利用底層JRE的這些支持,應該能更高效、簡潔、方便地來做這方面的工作。這也是本文接下來要談的Java平臺的兩個重要的JSR:JSR284和JSR121的原因。一個是Java平臺的資源管理支持,一個是Java平臺的多租戶支持。

早在云計算興起之前,Sun Lab就已經(jīng)開始于Java平臺的資源的共享與管理。比如:如果不借助操作系統(tǒng)的本地支持,我們沒辦法讓一個普通的Java應用程序受限于CPU的使用,受限于Disk IO或者網(wǎng)絡帶寬的使用等等。當我們在同一臺機器上運行多個JVM實例時,它們都是獨立的用戶進程,每個JVM的啟動都需要實例化自己一份獨立的JDK類庫,其結果是:JVM啟動時間(Startup)、內(nèi)容(Memory footprint)等都消耗在重復的JVM初始化上。我們要問的問題是:多個JVM可以最大化地共享JDK運行時嗎 ? 在共享的同時它們能夠互不影響嗎?這就是Sun發(fā)起B(yǎng)arcelona研究項目,Multi-Tasking Virtual Machine(即MVM)的主要原因。

在云計算大行其道的今天,我們回過頭再來審視一下Barcelona項目,MVM所有解決的兩個目標:資源的共享與管理,在云計算的環(huán)境下顯得愈加的重要。正如我們前面所講的那樣,作為云計算環(huán)境兩個必備的兩個特性,多租戶和資源管理,前者要求最大化的共享軟件實例,后者要求我們在共享的基礎上如何對資源的使用進行隔離與控制。這也正和MVM的目標不謀而合。由MVM源生出了下面的兩個JSR:121和284,這也應該是Java平臺走向虛擬化的所必需的步驟。

在不久的將來,云計算一定會徹底走入我們的生活,有興趣入行未來前沿產(chǎn)業(yè)的朋友,可以收藏云計算,及時獲取人工智能、大數(shù)據(jù)、云計算和物聯(lián)網(wǎng)的前沿資訊和基礎知識,讓我們一起攜手,引領人工智能的未來!

標簽: Google isp 大數(shù)據(jù) 代碼 服務器 權限 什么是云計算 數(shù)據(jù)庫 網(wǎng)絡 應用服務器 域名 云服務 云計算 云計算產(chǎn)品 云計算平臺 子域名

版權申明:本站文章部分自網(wǎng)絡,如有侵權,請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:Dropbox企業(yè)云服務更名:將支持單點登錄

下一篇:云計算推動的變革:核心交換機這幾年