複製鏈接
請複製以下鏈接發送給好友

Google App Engine

鎖定
Google App Engine 是一種讓您可以在 Google 的基礎架構上運行您的網絡應用程序。Google App Engine 應用程序易於構建和維護,並可根據您的訪問量和數據存儲需要的增長輕鬆擴展。使用 Google App Engine,將不再需要維護服務器:您只需上傳您的應用程序,它便可立即為您的用户提供服務。
中文名
谷歌應用引擎
外文名
Google App Engine
定    位
網絡應用程序
易    於
構建和維護
增    長
輕鬆擴展

Google App Engine詳細介紹

2008年4月7號,Google在Campfire One上介紹了一種簡化創建、運行和構建伸縮性Web應用的工具——Google App Engine。簡而言之,Google App Engine允許你本地使用Google基礎設施構建Web應用,待其完工之後再將其部署到Google基礎設施之上。
這次發佈的是沒有包含全部特性的預覽版,提供了一個配額系統,它限制了在預覽期間應用免費可用的存儲、CPU和帶寬。一旦預覽期結束,配額仍將免費,但是開發者需要按需購買額外資源。額外資源的價格尚未公佈(甚至可能尚未確定)。
預覽版的配額包括:3個應用/開發者、500MB存儲/應用、2000封郵件/天(連續24小時)、10 GB入站帶寬、10 GB出站帶寬、200M CPU兆周、650k HTTP請求、2.5M Datastore API調用和160k URL Fetch API調用。 [1] 
您可以使用 Google提供的免費域名(見擴展閲讀)為您的應用程序提供服務,也可以使用 Google Apps 從您自己的域為它提供服務。您可以與全世界的人共享您的應用程序,也可以限制為只有您組織內的成員可以訪問。
您可以免費開始使用 App Engine。註冊一個免費賬户即可開發和發佈您的應用程序以供全世界的人共享,而且不需要承擔任何費用和責任。每個免費賬户都可使用多達 500MB 的持久存儲空間,以及可支持每月約 500 萬頁面瀏覽量的足夠 CPU 和寬帶。
使用 Google App Engine 的試用版本期間,只可以使用免費賬户。您很快就能夠購買其他的計算資源。 App Engine提供了一個web應用運行的框架,App Engine應用程序易於運行、部屬和擴展。App Engine不同於其他方案:App Engine不是網格計算—它不能運行任意的作業。它不提供物理主機但提供了打包代碼上傳的方式。用户在只需要在代碼中指定了response和request,剩下的運行和部署的任務就交給了App Engine。用户不需要預留資源,例如RAM、CPU或者諸如此類。
Google App Engine是Google提供的可擴展系統上構建網絡應用程序。每個Google App Engine應用程序都可使用多達500MB的持久存儲空間以及可支持每月500萬綜合瀏覽量的足夠帶寬和CPU。目前每個用户可以免費創建十個應用。
Google App Engine可讓您在Google的基礎架構上運行您的網絡應用程序。App Engine應用程序易於構建和維護,並可根據您的訪問量和數據存儲需要的增長輕鬆擴展。使用Google App Engine,將不再需要維護服務器:您只需上傳您的應用程序,它便可立即為您的用户提供服務。 [2] 

Google App Engine應用程序環境

通過 Google App Engine,即使在重載和數據量極大的情況下,也可以輕鬆構建能安全運行的應用程序。該環境包括以下特性:
動態網絡服務,提供對常用網絡技術的完全支持
持久存儲有查詢、分類和事務
自動擴展和載荷平衡
用於對用户進行身份驗證和使用 Google 賬户發送電子郵件的 API
一種功能完整的本地開發環境,可以在您的計算機上模擬 Google App Engine
當前,Google App Engine官方正式 支持 Python 語言、 JAVA 語言、Go語言和PHP語言,而對應perl的開發工作,Google的開發小組也正在進行。
雖然,Google App Engine支持的語言並不多,但是,藉助強大的JAVA語言的Java Scripting Engine功能,實際上很多腳本語言都可以在Google App Engine上運行,例如Scala、Groovy、JavaScript、PHP、JRuby等等。

Google App EngineSandbox

在安全環境中運行的應用程序,僅提供對基礎操作系統的有限訪問權限。這些限制讓 App Engine 可以在多個服務器之間分發應用程序的網絡請求,並可以啓動和停止服務器以滿足訪問量需求。Sandbox 將您的應用程序隔離在它自己的安全可靠環境中,該環境與網絡服務器的硬件、操作系統和物理位置無關。
安全 Sandbox 環境的限制實例包括:
應用程序只能通過提供的網址獲取和電子郵件服務和 API 訪問互聯網中的其他計算機。其他計算機只能通過在標準端口上進行 HTTP(或 HTTPS)請求來連接至該應用程序。
應用程序無法向文件系統寫入。應用程序只能讀取通過應用程序代碼上傳的文件。該應用程序必須使用 App Engine 數據庫存儲所有在請求之間持續存在的數據。
應用程序代碼僅在響應網絡請求時運行,且必須在幾秒鐘內返回響應數據。請求處理程序不能在響應發送後產生子進程或執行代碼。

