IBM Multitenant JVM 最近是作為 IBM Java™ 8 beta 的一部分提供的。通過在單一的多租戶 JVM 中運行多個應(yīng)用程序,云系統(tǒng)可以加快應(yīng)用程序的啟動時間,并減少其內(nèi)存占用。本文達內(nèi)西安Java培訓(xùn)(www.xatarena.cn)講師將介紹多租戶云 JVM 背后的技術(shù),并討論主要成本和收益。
云供應(yīng)商必須權(quán)衡運行系統(tǒng)和提供服務(wù)所需的基礎(chǔ)架構(gòu)的成本與供應(yīng)商所獲得的效益。這些成本效益考慮因素促使供應(yīng)商考慮采用多種架構(gòu)。他們的選擇范圍涵蓋從無共享 架構(gòu)到共享多租戶 架構(gòu)的一系列架構(gòu)。在無共享架構(gòu)中,供應(yīng)商提供完全專用于每個客戶的硬件、軟件和應(yīng)用程序。在共享多租戶的架構(gòu)中,可以使用單個應(yīng)用程序支持多個客戶的應(yīng)用程序,而且所有底層的硬件和軟件都是共享的。
沿著這個架構(gòu)系列進行發(fā)展時的主要權(quán)衡因素是隔離 和密度。密度是由一組特定的硬件和軟件交付的系統(tǒng)和服務(wù)的數(shù)量。共享的資源越多,密度就越高。密度越高,供應(yīng)商的成本也就越低。同時,更多共享可以降低 租戶 之間的隔離水平,這里的租戶指的是所提供的單獨系統(tǒng)或服務(wù)。隔離是一個租戶對其他租戶的活動和數(shù)據(jù)的影響程度。
對于基于 Java 的租戶,在架構(gòu)系列中的定位包括共享或不共享 JVM。在共享頂層應(yīng)用程序的任何架構(gòu)中,必須共享 JVM。共享 JVM 既能節(jié)省內(nèi)存,又能節(jié)省處理器時間。但是,如果使用傳統(tǒng)的 JVM 技術(shù),那么共享 JVM 通常會從基礎(chǔ)架構(gòu)層中刪除所有剩余的隔離,要求頂層應(yīng)用程序自身提供這種隔離。
Java多租戶 JVM 的成本和效益
達內(nèi)西安Java培訓(xùn)老師表示,使用多租戶 JVM 的主要優(yōu)勢是,可以通過部署來避免通常與使用多個標準 JVM 有關(guān)的內(nèi)存消耗。此開銷是由以下幾個原因造成的:
Java 堆消耗數(shù)百 MB 的內(nèi)存。即使對象是相同的,JVM 之間也無法共享堆對象。此外,JVM 往往會使用分配給它們的所有堆,即使它們只在很短的時間內(nèi)需要峰值量。
即時(JIT)編譯器占用了幾十 MB 的內(nèi)存,因為生成的代碼是私有的,所以會占用內(nèi)存。生成代碼也需要大量的處理器周期,這會從應(yīng)用程序中竊取時間。
類的內(nèi)部構(gòu)件(其中的許多構(gòu)件,比如 String 和 Hashtable,都存在于所有應(yīng)用程序中)占用了內(nèi)存。每個 JVM 都存在所有這些構(gòu)件的一個實例。 |
 |
|