什么是GAE:Google App Engine介紹
什么是GAE?
Google App Engine (GAE)可讓您在 Google 的基礎架構上運行您的網絡應用程序。App Engine 應用程序易于構建和維護,并可根據您的訪問量和數據存儲需要的增長輕松擴展。使用 Google App Engine,將不再需要維護服務器:您只需上傳您的應用程序,它便可立即為您的用戶提供服務。
您可以使用 Google 企業應用套件通過自己的域名(例如 http://www.example.com/)提供應用程序。或者,您可以使用 appspot.com 域上的免費域名來為您的應用程序提供服務。您可以與全世界的人共享您的應用程序,也可以限制為只有貴組織的成員可以訪問。
Google App Engine 支持以幾種編程語言編寫的應用程序。通過 App Engine 的 Java 運行時環境,您可以使用標準 Java 技術(包括 JVM、Java servlet 和 Java 編程語言,或使用基于 JVM 的解釋器或解譯器的任何其他語言,例如 JavaScript 或 Ruby)構建應用程序。App Engine 還提供一個專用的 Python 運行時環境,該環境包括一個快速 Python 解釋器和 Python 標準庫。Java 和 Python 運行時環境構建為確保應用程序快速、安全運行,并不受系統上的其他應用程序的干擾。
在 App Engine 中,您只需為您使用的資源付費。沒有設置成本,也沒有重復的費用。您的應用程序使用的資源,如存儲空間和帶寬以千兆字節衡量,并以有競爭力的費率收費。您可以控制您的應用程序可以消費的***資源量,使其一直保持在預算范圍內。
可以免費開始使用 App Engine。所有應用程序都可以使用多達 500 MB 的存儲空間,以及可支持每月約 500 萬頁面瀏覽量的足夠的 CPU 和帶寬,完全免費。為您的應用程序啟用付費后,您的免費配額將提高,您只需為使用的超過免費水平的資源付費。
應用程序環境
通過 Google App Engine,即使在負載很重和數據量極大的情況下,也可以輕松構建能安全運行的應用程序。App Engine 包括以下功能:
◆動態網絡服務,提供對常用網絡技術的完全支持
◆持久存儲空間,支持查詢、分類和事務
◆自動擴展和負載平衡
◆用于對用戶進行身份驗證和使用 Google 帳戶發送電子郵件的 API
◆一種功能完整的本地開發環境,可以在您的計算機上模擬 Google App Engine
◆用于在指定時間和定期觸發事件的計劃任務
您的應用程序可在以下兩個運行時環境之一中運行:Java 環境和 Python 環境。各環境均為網絡應用程序開發提供標準協議和常用技術。
沙盒
應用程序在安全環境中運行,該安全環境僅提供對基礎操作系統的有限訪問權限。這些限制讓 App Engine 可以在多個服務器之間分發應用程序的網絡請求,并可以啟動和停止服務器以滿足訪問量需求。沙盒將您的應用程序隔離在它自己的安全可靠環境中,該環境與網絡服務器的硬件、操作系統和物理位置無關。
安全沙盒環境的限制示例包括:
◆應用程序只能通過提供的網址抓取以及電子郵件服務訪問互聯網中的其他計算機。其他計算機只能通過在標準端口上進行 HTTP(或 HTTPS)請求來連接至該應用程序。
◆應用程序無法向文件系統寫入。應用程序只能讀取通過應用程序代碼上傳的文件。該應用程序必須使用 App Engine 數據存儲區、memcache 或其他服務存儲所有在請求之間持續存在的數據。
◆應用程序代碼僅在響應網絡請求或 cron job 時運行,且任何情況下必須在 30 秒鐘內返回響應數據。請求處理程序不能在響應發送后生成子進程或執行代碼。
Java 運行時環境
您可以使用常用 Java 網絡開發工具和 API 標準開發在 Java 運行時環境中運行的應用程序。您的應用程序使用 Java Servlet 標準和環境交互,并可以使用常用網絡應用程序技術,例如 JavaServer 頁面 (JSP)。
Java 運行時環境使用 Java 6。App Engine Java SDK 支持使用 Java 5 或 6 開發應用程序。
該環境包括 Java SE 運行時環境 (JRE) 6 平臺和庫。沙盒環境的限制在 JVM 中實現。只要應用程序不超過沙盒的限制,就可以使用任何 JVM 字節碼或庫功能。例如,嘗試打開套接字或向文件寫入的字節碼將引發運行時異常。
您的應用程序使用 Java 標準 API 來訪問大多數 App Engine 服務。對于 App Engine 數據存儲區,Java SDK 包括 Java 數據對象 (JDO) 和 Java 持久性 API (JPA) 接口的實現。應用程序可使用 JavaMail API 通過 App Engine 郵件服務發送電子郵件。java.net HTTP API 訪問 App Engine 網址抓取服務。App Engine 還包括低級 API 以使用其服務實現額外適配器或直接從應用程序使用。請參閱有關數據存儲區、memcache、網址抓取、郵件、圖像和 Google 帳戶 API 的文檔。
通常,Java 開發人員使用 Java 編程語言和 API 來實現 JVM 的網絡應用程序。通過使用 JVM 兼容的解譯器或解釋器,您還可以使用其他語言來開發網絡應用程序,例如 JavaScript、Ruby 或 Scala。
Python 運行時環境
通過 App Engine 的 Python 運行時環境,您可以使用 Python 編程語言實現應用程序,并在優化的 Python 解釋器上運行。App Engine 包括針對 Python 網絡應用程序開發的豐富的 API 和工具,包括功能豐富的數據建模 API、易于使用的網絡應用程序框架和用于管理和訪問您的應用程序的數據的工具。您還可以利用針對 Python 網絡應用程序開發的多種成熟的庫和框架,例如 Django。
Python 運行時環境使用 Python 2.5.2 版。將在未來版本中考慮對于 Python 3 的額外支持。
Python 環境包括 Python 標準庫。當然,不是該庫的所有功能都可以在沙盒環境中運行。例如,對嘗試打開套接字或向文件寫入的方法的調用將引發異常。為方便起見,主要功能不受該運行時環境支持的標準庫中的多個模塊已被禁用,而導入這些模塊的代碼將引發錯誤。
為 Python 環境編寫的應用程序代碼只能以 Python 編寫。用 C 語言編寫的擴展不受支持。
Python 環境為數據存儲區、Google 帳戶、網址抓取和電子郵件服務提供了豐富的 Python API。App Engine 還提供了一個稱為 webapp 的簡單 Python 網絡應用程序框架,從而可以輕松開始構建應用程序。
只要其他第三方庫是使用純 Python 實現的并且不需要任何不受支持的標準庫模塊,您就可以使用您的應用程序上傳這些庫。
數據存儲區
App Engine 提供了一個強大的分布式數據存儲服務,其中包含查詢引擎和事務功能。就像分布式網絡服務器隨訪問量增加一樣,該分布式數據存儲區也會隨數據而增加。
該 App Engine 數據存儲區與傳統關系數據庫不同。數據對象(或“實體”)有一類和一組屬性。查詢可以檢索按屬性值過濾和分類的指定種類的實體。屬性值可以是受支持的屬性值類型中的任何一種。
數據存儲區實體是“無架構”的。數據實體的結構由應用程序代碼提供和執行。Java JDO/JPA 接口和 Python 數據存儲區接口包括用于在您的應用程序內應用和執行結構的功能。您的應用程序還可以直接訪問數據存儲區以根據需要應用或多或少的結構。
數據存儲區高度一致并使用樂觀并發控制。如果有其他進程嘗試更新某實體,而同時該實體位于以固定次數進行重新嘗試的事務中,此時該實體將更新。應用程序可以在一個事務中執行多項數據存儲區操作(全部成功或者全部失敗,從而確保數據的完整性)。
數據存儲區通過其分布式網絡使用“實體組”實現事務。一個事務操作一個組內的實體。同一組的實體存儲在一起,以高效執行事務。應用程序可以在實體創建時將實體分配到組。
Google 帳戶
App Engine 支持將應用程序與用于用戶驗證的 Google 帳戶集成。應用程序使用戶可以通過 Google 帳戶登錄,并可以訪問與該帳戶關聯的電子郵件地址和可顯示的名稱。使用 Google 帳戶使用戶可以更快地開始使用您的應用程序,因為用戶可以不需要創建新帳戶了。Google 帳戶還省去只為您的應用程序實現用戶帳戶系統的麻煩。
如果您的應用程序正在 Google 企業應用套件下運行,則它可以與您組織的成員和 Google 企業應用套件帳戶成員使用相同的功能。
用戶 API 還可告知應用程序當前用戶是否是應用程序的注冊管理員。這樣便可以輕松實現您站點上僅管理員可訪問的區域。
什么是GAE:App Engine 服務
App Engine 提供了多種服務,從而可讓您在管理應用程序的同時執行常規操作。提供了以下 API 以訪問這些服務:
網址抓取
應用程序可以使用 App Engine 的網址抓取服務訪問互聯網上的資源,例如網絡服務或其他數據。網址抓取服務使用檢索許多其他 Google 產品的網頁的高速 Google 基礎架構來檢索網絡資源。
郵件
應用程序可以使用 App Engine 的郵件服務發送電子郵件。郵件服務使用 Google 基礎架構發送電子郵件。
Memcache
Memcache 服務為您的應用程序提供了高性能的內存鍵值緩存,您可通過應用程序的多個實例訪問該緩存。Memcache 對于那些不需要數據存儲區的持久性存儲和事務功能的數據(例如臨時數據或從數據存儲區復制到緩存以進行高速訪問的數據)很有用。
圖像操作
圖像服務使您的應用程序可以對圖像進行操作。使用該 API,您可以對 JPEG 和 PNG 格式的圖像進行縮放、裁剪、旋轉和翻轉。
計劃任務
Cron 服務允許您將任務計劃為按指定間隔運行。有關此服務的詳細信息,請參閱 Python 或 Java cron 文檔。
開發工作流
分別針對 Java 和 Python 的 App Engine 軟件開發工具包 (SDK) 包括可以在您的本地計算機上模擬所有 App Engine 服務的網絡服務器應用程序。每一 SDK 均包括 App Engine 中的所有 API 和庫。該網絡服務器還可以模擬安全沙盒環境,包括檢查是否嘗試訪問在 App Engine 運行時環境下不允許的系統資源。
SDK 還包括可將您的應用程序上傳到 App Engine 的工具。創建了您的應用程序的代碼、靜態文件和配置文件后,即可運行該工具上傳數據。該工具會提示您提供 Google 帳戶電子郵件地址和密碼。
構建已在 App Engine 上運行的應用程序的新主要發行版時,可以將新發行版作為新版本上傳。在您改為使用新版本之前,舊版本可以繼續為用戶提供服務。可以在舊版本仍運行的同時在 App Engine 上測試新版本。
Java SDK 在具有 Java 5 或 Java 6 的任何平臺上運行。SDK 以 Zip 文件提供。如果您使用 Eclipse 開發環境,您可以使用 Eclipse Google 插件來創建、測試和上傳 App Engine 應用程序。SDK 還包括用于運行開發服務器和上傳應用程序的命令行工具。
Python SDK 通過純 Python 實現,可以在裝有 Python 2.5 的任何平臺(包括 Windows、Mac OS X 和 Linux)上運行。該 SDK 以 Zip 文件形式提供,對于 Windows 和 Mac OS X 還提供安裝程序。
管理控制臺是基于網絡的接口,用于管理在 App Engine 上運行的應用程序。您可以使用它創建新應用程序、配置域名、更改您的應用程序當前的版本、檢查訪問權限和錯誤日志以及瀏覽應用程序數據存儲區。
【編輯推薦】