摘要:云計算是未來的計算模式,其市場前景十分廣闊。云計算按提供的服務類別分為三類:IaaS、PaaS、SaaS。各種應用部署在PAAS上,并由PAAS提供自主管理。在對PAAS提供的編程模型做了分析后;接著分析了支持Java云應用的主流PAAS,并分析了它們各自的優(yōu)點和缺點;最后討論了Java云應用在GAE中的開發(fā)、運行和測試的方法。JVM和打包機制也保證了Java應用的相互隔離,提供了Java運用的安全保障。
關鍵詞:云計算;PAAS;SAAS;編程模型;Java;云應用
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2013)13-3074-04
云計算的研究與發(fā)展十分迅速,它有著十分廣闊的市場前景。而Java有著上千萬的用戶基礎和流行的應用。那么Java與云計算的結合勢必會有廣闊的前景。
1 云計算與分類
云計算[1]是由一系列相互聯(lián)系并且虛擬化的計算機組成的并行分布式系統(tǒng),是網(wǎng)格計算的發(fā)展,是基于互聯(lián)網(wǎng)的超級計算模式。作為一種新興的資源使用和交付模式,云計算正在迅速發(fā)展。按提供的服務類別云計算分為三類[2]:
IaaS(Infrastructure as a Service,基礎設施即服務),用戶通過互聯(lián)網(wǎng)可以按需獲得基礎設施服務,如數(shù)據(jù)存儲等硬件資源。代表產(chǎn)品如亞馬遜的AWS(Elastic Compute Cloud),IBM Blue Cloud、Vmware和HP CloudSystem等。
PaaS(Platform as a Service,平臺即服務)提供了基礎架構,PaaS供應商不但提供按需硬件和操作系統(tǒng)服務,而且還提供應用程序平臺和解決方案堆棧。PaaS 服務可將與應用程序部署關聯(lián)的大多數(shù) IT 管理方面自動化,包括資源配置、分段和測試、負載平衡、數(shù)據(jù)庫訪問以及訪問平臺庫。使程序員從配置部署等耗時的工作中解脫出來,只需要專注于軟件的開發(fā)。Google的App Engine、Mircosoft的Azure、Salesforce.com的Force.com都提供PAAS服務[3]。
隨著商業(yè)智能分析、社交網(wǎng)絡分析、在線推薦、數(shù)據(jù)挖掘、機器學習等應用的普及和深入,海量數(shù)據(jù)處理的應用領域越來越呈現(xiàn)出多樣化的趨勢。這些不同的問題領域適合采用不同的編程模型,不存在能解決所有數(shù)據(jù)密集型應用的通用編程模型。因此在通用編程模型的基礎上,又發(fā)展了很多高級編程模型。下面再介紹其中的幾種代表性模型。Google Sawzal典型任務是在成百或上千臺機器上并發(fā)操作上百萬條記錄;Flume.Java是一個建立在MapReduce之上的Java庫,適合由多個MapReduce作業(yè)拼接在一起的復雜計算場景使用;DryadLINQ是Microsoft的高級編程語言,它和LINQ相同的編程模型,并擴展了少量操作符和數(shù)據(jù)類型以適用于分布式計算;Pig Latin是Yahoo!研發(fā)的運行在其Pig系統(tǒng)上數(shù)據(jù)流語言[5]。
3 Java的云特征
TIOBE 2012年10月編程語言排行榜Java語言名列前茅,Java的用戶基礎達千萬,Java具有絕對優(yōu)勢的用戶基礎。那么,在迅速發(fā)展的云計算中,Java能適應嗎?Java實際上具有很多云特征[6],它們使云計算更簡單。
Java的分布式計算特征:Java分布式開發(fā)開發(fā)技術 Java RMI、Java CORBA。主要目的是透明地穿過硬件、程序語言和操作系統(tǒng),開發(fā)健壯的、可伸縮的、面向對象的分布式應用。
Java的并行計算特征:Java SE 5 中的鎖,原子量 并行容器,線程調度以及線程執(zhí)行基于Java的分布并行計算環(huán)境Java PVM(完成此項處理的計算機系統(tǒng)稱為并行計算機系統(tǒng),它是將多個處理器(幾個甚至上萬個)通過網(wǎng)絡連接以一定的方式有序地組織起來。
Java的網(wǎng)格計算特征:開源的Java網(wǎng)格計算框架 Java GridGain是一個開源的網(wǎng)格計算框架,專注于提供平行計算能力,能夠與JBoss和Spring相集成。通過利用大量異構計算機的未用資源(CPU周期和磁盤存儲),構建虛擬的計算機集群,為解決大規(guī)模的計算問題提供了一個模型。
Java的虛擬化技術特征:Java虛擬機(Java Virtual Machine)實現(xiàn)了Java的平臺無關性。,它是一個虛構出來的計算機,通過在實際的計算機上仿真模擬各種計算機功能來實現(xiàn)的。
Java的未來:Java8計劃增加模塊功能。模塊功能實現(xiàn)按需部署環(huán)境的規(guī)模。Java 8可能還有多租戶功能,即通過一個JVM,安全地運行多個應用程序的功能。Java9和10也計劃加入大數(shù)據(jù)、多語言的互操作性、云計算和移動。
4 支持Java 的主流PAAS支持程度比較
支持Java的PAAS都具有以下共同的功能[7]:上傳并部署Java的Web應用程序打包文件 WAR 、版本控制已部署的應用程序、測試并分段環(huán)境、在線訪問日志文件、自動監(jiān)控和使用報告。各個平臺有各自的優(yōu)缺點:
Amazon Elastic Beanstalk是亞馬遜構建的支持Java的PaaS云平臺,該平臺上可以運行在受托管的Tomcat服務器上運行的Java Web應用,平臺還提供了負載均衡器,按需提供部署和管理軟件供應上的Java Web產(chǎn)品的能力。該平臺能訪問的數(shù)據(jù)庫有關系型數(shù)據(jù)庫RDS,大數(shù)據(jù)存儲SimpleDB。
Cloud Bees 是 Amazon Elastic Beanstalk 和 RDS 的低成本替代品,它的大部分服務免費。它的最突出的優(yōu)點是集成了連續(xù)構建系統(tǒng),該系統(tǒng)能持續(xù)集成一個完整周期:云端開發(fā)、云應用的部署、運行中的云產(chǎn)品的管理。CloudBees還能按需地提供第三方插件及其服務。
Cloud Foundry,開源,是VMware的Java PaaS產(chǎn)品。VMware擁有Java Web應用的主流開源框架之一:Spring框架。 Cloud Foundry最突出的優(yōu)點是它是一個不受托管的PaaS,由于它開源,你甚至可以自己下載源代碼,自己托管PaaS。因此??梢哉f他即使一個托管平臺,也是一個受托管的平臺。
Google App Engine,是最早的,也被認為是目前最成熟的支持Java 的PaaS, 但它只支持部分而非全部的Java API,并需要提供源代碼級應用。它的最大優(yōu)點是其數(shù)據(jù)庫Bigtable——NoSQL的代表,為大數(shù)據(jù)提供了較好的解決方案。
Heroku ,最近才推出的支持Java的PaaS,目前還處于試運行階段,對關系型數(shù)據(jù)庫提供支持,也支持大數(shù)據(jù),在Ruby社區(qū)上非常受歡迎。
第三步:部署Java 應用到Google app engine中。右鍵點擊Java應用→ Google→ Deploy to app engine。輸入google帳號名、密碼等,點擊“部署”。
這樣就在GAE環(huán)境中部署Java應用,并對它在線地做測試和管理了。GAE作為PAAS,已經(jīng)具備了對工程部署,測試等自主管理的能力,并提供給了我們圖形化的界面操作。
7 PAAS上Java應用的安全性
Java虛擬機(JVM,Java Virtual Machine),應用程序打包為WAR、EAR等技術為Java應用在云計算環(huán)境中提供了天然的隔離,即使在同一基礎設施中Java應用也是能得到安全保證的。這也解決了云軟件服務提供商的后顧之憂。
8 結束語
云計算的發(fā)展是迅速的,短短幾年間,已經(jīng)有眾多的PAAS為Java云應用提供支持,對Java云應用的部署和運行、調試和檢測等都提供了越來越便捷的支持。相信在不久的將來,Java云應用的發(fā)展更為迅猛。
aGcAMhRKbRwnV8uzuOneGMVgd4CE3sE+jYfnWxProQw=參考文獻:
[1] Chen Hong-Jun.Intelligent and Active Defense Strategy of Cloud Computing[C].Proceedings of the 2012 International Conference on Computer Science and Electronic Engineering:ICCSEE 2012,2012,3:66-68.
[2] 云計算的分類[EB/OL].(2010).http://tech.qq.com/a/20101103/000074.htm.
[3] 走近云計算:解密IaaS、PaaS和SaaS[EB/OL].(2011).http://cio.ufida.com.cn/space.php?uid=1760&do=blog&id=4687.
[4] Programming Abstractions for Clouds[EB/OL].(2008).http://cloudcomputing.qrimp.com/.
[5] 楊剛,隨玉磊.面向云計算平臺自適應資源監(jiān)測方法[J].計算機工程與應用,2009,45(29).
[6] Java和云計算的關系[EB/OL].(2011).http://www.cngaosu.com/a/2011/1215/230037.html.
[7] 云端代碼:Google App Engine編程指南[EB/OL].(2013).http://book.51cto.com/art/201212/372963.htm.
[8] 吳貴鑫.云計算中的MapReduce并行編程模式研究[D].焦作:河南理工大學, 2010.
[9] 如何開發(fā)你的第一個Java Google App Engine 程序[EB/OL].(2012).http://blog.csdn.net/xiaojianpitt/article/details/4193064.