亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于GAE和Azure云平臺的可移植性研究

        2016-06-17 15:47:59張嘉超
        計算機時代 2016年6期

        張嘉超

        摘 要: 云服務商要提升云服務,最好的方法是提供云平臺之間的移植性。在各種各樣的編程語言和開發(fā)框架中,選擇合適的移植性開發(fā)環(huán)境是必要的。文章提供了可移植性開發(fā)環(huán)境的分析方法,提供了一個GAE和Azure之間的中間層解決方案,同時還提供了針對中間層的編程測試。

        關鍵詞: 平臺即服務; 可移植性; 谷歌互聯(lián)網應用服務引擎(GAE); 微軟云計算平臺(Azure)

        中圖分類號:TP393.0 文獻標志碼:A 文章編號:1006-8228(2016)06-12-05

        Abstract: To promote the cloud services, the best approach for cloud service providers is to realize the portability between the different cloud platforms. It is necessary to choose a suitable portability development environment in a variety of programming languages and development frameworks. This paper provides an approach to analyze the portability development environment, a middle-tier solution in between GAE and Azure, and the test of the middle-tier.

        Key words: platform as a service; portability; GAE; Azure

        0 引言

        云計算是一種方便的模式,用戶按需通過網絡訪問可配置的共享計算資源,(如網絡,服務器,存儲,應用程序和服務)。在云環(huán)境的架構中有三種服務模式。

        ⑴ IaaS(基礎設施級服務):是位于底層的服務,提供給用戶的服務是對所有計算基礎設施的利用,用戶能夠部署和運行任意軟件,包括操作系統(tǒng)和應用程序。

        ⑵ PaaS(平臺級服務):是中間業(yè)務,提供給用戶的服務是把客戶開發(fā)的應用程序部署到供應商的云計算基礎設施上去[1]。

        ⑶ SaaS(軟件級服務):提供了完整的軟件應用。提供給客戶的服務是運營商運行在云計算基礎設施上的應用程序,用戶可以在各種設備上通過客戶端界面訪問[2]。

        然而,新技術總是有很多問題。由于沒有統(tǒng)一的標準,不同廠商提供的云計算服務不能互操作和移植,這意味著開發(fā)人員需要在兩個不同的平臺上寫兩次相同的程序。

        要解決解決云可移植性問題,本文采用的方法是提供一個應用程序,在兩個不同的平臺上建立一個抽象層。

        要實現(xiàn)的目標是:在PaaS上讓兩個不同的PaaS廠商之間的應用程序可移植。本文采用GAE(谷歌應用程序引擎)和微軟Azure,使開發(fā)人員可以在兩個PaaS之間遷移基于Python的應用程序和數(shù)據(jù)存儲器。

        GAE(Google App Engine)是一個由谷歌公司在2008年創(chuàng)立的互聯(lián)網應用服務引擎,它采用云計算技術、多服務器和數(shù)據(jù)中心來虛擬化應用。因此GAE可以看作web應用托管的平臺[3]。

        Azure是微軟提出的基于云計算的操作系統(tǒng),它的主要目標是提供一個平臺,為開發(fā)者提供云服務器、數(shù)據(jù)中心、Web和PC應用程序[4]。

        基于這兩個開發(fā)環(huán)境的簡單研究,本文選擇的開發(fā)語言是GAE和Azure都支持的Python。

        1 實現(xiàn)方法

        1.1 Python Web框架的選擇

        目前市場上流行的Python Web框架,GAE和微軟Azure同時支持的是Django、Flask和Bottle,本文將比較這三個Web框架的功能和性能。

        1.1.1 功能介紹

        Flask是用Python編寫的一個輕量級Web應用程序框架。Flask被稱為“微框架”,因為它使用簡單的內核,通過擴展來添加其他功能,所以在大多數(shù)情況下,它只用來在一些小項目上使用一個或兩個功能[4]。換句話說,它不適合中型和大型網站或應用程序。

        Bottle是一個非常微妙的框架,它提供Python Web開發(fā)的基本支持:URL路由、請求/響應對象包、模板支撐和集成支持WSGI服務器。Bottle對小型Web開發(fā)更好,它可以根據(jù)項目的規(guī)模實現(xiàn)較小項目的快速開發(fā)[5]。然而,由于其功能有限,對于大型Web應用程序,bottle功能略顯不足,需要人工干預。

        Django是迄今為止基于Python最大的Web框架之一。它由一個龐大而活躍的社區(qū)支持。它配備了一個強大的后臺管理界面,以及許多其他功能[6]。Django還提供了基于表格的模型、模板語言和完整的文檔。

        1.1.2 性能比較

        對Django,flask,bottle性能進行測試,使用的操作系統(tǒng)是cenos6 64位,測試軟件是siege,測試命令請求只返回一個字符串。測試結果見圖1。

        從測試結果可看出,純框架的性能排序為:bottle>flask>Django。但是,當真正使用這些框架時,bottle需要的東西太多,隨著開發(fā)復雜性的增加,性能會下降。

        就比較結果進行可行性分析,該項目的目標是幫助Python程序員建立可以同時在谷歌App Engine和微軟Azure上運行的網站或應用程序。Flask具有建立如博客和電子郵件的功能,但它是一個“微框架”,因此,當程序員要建立一個中等規(guī)模的網站或應用程序時,它缺乏可擴展的能力。

        據(jù)長期不斷的測試,Django雖然性能最差(因為Django框架很大),但開發(fā)人員使用起來十分方便。本文選擇Django框架是因為它有完整的框架功能和可以接受的性能。

        1.2 部署的方法

        選定框架后,需要找到一種方法將其部署到GAE和微軟Azure上。微軟Azure很容易部署,因為微軟Azure支持Django框架。要做的只是使用Visual Studio開發(fā)程序,并把它上傳到微軟Azure上。

        對于GAE,需要導入一個適配器,即Django-nonrel,它可以使Django運行在非關系型數(shù)據(jù)庫上,它支持MongoDB和GAE。

        1.3 使用數(shù)據(jù)存儲的方法

        一旦應用程序可以在兩個平臺上運行時,接下來就要考慮如何連接數(shù)據(jù)存儲。這里有三個選擇,分別是GAE云存儲、Azure存儲和亞馬遜簡單存儲服務(S3)。我選擇S3為應用程序的數(shù)據(jù)存儲,因為其擁有最大量的合作伙伴和ISV集成商,并且還具有強大的網絡供應商和數(shù)據(jù)恢復能力[7]。

        對于GAE和Azure連接S3的方式,我導入一個云平臺無關的API,即Boto。Boto是一個用于AWS的Python接口,通過使用Boto,開發(fā)人員可以輕松地使用Python控制S3。

        2 中間層的搭建

        我為Python程序建立了整個中間層,這個中間層的功能是:

        ⑴ 通過使用中間層,Python開發(fā)人員可以不改變任何代碼,就能把Django應用部署到GAE和微軟的Azure上;

        ⑵ 開發(fā)人員可以使用亞馬遜S3來存儲數(shù)據(jù)。它包含大量的文件,后面會給出這些文件的解釋和內容。

        2.1 可移植性文件在程序層面的解釋

        該程序的根目錄為myblog002,這個文件夾下包含兩個文件夾,分別是myblog002、google app engine和一個叫myblog002.sln的文件。Google app engine中包含google app的軟件開發(fā)包,myblog002.sln是項目文件,Visual Azure同樣會使用到這個文件。當進入myblog002文件夾,會看到更多文件夾和文件。

        他們可以分為三部分。

        第一部分是項目和程序文件,包括myblog002、blog、manage.py。在manage.py中,可以看到環(huán)境變量路徑,這里我使用myblog002.settings。

        第二部分是Azure中間層,這部分有三個文件夾:bin、env、obj,五個文件:myblog002.pyprol、myblog002.splite,ptvs_virtualenv_proxy.py,web.config和web.debug.config。Bin文件夾存儲程序代碼,用于部署控制和組件,例如Azure Setup,microsoft python tool和FastCGI。Env文件夾包含項目中用到的所有環(huán)境。Obj文件夾用于在編程過程中生產的臨時文件的存儲,同時包含debug和release兩個子目錄,用于控制版本。以pyproj為后綴的腳本包含所有項目的配置。以splite為后綴的腳本用于存儲sqlite3數(shù)據(jù)庫。ptvs_virtualenv_proxy.py腳本用于讀取WSGI指針,激活虛擬環(huán)境和日志錯誤。

        web.config文件描述服務器如何處理請求。web.debug.config當你將應用程序發(fā)布到開發(fā)環(huán)境時,進行轉換。所有的文件可以創(chuàng)建微軟Azure需要的.NET框架。

        第三部分包括除boto文件夾之外所有文件夾和文件,這些可以形成GAE中間層。這部分包括autoload、dbindexer、django、diangoappengine、djangotoolbox、templates六個文件夾。Autoload在處理任何請求之前,通過確保信號指針或序號的加載,來正確地安裝diango項目。Dbindexer可以幫助開發(fā)人員在使用GAE時使用非關系型數(shù)據(jù)庫。Django包含django庫。Djangoappengine包含Django-nonrel的應用程序后端,如數(shù)據(jù)庫和email后端。

        Djangotoolbox是一個小的django工具集。可以使用非關系型數(shù)據(jù)庫的Django后臺,加載不必要的代碼,并提供良好的編碼規(guī)范和工具,這對你的代碼有好的實際影響。這四個文件夾是GAE中間層的核心。Templates包含一些錯誤展示頁,如404 error或505 error。

        中間層的第三部分包含八個文件,分別是“urls.py”,“cron.yaml”,“build.sh”,“__init__.py”,“app.yaml”, “index.yaml”,“indexes.py”and“settings.py。Urls.py包含項目的所有url。cron.yaml重新索引那些由于新訪問需要高頻更新的任何文檔。

        build.sh被用來編譯文件包中的所有資源。__init__.py使python處理包含程序包的目錄,在模塊搜索時避免被有相同名字的目錄隱藏有效的模塊。app.yaml指定URL如何對應于請求應用程序和靜態(tài)文件。index.yaml和應用程序一起加載來創(chuàng)建數(shù)據(jù)庫中的索引。indexes.py包含所有條目的字母索引。settings.py包含項目的所有環(huán)境變量。這些文件中最重要的是setting.py,它是GAE和Azure之間的鏈接。

        對Python腳本的第一部分GAE和Azure的數(shù)據(jù)庫設計,我使用splite數(shù)據(jù)庫,并把數(shù)據(jù)庫名字命名為myblog002.sqlite。

        接下來,設置查找類來查找靜態(tài)文件,通過加密保證其惟一性,通過模板加載器從多種資源中導出模板,中間類可同時用于GAE和Azure,根URL配置文件和WSGI應用程序。

        在安裝的app類中,我導入了應用程序和GAE中間層工具包。對于Google APP Engine,設置模板文本處理器,最后一件事是,指定默認的測試程序和日志文件。

        2.2 可移植性數(shù)據(jù)庫層面文件的解釋

        最后一個叫boto的文件夾是AWS S3的接口。要使用這個API,我們需要設置setting.py,導入boto包,設置AWS的用戶名、密碼和存儲名稱。

        接下來,我們就可以在請求信息中使用boto API來連接AWS S3存儲了。

        3 可移植性的測試和分析

        首先用python寫一個簡單的博客應用程序,然后把代碼放到中間層上,最后把它發(fā)布到GAE和Azure上。

        3.1 在Django上創(chuàng)建一個簡單的博客應用程序

        開發(fā)環(huán)境是MAC OS X,處理器是2.4GHZ Inter Corei5,內存是4GB 1600MHZ DDR3。

        數(shù)據(jù)庫同步結果見圖3。

        3.2 創(chuàng)建一個GAE和Azure之間的中間層

        ⑴ 首先,創(chuàng)建一個命名為myblog002的文件夾,把文件夾都放入其中,把名為myblog002.sln(可由Visual Studioc創(chuàng)建)的GAE SDK放到該文件夾。

        ⑵ 進入myblog002文件夾,下載5個django-nonrel文件,包括djangoappengine,autoload,dbindexer,django和djangotoolbox,把它們放到test2文件中,復制GAE可用的指定文件,包括template, _init_.py, cron.yaml, indexes.py,requirement.txt,urls.py,app.yaml,index.yaml, build.sh, and settings.py。

        ⑶ 接下來是添加Azure文件夾,包含3個文件夾:“bin”, “env” and “obj”,以及5個文件:“myblog002.pyprol”,“myblog002.sqlite”,“ptvs_virtualenv_proxy.py”,“web.config”and“web.debug.config”。

        ⑷ 這個步驟很重要,它用來改寫setting.py。

        3.3 GAE的測試

        安裝GAE,并把所有文件移動到GAE文件夾中,然后運行它,結果見圖4。

        現(xiàn)在,程序可以在GAE上運行。接下來,我們需要把程序部署到網絡上。

        3.4 Azure的測試

        ⑴ 把項目導入到Visual Studio2013。

        ⑵ 運行程序,運行結果見圖5。

        現(xiàn)在,程序可以通過Visual Studio運行。

        ⑶ 把程序發(fā)布到網絡上。

        3.5 GAE和Azure之間python的存儲可移植性測試

        在這部分,我選擇亞馬遜S3。因此,第一件事是注冊賬號,獲得來自亞馬遜的認證。之后,我們導入boto API,放到根目錄。

        我使用名為cw00376的存儲,在存儲中,我創(chuàng)建了名為blog的文件夾,準備把博客放入其中。

        現(xiàn)在,當用戶在博客中寫東西時,文章的標題和內容會存儲在S3存儲中。

        4 結束語

        首先,這份報告調查了當今社會對云計算可移植性的研究,重點在兩個不同的云平臺供應商之間的PaaS層面的中間層上。其次,基于對谷歌App Engine和微軟Azure的分析,本報告決定使用Python+Django+ AWS S3作為中間層接口。完成中間層開發(fā)之后,創(chuàng)建了一個簡單的博客應用程序,用于測試中間層。

        該項目成功地實現(xiàn)不同的PaaS平臺之間的可移植性,證明了中間層的可行性,并提供了更深入的研究方法。在開發(fā)的過程中,使用編程語言Python,操作系統(tǒng)Linux,開發(fā)Web框架如Django,云平臺和亞馬遜Web服務和大量已經實現(xiàn)的API。

        為進一步的研究和開發(fā),從縱向看,很多具有功能性和可移植性的程序可以開發(fā),如Blob存儲,郵件和隊列。該中間層可以嘗試添加更多的API,用于安裝更多類型的云服務。從橫向看,中間層可以嘗試添加更多的開發(fā)環(huán)境和更多的編程語言,例如PHP和Node.js等。

        參考文獻(References):

        [1] 李露.GAE的技術發(fā)展及應用[J].科技創(chuàng)業(yè)月刊,2012.25(8):

        192

        [2] 王鵬.云計算的關鍵技術與應用實例[M].人民郵電出版社,

        2009.

        [3] 劉楓.基于Google云計算平臺的Web應用系統(tǒng)設計及實現(xiàn)[D].

        四川電子科技大學碩士學位論文,2011.

        [4] 孫越.基于Windows Azure的教學資源平臺建設[J].福建電

        腦,2013.29(10):159

        [5] 王昊.基于GAE云計算的Web應用與開發(fā)[D].南京郵電大學

        碩士學位論文,2013.

        [6] 張?zhí)煺?遷移應用到Windows Azure云計算平臺[J].軟件,

        2013.34(2):144

        [7] 盧朝輝.基于Windows Azure的大規(guī)模Web應用程序設計[J].

        計算機技術與發(fā)展,2014.24(12):57

        国产精品爽爽va在线观看网站| 国产精品无码翘臀在线观看 | 四虎永久在线精品免费网址| 99久久伊人精品综合观看| 日韩毛片基地一区二区三区| 亚洲色偷偷偷综合网另类小说| 日韩国产精品一区二区三区| 亚洲av色香蕉一区二区三区老师| 18无码粉嫩小泬无套在线观看| 久久青青草原国产精品最新片| 精品中文字幕精品中文字幕| 免费在线黄色电影| 亚洲人成亚洲精品| 久久99久久99精品免观看女同 | 国产剧情一区二区三区在线 | 99精品国产兔费观看久久99| 亚洲中文一本无码AV在线无码| 久久精品国产黄片一区| 国产成人小视频| 欧美老妇与禽交| 精品亚洲人伦一区二区三区| 国产老熟女精品一区二区| 日韩乱码人妻无码中文字幕久久| 欧美国产小视频| 91国内偷拍一区二区三区| 曰韩内射六十七十老熟女影视| 欧美日韩中文国产一区发布| 亚洲Va中文字幕无码毛片下载| av在线不卡免费中文网| 午夜射精日本三级| 99热这里只有精品3| 亚洲无av高清一区不卡| 男人吃奶摸下挵进去啪啪软件| 熟妇人妻av无码一区二区三区| 亚洲成AV人久久| 亚洲乱码中文字幕视频| 国产办公室沙发系列高清| 久久久久亚洲AV成人网毛片| 91精品亚洲熟妇少妇| 久久国产色av免费观看| 亚洲天堂手机在线|