Google應用服務引擎

Google應用服務引擎是一個開發、代管網路應用程式的平台,使用Google管理的資料中心。它在2008年4月發布了第一個beta版本。

Google應用服務引擎
開發者Google
首次發布2008年4月7日,​16年前​(2008-04-07
目前版本1.9.51(2017年3月29日 (2017-03-29)
程式語言PythonJavaGoPHP, Node.js
作業系統linux (glibc)、Windows
平台little-endian 32bits
類型Web應用框架雲端運算
許可協定專有軟體LGPL
網站cloud.google.com/appengine/

Google應用服務引擎使用了雲端運算技術。它跨越多個伺服器和資料中心來虛擬化應用程式。[1]

Google應用服務引擎在使用者使用一定的資源時是免費的。支付額外的費用可以獲得應用程式所需的更多的儲存空間、頻寬或是CPU負載。[2]

支援的程式語言和框架

當前,Google應用服務引擎支援的程式語言PythonJavaPHPGo(通過擴充,可以支援其他JVM語言,諸如GroovyJRubyScalaClojure)。支援DjangoWebObPyYAML的有限版本。Google說它準備在未來支援更多的語言,Google應用服務引擎也將會獨立於某種語言。任何支援WSGI的使用CGI的Python框架可以使用。框架可以與開發出的應用程式一同上傳,也可以上傳使用Python編寫的第三方庫。[3][4]

與其他應用程式代管的區別

與其他可延伸的代管服務(例如Amazon EC2)比較,App Engine提供了更多基礎服務來方便編寫可延伸的應用程式,但僅限於App Engine設計框架以內的應用程式。

App Engine的基礎服務省卻了許多系統管理的操作,以便將規模擴大到數以百萬計的訪問。Google負責處理一組代碼,可以監測、容錯,在必要的時候還會開發一些應用實例。

有些應用程式代管服務讓使用者安裝、組態幾乎所有*NIX相容的軟體,而App Engine則要求開發者使用PythonJava語言來編程,而且只能使用一套限定的API。當前的API允許程式於一個BigTable非關聯式資料庫上儲存和檢索資料、提出HTTP請求、傳送E-mail、處理圖像、還有快取。大多數現存的Web應用程式,若未經修改,均不能直接在App Engine上執行,因為它們需要使用關聯式資料庫

頻寬和CPU的使用、送達請求的數量、並行請求的數量、以及呼叫各種API的次數,皆設有每天和每分鐘的限額。個別的請求,如果需時超過30秒或返回超過10MB的資料,都會被終止。

SQL與GQL的區別

Google應用服務引擎的Datastore使用一個與SQL類似的語言,叫做「GQL」。在GQL中,SELECT語句僅可以用於一個表。因為要跨越不只一台機器, GQL不支援效率很低的JOIN語句[5]。欲建立一對多和多對多的關係,可使用ReferenceProperty()[6]。採用這種無共享的方式,即使磁碟壞了,系統也不致癱瘓[7]

在GQL中,SELECT語句中的WHERE從句只容許對僅僅一列進行>、>=、<或<=比較。所以,僅僅可以構造簡單的WHERE從句。在資料建模時,要從關聯式資料庫轉換到Datastore,開發者需要轉變觀念。

App Engine限制每次Datastore請求最多返回1000行資料。大多數Web應用程式,都不會受此影響,因為它們通常並不會在一張頁面上列出超過1000條記錄(可以用分頁和快取機制),只要按順序返回結果就可以了。若有應用程式需要在一次操作中返回更多的記錄,則需自行使用客戶端軟體或者Ajax頁面,按查詢順序提取更多條記錄。

這個Datastore的API是不關聯的,有別於一般關聯式資料庫——比如IBM DB2Microsoft SQL ServerMySQLOracle資料庫、或者PostgreSQL

限制

  • 在App Engine的檔案系統中,開發者只有讀取的權限。
  • App Engine僅可在回應HTTP請求時執行代碼(計劃的後台任務、任務佇列和XMPP服務則不在此限)。
  • 使用者可以上傳任意的Python模組,但必須是純Python模組,不得包含C擴充程式或其他需要編譯的代碼。
  • App Engine限制每次Datastore請求最多返回1000行資料。
  • Java應用程式只能使用JRE基本版本類別館中的一個子集(JRE類白名單頁面存檔備份,存於網際網路檔案館))[8]
  • Java應用程式不能新增的執行緒。

可移植性

開發者擔心App Engine應用程式不能移植到其他平台上,因而被困在單一種技術(Vendor lock-in)之內。[9]

從App Engine下載資料

App Engine自SDK1.2.2版開始,已容許以批次的方式下載資料[10]。此外,使用者也可使用開源專案gaebar[11]、approcket[12] 和gawsh[13] 來下載、備份在App Engine上的資料。

限額

免費帳戶使用App Engine時,受配額限制。應用程式作者可以視乎需要,付錢購買更多配額。[14]

硬性限制

項目 限制
每次請求的時間 普通請求60秒,任務請求10分鐘,後台請求無限
每個應用程式的檔案 1000個
HTTP回應的大小 32 MB
Datastore單項大小 1 MB
應用程式代碼大小 150 MB

免費的配額

供免費使用的配額曾於2009年5月25日[15] 、2009年6月22日以及2011年5月三度下調[16]

項目 配額
每天的Email數量 100封
每天的輸入數據 無限
每天的輸出數據 1 GB
每天可使用CPU 28小時
每天呼叫Datastore API次數 50000次*
資料儲存 1 GB
每天呼叫URLFetch API次數 657000次*

競爭對手

Google應用服務引擎與Amazon Web Services(一個應用程式服務系統,支援在Amazon的伺服器上代管檔案、執行代碼)直接競爭。不少科技分析師早在多年前已預計過,Google會加入這場競賽。其中,Techdirt的出版人Mike Masnick寫到,「Google終於了解到它需要覇佔網路平台這個地位。我們可以期待,開發及落實易於擴充的網路應用程式會變得越來越容易,而應用程式也會越來越具創意。」[17]

此外,紅帽公司openshift微軟Azure服務平台以及 Koding 也是Google應用服務引擎的競爭對手。

中華人民共和國封鎖

由於Google應用服務引擎允許使用者代管網路應用程式,且伺服器不在中華人民共和國境內,故有部分使用者利用其搭建代理(如GoAgent)用於突破防火長城審查[18],故Google應用服務引擎的域名 *.appspot.com 的SSL加密連接長期遭到防火長城的封鎖。

  • 2010年12月20日,Google應用服務引擎的域名 appspot.com 遭到防火長城的關鍵詞過濾封鎖。由於先前Google應用服務引擎的SSL連接已經被封,故中華人民共和國境內的使用者無法正常連接與使用。此次Google應用服務引擎被封鎖適逢2010年諾貝爾和平獎頒獎典禮。appspot.com非加密連接於2010年12月23日解封。
  • 2011年3月兩會召開前夕,appspot.com 再次遭到防火長城的關鍵詞過濾封鎖及域名污染,同時部分伺服器的IP位址亦遭到徹底封鎖,甚至兩會結束後至今亦沒有解封。
  • 至今appspot.com仍遭到DNS投毒污染URL域名關鍵詞過濾和伺服器IP位址封鎖三重封鎖,無法從中華人民共和國正常訪問[19],但也仍有一些軟體或使用者通過修改本機Hosts等方法繞過封鎖以使用GAE。

參考文獻

  1. ^ Python Runtime Environment. Google Developers. 11 December 2014 [2009-07-15]. (原始內容存檔於2012-03-12). 
  2. ^ Quotas. Google Developers. 12 January 2015 [2009-07-15]. (原始內容存檔於2012-03-14). 
  3. ^ What Is Google App Engine?. Google Developers. 9 December 2014 [2009-07-15]. (原始內容存檔於2011-03-23). 
  4. ^ webapp Overview. Google Developers. 22 September 2014 [2009-07-15]. (原始內容存檔於2012-03-15). 
  5. ^ Campfire One: Introducing Google App Engine (pt. 3). YouTube. 7 April 2008 [2009-07-15]. (原始內容存檔於2017-07-31). 
  6. ^ Modeling Entity Relationships. Google Developers. 22 September 2014 [2009-07-15]. (原始內容存檔於2012-02-25). 
  7. ^ Google Architecture - High Scalability -. highscalability.com. [2009-07-15]. (原始內容存檔於2021-01-09). 
  8. ^ The JRE Class White List. Google Developers. 22 September 2014 [2009-07-15]. (原始內容存檔於2012-02-19). 
  9. ^ Analysis: Google App Engine alluring, will be hard to escape. Ars Technica. [2009-07-15]. (原始內容存檔於2011-07-16). 
  10. ^ Backup/Restore, Copy, and Delete Data. Google Developers. 27 January 2015 [2009-07-15]. (原始內容存檔於2012-03-12). 
  11. ^ aral/gaebar. GitHub. [2009-07-15]. (原始內容存檔於2017-07-29). 
  12. ^ approcket - Live synchronization between AppEngine and MySQL - Google Project Hosting. google.com. [2009-07-15]. (原始內容存檔於2016-01-23). 
  13. ^ gawsh - Google Apps Web Service Helpers - Google Project Hosting. google.com. [2009-07-15]. (原始內容存檔於2016-01-23). 
  14. ^ Understanding Application Quotas with Google App Engine. [2008-09-10]. (原始內容存檔於2008-12-18). 
  15. ^ Google, Inc., Upcoming Changes to the Free Quotas頁面存檔備份,存於網際網路檔案館)——於2009年2月26日覆閱過
  16. ^ Google, Inc., [1]頁面存檔備份,存於網際網路檔案館) 於2009年6月17日覆閱過
  17. ^ Google Finally Realizes It Needs To Be The Web Platform. 2008-04-07 [2008-04-12]. (原始內容存檔於2018-03-13). 
  18. ^ GAppProxy. [2011-02-09]. (原始內容存檔於2016-01-17). GTAP. [2011-02-09]. (原始內容存檔於2016-01-12). 
  19. ^ Test Result for appspot.com. Greatfire.org. [2021-04-17]. (原始內容存檔於2021-04-17). 

外部連結