Google App Engine運行時環境

App Engine 提供了一個使用 Python 編程語言的運行時環境。將來的版本將考慮使用其他編程語言和運行時環境配置。
Python 運行時環境使用 Python 2.5.2 版。
該環境包括 Python 標準庫。當然,您無法調用違反了 Sandbox 限制的庫方法,例如嘗試打開套接字或向文件寫入。方便起見,其主要功能不受該運行時環境支持的標準庫中的多個模塊已被禁用,而導入這些模塊的代碼將發生錯誤。
應用程序代碼只能以 Python 編寫。具有用 C 編寫的擴展的代碼不受支持。
Python 環境為數據庫、Google 賬户、網址獲取和電子郵件服務提供了豐富的 Python API。App Engine 還提供了一個稱為 webapp 的簡單 Python 網絡應用程序框架,從而可以輕鬆開始構建應用程序。
方便起見,App Engine 還包括 Django 網絡應用程序框架 0.96.1 版。請注意,App Engine 數據庫不是某些 Django 組件所需的關係數據庫。某些組件(例如 Django模板引擎)按照文檔化的程序工作,而其他組件則需要做更多工作。有關將 Django 與 App Engine 一起使用的提示,請參閲文章部分。
只要這些庫是完全使用 Python 實現並且不需要任何不受支持的標準庫模塊,您就可以使用您的應用程序上傳其他第三方庫。
有關 Python 運行時環境的詳細信息,請參閲 Python 運行時環境。

Google App Engine數據庫

App Engine 提供了一個強大的分佈式數據存儲服務,其中包含查詢引擎和事務功能。就像分佈式網絡服務器隨訪問量增加一樣,該分佈式數據庫也會隨數據而增加。
數據庫的 Python API 包括一個可以定義數據庫實體結構的數據建模界面。數據模型可以指示屬性值必須位於給定範圍內,如果未給定任何範圍,還可以提供默認值。您的應用程序可以根據需要向數據提供或多或少的結構。
數據庫使用樂觀鎖定進行併發控制。如果有其他進程嘗試更新某實體,而同時該實體位於以固定次數進行重新嘗試的事務中,此時該實體將更新。應用程序可以在一個事務中執行多項數據庫操作(全部成功或者全部失敗),從而確保數據的完整性。
數據庫通過其分佈式網絡使用“實體組”實現事務。一個事務操作一個組內的實體。同一組的實體存儲在一起,以高效執行事務。應用程序可以在實體創建時將實體分配到組。
有關數據庫的詳細信息,請參閲數據庫 API 參考。

Google App Engine谷歌賬户

App Engine 包括用於與 Google 賬户集成的服務 API。應用程序使用户可以通過 Google 賬户登錄,並可以訪問與該賬户關聯的電子郵件地址和可顯示的名稱。使用 Google 賬户使用户可以更快地開始使用您的應用程序,因為用户可以不需要創建新賬户了。Google 賬户還省去只為您的應用程序執行用户賬户系統的麻煩。
如果您的應用程序正在 Google Apps 下運行,則它可以與您組織的成員和 Google Apps 賬户成員使用相同的功能。
用户 API 還可告知應用程序當前用户是否是應用程序的註冊管理員。這樣便可以輕鬆實現您站點上僅用於管理的區域。
有關與 Google 賬户集成的詳細信息,請參閲用户 API 參考。

Google App Engine服務

App Engine 提供了多種服務,從而使您可以在管理應用程序的同時執行常規操作。提供了以下 API 以訪問這些服務:
網址獲取
應用程序可以使用 App Engine 的網址獲取服務訪問互聯網上的資源,例如網絡服務或其他數據。網址獲取服務使用用於為許多其他 Google 產品檢索網頁的高速 Google 基礎架構來檢索網絡資源。有關網址獲取服務的詳細信息,請參閲網址獲取 API 參考。
郵件
應用程序可以使用 App Engine 的郵件服務發送電子郵件。郵件服務使用 Google 基礎架構發送電子郵件。有關郵件服務的詳細信息,請參閲郵件 API 參考。
Memcache
Memcache 服務為您的應用程序提供了高性能的內存鍵值緩存,您可通過應用程序的多個實例訪問該緩存。Memcache 對於那些不需要數據庫的永久性功能和事務功能的數據很有用,例如臨時數據或從數據庫複製到緩存以進行高速訪問的數據。有關 Memcache 服務的詳細信息,請參閲 Memcache API 參考。
圖片操作
圖片服務使您的應用程序可以對圖片進行操作。使用該 API,您可以對 JPEG 和 PNG 格式的圖片進行大小調整、剪切、旋轉和翻轉。有關圖片操作服務的詳細信息,請參閲圖片 API 參考。

