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

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

2019-02-26    來(lái)源:多智時(shí)代

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用

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

一般來(lái)講,云計(jì)算平臺(tái)被解釋為如下的架構(gòu),圖1所示。

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

圖 1. 云計(jì)算平臺(tái)架構(gòu)

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

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

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

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

多租戶是一個(gè)軟件架構(gòu)方面的概念,指的是一個(gè)軟件實(shí)例(Application Instance)可以供多個(gè)組織(Organization或者稱(chēng)為T(mén)enant)使用。這里可以理解為應(yīng)用程序的虛擬化,也即:多個(gè)租戶共同使用同一個(gè)軟件實(shí)例,但是每一個(gè)租戶在數(shù)據(jù)集,配置等方面有自己的虛擬劃分。實(shí)際上,在某種程度上,基于B/S架構(gòu)的應(yīng)用程序比如J2EE應(yīng)用本身就是多租戶性質(zhì)的,因?yàn)榇蠹叶际鞘褂脼g覽器來(lái)訪問(wèn)同一份部署在Application Server上的軟件實(shí)例。這里之所以說(shuō)是”某種程度”,是因?yàn)閷?duì)于我們談到的數(shù)據(jù)集按租戶虛擬劃分,現(xiàn)實(shí)的 J2EE 應(yīng)用并沒(méi)有支持。這個(gè)東西本文在后面會(huì)詳細(xì)談到。

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

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

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

我們用一個(gè)簡(jiǎn)單的例子來(lái)看,在S3上多租戶是怎么做出來(lái)的?

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

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

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

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

圖 2. S3 存儲(chǔ)價(jià)格表

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

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

而且,部署在GAE上的應(yīng)用實(shí)例,如果你想把它作為一個(gè)SaaS應(yīng)用的話,本身也可以實(shí)現(xiàn)多租戶,也就是說(shuō):當(dāng)你的一個(gè)部署在GAE上的J2EE應(yīng)用需要被不同的租戶使用時(shí),可以使用Google提供的Namespace API將其虛擬化為多個(gè)應(yīng)用實(shí)例。比如:該SaaS應(yīng)用的不同的租戶使用了不同的子域名(subdomain),tenantA 的子域名是tenantA.example.com,tenantB的子域名是tenantB.example.com等等,你可以使用下面的代碼把不同的租戶劃歸在不同的命名空間里,它們可以在共享同一個(gè)Datastore實(shí)例的基礎(chǔ)上按照不同的租戶實(shí)現(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的技術(shù)。也就是說(shuō),你在Filter設(shè)置的Namespace Manager,其生存期 ( 或者叫做有效范圍 ) 是存在于單個(gè)HTTP Request生命周期內(nèi) ( 即:當(dāng)前線程服務(wù)該請(qǐng)求的期間內(nèi) ),而不是租戶登錄后的整個(gè)Session周期。

類(lèi)似于Amazon S3,GAE也提供了資源的管理計(jì)費(fèi)功能,如圖3所示。

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

圖 3. GAE資源管理

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

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

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

在云計(jì)算大行其道的今天,我們回過(guò)頭再來(lái)審視一下Barcelona項(xiàng)目,MVM所有解決的兩個(gè)目標(biāo):資源的共享與管理,在云計(jì)算的環(huán)境下顯得愈加的重要。正如我們前面所講的那樣,作為云計(jì)算環(huán)境兩個(gè)必備的兩個(gè)特性,多租戶和資源管理,前者要求最大化的共享軟件實(shí)例,后者要求我們?cè)诠蚕淼幕A(chǔ)上如何對(duì)資源的使用進(jìn)行隔離與控制。這也正和MVM的目標(biāo)不謀而合。由MVM源生出了下面的兩個(gè)JSR:121和284,這也應(yīng)該是Java平臺(tái)走向虛擬化的所必需的步驟。

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

標(biāo)簽: Google isp 大數(shù)據(jù) 代碼 服務(wù)器 權(quán)限 什么是云計(jì)算 數(shù)據(jù)庫(kù) 網(wǎng)絡(luò) 應(yīng)用服務(wù)器 域名 云服務(wù) 云計(jì)算 云計(jì)算產(chǎn)品 云計(jì)算平臺(tái) 子域名

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

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

下一篇:云計(jì)算推動(dòng)的變革:核心交換機(jī)這幾年