你是正確的:你是不是儘可能多的控制與傳統的主機。不過,希望漲幅超過負面。 App Engine具有極高的可擴展性 - 它運行在運行Google本身的相同硬件上。您多久訪問一次http://google.com並且該頁面或搜索結果失敗?
儘管您讓Google運行您的代碼,但代碼仍然是您可以隨心所欲的操作。通過像django-nonrel這樣的新項目,您可以直接在App Engine上創建並運行原生Django應用程序,並且如果它不能滿足您的需求,那麼將該應用程序轉移到承載主機的ISP相當容易Django應用程序(其中有很多)。下面詳細介紹這個項目。
您不必擔心硬件,操作系統,機器映像,數據庫,Web服務器,前端負載平衡器,CDN /邊緣緩存,軟件/軟件包升級,許可費用等。所有這些都與您已經或將要解決特定問題的網絡或其他應用程序相關。無論您是否喜歡,所有這些額外的基礎設施都需要;但通過App Engine,您只需考慮應用/解決方案,而不需要額外的東西。
顯然你失去的另一件事是你的一些執行環境。確保您與您的雲鄰居(資源佔用,安全問題等)良好地協作),您必須在沙盒中執行,這意味着您的應用無法創建本地文件,打開網絡套接字等。不過,App Engine提供了豐富的API和產品功能,因此您至少可以創建有意義的應用:
- 可擴展的分佈式對象數據存儲區(參見下文)
- 內存緩存
- 的URLFetch
- 圖像服務(調整大小,裁剪等)
- 用戶的服務/認證任務隊列後臺處理
- Django的網站模板
- Blob存儲大文件
- 拒絕服務黑名單
- transational任務
- 數據存儲光標
- 電子郵件的發送(和/或接收)
- 發送(和/或接收)的聊天/ IM /即時消息通過XMPP
你也有一個完整的dashboarded管理控制檯,它可以讓你監控你的應用程序的使用情況,喲您的帳單設置和歷史記錄,完整的配額使用情況轉儲,甚至您可以查看或下載的應用程序日誌。
要從@Anurag解決 「主瘡點」:
1a上。免費配額相當慷慨......足以推動每月獲得5MM觀看次數的網站。另外,如果您信任Google給他們您的信用卡,他們會提高免費配額水平,即使更高。請看their quota page並參考「自由默認配額」和「計費啓用默認配額」列中的數字......以下是一些示例:a)請求數:默認爲1.3MM,帶計費的43MM啓用(wBE),b)數據存儲API調用:10MM默認值,140MM wBE,c)URL獲取:657K默認值,46MM wBE
1b。請求最多30秒:這對您來說更安全,因爲您的應用現在與其他人一起在操場上。谷歌必須確保所有的雲鄰居能夠很好地相互協作,而不是佔用CPU。然而,App Engine團隊正在努力尋找更長時間的後臺任務......目前還沒有時間表,但是it is on the public roadmap。
1c。在App Engine上編寫聊天服務器不僅是可能的,而且很簡單。這裏有一個使用創建App Engine的XMPP API - 這是非常愚蠢的,只是回顯到他們傳遞給我們的發送者(注意,您必須已經邀請用戶聊天):
from google.appengine.api import xmpp
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
class XMPPHandler(webapp.RequestHandler):
def post(self):
msg = xmpp.Message(self.request.POST)
msg.reply("I got your msg: '%s'" % msg.body)
application = webapp.WSGIApplication([
('/_ah/xmpp/message/chat/', XMPPHandler),
], debug=True)
def main():
run_wsgi_app(application)
if __name__ == '__main__':
main()
1D。 the public roadmap是未來「[支持]瀏覽器推(彗星)通信」,所以這也來了。
2a。 「不是SQL」是Google App Engine最大的優勢之一!關係數據庫不會擴展,必須在某個時刻分割以防止RDBMS崩潰。它是是真實的,但它是稍微更難以移植,因爲它不是傳統的!基於Google Bigtable,您可以將App Engine數據存儲視爲可擴展的分佈式對象數據庫。 App Engine的讓你query the datastore using a Query object模型,或者如果你堅持,他們還提供了一個SQL-like GqlQuery interface。
2b。如django-nonrel這樣的新前衛項目,如果您創建了一個Django應用並使用它的ORM,那麼您可以使用一個純Django應用並直接在App Engine上運行它。同樣,您可以將其從App Engine中移出並直接轉移到承載Django應用程序的更傳統的ISP供應商。查詢保持完全一樣,並且您不必關心它是否執行SQL。
3a。長期運行的流程已經在上面的1b中討論過了。谷歌是意識到這種需要並正在處理它。
3b。 TaskQueue API支持10萬個電話,但是這被撞到1MM wBE ......這是每天的基礎。
3c。 Google強烈鼓勵將任務分解爲多個子任務。低延遲應用程序被認爲不會「佔用系統」,並且比那些速度慢並且從雲鄰居消耗更多資源的應用程序得到更好的處理。
謝謝你,雖然我已經瞭解技術限制/偏好/要求,我很滿意他們。我最關心的問題是https://groups.google.com/group/google-appengine/browse_thread/thread/a7640a2743922dcf。儘管Google在解釋問題方面可能比大多數人都擅長,但就像你所說的那樣,這很可能不會發生。但是如果這樣的事情再次發生,在停機時間裏,沒有人會打電話給你,只能坐下來等着。你對此有何看法? – 2010-04-22 07:28:03
你有一個好點,我們在雲計算的時代還處於早期。然而,我認爲他們的後驗是相當全面的,並且團隊正在努力確保這些東西很少(如果有的話)在未來發生。 當發生宕機時,您不需要打電話給某人,因爲某人*必須*已被分頁......這樣的系統不會在沒有Google不知情的情況下發生。如果您確實需要聯繫Google,則可以在此創建新的製作問題:http://code.google.com/p/googleappengine/issues/entry – wescpy 2010-04-22 09:02:06