Google App Engine開發工作流程

App Engine 軟件開發套件 (SDK) 包括可以在您的本地計算機上模擬所有 App Engine 服務的網絡服務器應用程序。該 SDK 包括 App Engine 中的所有 API 和庫。該網絡服務器還可以模擬安全 Sandbox 環境,包括檢查是否存在禁用模塊的導入以及對不允許訪問的系統資源的嘗試訪問。
Python SDK 完全使用 Python 實現,可以在裝有 Python 2.5 的任何平台上運行,包括 Windows、Mac OS X 和 Linux。您可以在 Python 網站上獲得適用於您的系統的 Python。該 SDK 以 Zip 文件提供,安裝程序可用於 Windows 和 Mac OS X。
該 SDK 還包括可將您的應用程序上傳到 App Engine 的工具。創建了您應用程序的代碼、靜態文件和配置文件後,即可運行該工具上傳數據。該工具會提示您提供 Google 賬户電子郵件地址和密碼。
構建已在 App Engine 上運行的應用程序的新主要發行版時,可以將新發行版作為新版本上傳。在您改為使用新版本之前,舊版本可以繼續為用户提供服務。可以在仍運行舊版本的同時在 App Engine 上測試新版本。
管理控制枱是基於網絡的界面,用於管理在 App Engine 上運行的應用程序。您可以使用它創建新應用程序、配置域名、更改您的應用程序當前的版本、檢查訪問權限和錯誤日誌以及瀏覽應用程序數據庫。

Google App Engine限額和限制

創建 App Engine應用程序不僅簡單,而且是免費的!您可以創建賬户,然後發佈一個應用程序,用户無需承擔任何費用和責任即可立即使用該應用程序。通過免費賬户獲得的應用程序可使用多達 500MB 的存儲空間和多達每月 500 萬的頁面瀏覽量。
此試用時間內,僅提供免費賬户。您很快就能夠以有競爭力的市場價格購買其他的計算資源。試用期過後,免費賬户可繼續使用。
此試用期間,最多可註冊 3 個應用程序。
應用程序資源限制(“限額”)會不斷刷新。如果您的應用程序達到基於時間的限額(例如寬帶),則該限額將以給定限制的比率立即開始刷新。固定限額(例如存儲使用量)僅在降低使用量時才會減小。
有些功能會施加與限額無關的限制,以保護系統的穩定性。例如,當調用某應用程序以為網絡請求提供服務時,該應用程序必須在幾秒鐘內發出響應。如果該應用程序花費的時間過長,則進程將被終止並且服務器將向用户返回錯誤代碼。響應超時是動態的,如果請求處理程序經常達到其超時,則可以縮短請求超時以節省資源。
服務限制的另一實例是查詢返回的結果數。一個查詢最多可返回 1,000 條結果。要返回更多結果的查詢只能返回該最大值。在這種情況下,執行這種查詢的請求不可能在超時前返回請求,但限制仍存在以節省數據庫上的資源。
試圖破壞或濫用限額(例如同時在多個賬户上操作應用程序)違反服務條款,並可能導致應用程序被禁用或賬户關閉。

Google App Engine設計

首先,在編程方面,Datastore是基於"Entity(實體)"這個概念,而且Entity和"對象"這個概念比較類似,同時Entity可以包括多個Property(屬性),Property的類別有整數,浮點和字符串等,比如,可以設計一個名為"Person"的Entity,它包含名為"Name"的字符串Property和名為"Age"的整數Property。由於Datastore是"Schema-less"的,所以數據的Schema都由應用維護,而且能非常方便地對一個Entity所包含的屬性進行增刪和修改。在存儲方面,一個Entity的實例可以被認為是一個普通的"Row(行)",而包含所有這種Entity的實例的Table被稱為Kind,比如,所有通過"Person"這個Entity生成實例,比如小吳,小朱和小華等,它們都會存放在同一個名為"Person"的Kind中。在結構方面,雖然也能通過特定的方式在Datastore中實現關係型結構,但是Datastore在設計上是為層次(Hierarchical)性結構"度身定做"的,有Root Entity和Child Entity之分,比如,可以把"Person"作為Root Entity(父實體),"Address"作為"Person"的Child Entity,兩者合在一起可以稱為一個"Entity Group"。這樣做的好處是能將這兩個實體集中一個BigTable本地分區中,而且能對這兩個實體進行本地事務。 [3] 
下表為Datastore和傳統的關係型數據庫之間的比較:
-
Datastore
關係型數據庫
SQL支持
只支持一些基本的查詢
全部支持
主要結構
層次(Hierarchical)
關係
Index
部分可自動創建
手動創建
事務
只支持在一個Entity Group內執行
支持
平均執行速度(ms)
低於200
低於100
擴展型
非常好
很困難,而且需要進行大量的修改
表1. Datastore和關係型數據庫之間的比較
總體而言,Datastore在設計理念上和傳統的關係型數據庫有很大的不同,所以其在反應速度和寫數據方面不是最優的,但是如今Web應用以讀為主,而且需要能通過簡單的擴展就能支持其海量的數據,而這兩點卻是Datastore所擅長,所以Datastore非常適合支撐Web應用。

Google App Engine技術

儘管Google説‘未來將支持更多的語言’,但是當前技術棧是基於Python的,它是Google認同的語言之一。出於安全和伸縮性的目的,Google提供了一個運行在安全沙箱中的Python運行時環境,它提供對底層操作系統有限制的訪問。該環境包括標準庫,並可通過模 塊進行擴展,編寫模塊的語言當前不支持C語言。
該環境包括Python標準庫。當然,調用那些違反沙箱限制的庫方法(如打開socket或寫文件)將不會成功。為了方便起見,幾個核心特性不被支持的標準庫中的模塊被禁用了。那些引入它們的代碼會出錯。
應用代碼只能用Python書寫。不支持使用C來編寫擴展。
其他安全限制包括:出站通信(outbound communication)只能通過所提供的郵件和URL fetch API進行,通過HTTP和HTTPS作為傳輸的入站通信(inbound communication)使用標準端口,禁止文件系統寫操作和禁止子進程或代碼在請求/響應循環外執行(例如後台操作和批操作)。
此外,Google提供了訪問一個Datastore、Google用户賬號、URL fetch和郵件服務的API。App Engine還包括一個簡化的Web應用框架和Django 0.96.1,儘管App Engine Datastore不是關係型的,而且也不能使用全部的Django API。
Datastore API背後由Google的BigTable支持,但是它與一個簡單的對象持久化API(或一個對象關係映射框架,即使Google強調這個Datastore不是關係型的)有很多相同之處。 [1] 

Google App Engine應用

1、Google App Engine空間
Google App Engine也就是GAE,是Google推出的一款網絡運用程序,也是個免費虛擬主機空間,其實這比一般虛擬主機強悍的多,你可以利用Google App Engine工具來開發網站或製作網絡應用程序,Google會在自己的龐大服務器集羣上為你提供空間、帶寬、資源等。
Google App Engine對全球開發者免費開放使用,你可以充分利用Google的提供的免費空間、免費數據庫、免費二級域名等來展示你開發的應用程序,提供給全球的用户下載和使用。
只要你有一個Google賬號就可以在Google App Engine上註冊和開通一個免費賬號,免費賬號允許你創建25個應用 [1]  ,每一個應用提供1GB的容量,月流量是60GB(傳出帶寬是1GB/天,傳入帶寬1GB/天)。 [4] 

Google App Engine驗證碼

Google App Engine應用需要驗證手機,這一驗證主要是為了防止Google App Engine應用被濫用。在使用Google App Engine應用時,部分移動或者聯通的手機無法接受到驗證碼短信(SMS),又無法更換手機申請,那麼我們怎麼處理呢?還好,谷歌的服務總是從顧客的角度出發的,如果你收不到驗證碼短信(SMS),那麼可以填寫申請表單來實現。 [5] 

Google App Engine最新報道

谷歌2008年推出App Engine幫助外部開發人員在谷歌數據中心和服務器網絡上開發和運行程序,從而正式進軍公共雲計算領域,與在該行業佔據領先地位的亞馬遜展開競爭。
雲計算提供商通常互相競爭,希望儘可能多的客户使用自己的數據中心。但在週二,谷歌宣佈與初創企業AppScale合作,允許App Engine上的應用程序不經修改即可在其他雲服務器或公司自有數據中心和服務器上運行。
谷歌的這一舉措使得開發人員有可能通過App Engine開發應用程序,然後拿到其他雲服務提供商那裏運行。不過谷歌雲平台全球解決方案主管Miles Ward稱,上述舉措將幫助公司吸引更多雲客户,尤其是礙於所謂“雲割據”規定、無法按慣常方式在某些國家提供應用程序和網頁服務的情況下。 [6] 
參考資料