国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Google App Engine的簡介 - 搜索引擎技術(shù) - 數(shù)據(jù)挖掘研究院 - Chi...

Google App Engine的簡介

2010-6-16 12:54| 發(fā)布者: downpls| 查看數(shù): 3266| 評論數(shù): 0|原作者: 吳朱華

摘要: 探索Google App Engine背后的奧秘(3)- Google App Engine的簡介 24 May 通過前面兩篇介紹,大家應(yīng)該對Google強大的基礎(chǔ)設(shè)施有一定的了解。本篇開始介紹構(gòu)筑在這強大基礎(chǔ)設(shè)施之上的Google App Engine。 Goog ...

通過前面兩篇介紹,大家應(yīng)該對Google強大的基礎(chǔ)設(shè)施有一定的了解。本篇開始介紹構(gòu)筑在這強大基礎(chǔ)設(shè)施之上的Google App Engine。

Google App Engine的介紹

由于發(fā)布S3和EC2這兩個優(yōu)秀的云服務(wù),使得Amazon已經(jīng)率先在云計算市場站穩(wěn)了腳跟,而身為云計算這個浪潮的發(fā)起者之一的Google肯定不甘示弱,并在2008年四月份推出了Google App Engine這項PaaS服務(wù),雖然現(xiàn)在無法稱其為一個革命性的產(chǎn)品,但肯定是現(xiàn)在市面上最成熟,并且功能最全面的PaaS平臺。

Google App Engine 提供一整套開發(fā)組件來讓用戶輕松地在本地構(gòu)建和調(diào)試網(wǎng)絡(luò)應(yīng)用,之后能讓用戶在Google強大的基礎(chǔ)設(shè)施上部署和運行網(wǎng)絡(luò)應(yīng)用程序,并自動根據(jù)應(yīng)用所承受的負(fù)載來對應(yīng)用進(jìn)行擴(kuò)展,并免去用戶對應(yīng)用和服務(wù)器等的維護(hù)工作。同時提供大量的免費額度和靈活的資費標(biāo)準(zhǔn)。在開發(fā)語言方面,現(xiàn)支持Java和 Python這兩種語言,并為這兩種語言提供基本相同的功能和API。

功能

在功能上,主要有六個方面:

    1. 動態(tài)網(wǎng)絡(luò)服務(wù),并提供對常用網(wǎng)絡(luò)技術(shù)的支持,比如SSL等 。
    2. 持久存儲空間,并支持簡單的查詢和本地事務(wù)。
    3. 能對應(yīng)用進(jìn)行自動擴(kuò)展和負(fù)載平衡。
    4. 一套功能完整的本地開發(fā)環(huán)境,可以讓用戶在本機(jī)上對App Engine進(jìn)行開發(fā)和調(diào)試。
    5. 支持包括Email和用戶認(rèn)證等多種服務(wù)。
    6. 提供能在指定時間和定期觸發(fā)事件的計劃任務(wù)和能實現(xiàn)后臺處理的任務(wù)隊列。

 

使用流程

整個使用流程主要包括五個步驟:

    1. 下載SDK和IDE,并在本地搭建開發(fā)環(huán)境。
    2. 在本地對應(yīng)用進(jìn)行開發(fā)和調(diào)試。
    3. 使用GAE自帶上傳工具來將應(yīng)用部署到平臺上。
    4. 在管理界面中啟動這個應(yīng)用。
    5. 利用管理界面來監(jiān)控整個應(yīng)用的運行狀態(tài)和資費。

 

由于本系列是專注于GAE的實現(xiàn)和設(shè)計兩方面,所以不會對GAE的使用有非常深入地介紹,如果希望大家對GAE的使用方面有更深的理解,具體可以參看一下GAE的官方文檔。

 

Google App Engine的主要組成部分

主要可分為五部分:

    1. 應(yīng)用服務(wù)器:主要是用于接收來自于外部的Web請求。
    2. Datastore:主要用于對信息進(jìn)行持久化,并基于Google著名的BigTable技術(shù)。
    3. 服務(wù):除了必備的應(yīng)用服務(wù)器和Datastore之外,GAE還自帶很多服務(wù)來幫助開發(fā)者,比如:Memcache,郵件,網(wǎng)頁抓取,任務(wù)隊列,XMPP等。
    4. 管理界面:主要用于管理應(yīng)用并監(jiān)控應(yīng)用的運行狀態(tài),比如,消耗了多少資源,發(fā)送了多少郵件和應(yīng)用運行的日志等。
    5. 本地開發(fā)環(huán)境:主要是幫助用戶在本地開發(fā)和調(diào)試基于GAE的應(yīng)用,包括用于安全調(diào)試的沙盒,SDK和IDE插件等工具。 

應(yīng)用服務(wù)器

應(yīng)用服務(wù)器依據(jù)其支持語言的不同而有不同的實現(xiàn)。

Python的實現(xiàn)

Python版應(yīng)用服務(wù)器的基礎(chǔ)就是普通的Python 2.5.2版的Runtime,并考慮在在未來版本中添加對Python 3的支持,但是因為Python 3對Python而言,就好比Java2之于Java1,跨度非常大,所以引入Python3的難度很大。在Web技術(shù)方面,支持諸如 Django,CherryPy,Pylons和Web2py等Python Web框架,并自帶名為“WSGI”的CGI框架。雖然Python版應(yīng)用服務(wù)器是基于標(biāo)準(zhǔn)的Python Runtime,但是為了安全并更好地適應(yīng)App Engine的整體架構(gòu),對運行在應(yīng)用服務(wù)器內(nèi)的代碼設(shè)置了很多方面的限制,比如不能加載用C編寫Python模塊和無法創(chuàng)建Socket等。

Java的實現(xiàn)

在實現(xiàn)方面,Java版應(yīng)用服務(wù)器和Python版基本一致,也是基于標(biāo)準(zhǔn)的Java Web容器,而且選用了輕量級的Jetty技術(shù),并跑在Java 6上。通過這個Web容器不僅能運行常見的Java Web 技術(shù),包括Servlet,JSP,JSTL和GWT等,而且還能跑大多數(shù)常用的Java API(App Engine有一個The JRE Class White List來定義那些Java API能在App Engine的環(huán)境中被使用)和一些基于JVM的腳本語言,例如JavaScript,Ruby或Scala等,但同樣無法創(chuàng)建Socket和 Thread,或者對文件進(jìn)行讀寫,也不支持一些比較高階的API和框架,包括JDBC,JSF,Struts 2,RMI,JAX-RPC和Hibernate等。 
 

Datastore

Datastore提供了一整套強大的分布式數(shù)據(jù)存儲和查詢服務(wù),并能通過水平擴(kuò)展來支撐海量的數(shù)據(jù)。但Datastore并不是傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,它主要以“Entity”的形式存儲數(shù)據(jù),一個Entity包括一個Kind(在概念上和數(shù)據(jù)庫的Table比較類似)和一系列屬性。

Datastore提供強一致性和樂觀(optimistic)同步控制,而在事務(wù)方面,則支持本地事務(wù),也就是在只能同一個Entity Group內(nèi)執(zhí)行事務(wù)。

在接口方面,Python版提供了非常豐富的接口,而且還包括名為GQL的查詢語言,而Java版則提供了標(biāo)準(zhǔn)的JDO和JPA這兩套API。

而且Google已經(jīng)在今年的Google I/O大會上宣布將在未來的App Engine for Business套件中包含標(biāo)準(zhǔn)的SQL數(shù)據(jù)庫服務(wù),但現(xiàn)在還不確定這個SQL數(shù)據(jù)庫的實現(xiàn)方式,是基于開源的MySQL技術(shù),還是基于其私有的實現(xiàn),這是一個問題。

 

服務(wù)

Memcache

Memcache是大中型網(wǎng)站所備的服務(wù),主要用來在內(nèi)存中存儲常用的數(shù)據(jù),而App Engine也包含了這個服務(wù)。有趣的是App Engine的Memcache也是由Brad Fitzpatrick開發(fā)。

URL抓取(Fetch)

App Engine的應(yīng)用可以通過URL抓取這個服務(wù)抓取網(wǎng)上的資源,并可以這個服務(wù)來與其他主機(jī)進(jìn)行通信。這樣避免了應(yīng)用在Python和Java環(huán)境中無法使用Socket的尷尬。

Email

App Engine應(yīng)用使用這個服務(wù)來利用Gmail的基礎(chǔ)設(shè)施來發(fā)送電子郵件。

計劃任務(wù)(Cron)

計劃服務(wù)允許應(yīng)用在指定時間或按指定間隔執(zhí)行其設(shè)定的任務(wù)。這些任務(wù)通常稱為Cron job。

圖形

App Engine 提供了使用專用圖像服務(wù)來操作圖像數(shù)據(jù)的功能。圖像服務(wù)可以調(diào)整圖像大小,旋轉(zhuǎn)、翻轉(zhuǎn)和裁剪圖像。它還能夠使用預(yù)先定義的算法提升圖片的質(zhì)量。

用戶認(rèn)證

App Engine的應(yīng)用可以依賴Google帳戶系統(tǒng)來驗證用戶。App Engine還將支持OAuth。

XMPP

在App Engine上運行的程序能利用XMPP服務(wù)和其他兼容XMPP的IM服務(wù)(比如Google Talk)進(jìn)行通信。

任務(wù)隊列(Task Queue)

App Engine應(yīng)用能通過在一個隊列插入任務(wù)(以Web Hook的形式)來實現(xiàn)后臺處理,而且App Engine會根據(jù)調(diào)度方面的設(shè)置來安排這個隊列里面的任務(wù)執(zhí)行。

Blobstore

因為Datastore最多支持存儲1MB大小的數(shù)據(jù)對象,所以App Engine推出了Blobstore服務(wù)來存儲和調(diào)用那些大于1MB但小于2G的二進(jìn)制數(shù)據(jù)對象。

Mapper

Mapper可以認(rèn)為就是“Map Reduce”中的Map,也就是能通過Mapper API對大規(guī)模的數(shù)據(jù)進(jìn)行平行的處理,這些數(shù)據(jù)可以存儲在Datastore或者Blobstore,但這個功能還處于內(nèi)部開發(fā)階段。

Channel

其實Channel就是我們常說的“Comet”,通過Channel API能讓應(yīng)用將內(nèi)容直接推至用戶的瀏覽器,而不需常見的輪詢。

 

除了Java版的Memcache,Email和URL抓取都是采用標(biāo)準(zhǔn)的API之外,其他服務(wù)無論是Java版還是Python版,其API都是私有的,但是提供了豐富和細(xì)致的文檔來幫助用戶使用。

 

管理界面

用了讓用戶更好地管理應(yīng)用,Google提供了一整套完善的管理界面,地址是http://appengine.google.com/ ,而且只需用戶的Google帳戶就能登錄和使用。下圖為其截屏:

圖1. 管理界面(點擊看大圖)

使用這個管理界面可執(zhí)行許多操作,包括創(chuàng)建新的應(yīng)用程序,為這個應(yīng)用設(shè)置域名,查看與訪問數(shù)據(jù)和錯誤相關(guān)的日志,觀察主要資源的使用狀況。

 

本地開發(fā)環(huán)境

為了安全起見,本地開發(fā)環(huán)境采用了沙箱(Sandbox)模式,基本上和上面提到的應(yīng)用服務(wù)器的限制差不多,比如無法創(chuàng)建Socket和 Thread,也無法對文件進(jìn)行讀寫。Python版App Engine SDK是以普通的應(yīng)用程序的形式發(fā)布,本地需要安裝相應(yīng)的Python Runtime,通過命令行方式啟動Python版的Sandbox,同時也可以在安裝有PyDev插件的Eclipse上啟動。Java版App Engine SDK是以Eclispe Plugin形式發(fā)布,只要用戶在他的Eclipse上安裝這個Plugin,用戶就能啟動本地Java沙箱來開發(fā)和調(diào)試應(yīng)用。

 

編程模型

因為App Engine主要為了支撐Web應(yīng)用而存在,所以Web層編程模型對于App Engine也是最關(guān)鍵的。App Engine主要使用的Web模型是CGI,CGI全稱為“Common Gateway Interface”,它的意思非常簡單,就是收到一個請求,起一個進(jìn)程或者線程來處理這個請求,當(dāng)處理結(jié)束后這個進(jìn)程或者線程自動關(guān)閉,之后是不斷地重復(fù)這個流程。由于CGI這種方式每次處理的時候,都要重新起一個新的進(jìn)程或者線程,可以說在資源消耗方面還是很厲害的,雖然有線程池(Thread Pool)這樣的優(yōu)化技術(shù)。但是由于CGI在架構(gòu)上的簡單性使其成為GAE首選的編程模型,同時由于CGI支持無狀態(tài)模式,所以也在伸縮性方面非常有優(yōu)勢。而且App Engine的兩個語言版本都自帶一個CGI框架:在Python平臺為WSGI。在Java平臺則為經(jīng)典的Servlet。最近,由于App Engine引入了計劃任務(wù)和任務(wù)隊列這兩個特性,所以App Engine已經(jīng)支持計劃任務(wù)和后臺進(jìn)程這兩種編程模型。

 

限制和資費

首先,談一下App Engine的使用限制,具體請看下表:

類別 限制
每個開發(fā)者所擁有的項目 10個
每個項目的文件數(shù) 1000個
每個項目代碼的大小 150MB
每個請求最多執(zhí)行時間 30秒
Blobstore(二進(jìn)制存儲)的大小 1GB
HTTP Response的大小 10MB
Datastore中每個對象的大小 1MB

表1. App Engine的使用限制

雖然這些限制對開發(fā)者是一種障礙,但對App Engine這樣的多租戶環(huán)境而且卻是非常重要的,因為如果一個租戶的應(yīng)用消耗過多的資源的話,將會影響到在臨近應(yīng)用的正常使用,而App Engine上面這些限制就是為了是運行在其平臺上面應(yīng)用能安全地運行著想,避免了一個吞噬資源或惡性的應(yīng)用影響到臨近應(yīng)用的情況。除了安全的方面考慮之后,還有伸縮的原因,也就是說,當(dāng)一個應(yīng)用的所占空間(footprint)處于比較低的狀態(tài),比如少于1000個文件和大小低于150MB等,那么能夠非常方便地通過復(fù)制應(yīng)用來實現(xiàn)伸縮。

接著,談一下資費情況,App Engine的資費情況主要有兩個特點:其一是免費額度高,現(xiàn)有免費的額度能支撐一個中型網(wǎng)站的運行,且不需付任何費用。其二是資費項目非常細(xì)粒度,普通 IaaS服務(wù)資費,主要就是CPU,內(nèi)存,硬盤和網(wǎng)絡(luò)帶寬這四項,而App Engine則除了常見的CPU和網(wǎng)絡(luò)帶寬這兩項之外,還包括很多應(yīng)用級別的項目,比如:Datastore API和郵件API的調(diào)用次數(shù)等。具體資費的機(jī)制是這樣的:如果用戶的應(yīng)用每天消費的各種資源都低于這個額度,那們用戶無需支付任何費用,但是當(dāng)免費額度被超過的時候,用戶就需要為超過的部分付費。因為App Engine整套資費標(biāo)準(zhǔn)比較復(fù)雜,所以在這里就主要介紹一下它的免費額度,具體請看下表:

類型 數(shù)量(每天)
郵件API調(diào)用 7000次
傳出(outbound)帶寬 10G
傳入(inbound)帶寬 10G
CPU時間 46個小時
HTTP請求 130萬次
Datastore API 1000萬次
存儲的數(shù)據(jù) 1G
URL抓取的API 657千次

表2. App Engine的免費額度表

從上面免費額度來看,除了存儲數(shù)據(jù)的容量外,其它都是非常強大的。 

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
探索Google App Engine背后的奧秘(3)- Google App Engine的簡介
Google App Engine網(wǎng)絡(luò)應(yīng)用程序
Google App Engine 的傻瓜用法
什么是 Google App Engine?
Google GAE 搭建博客,谷迷們千萬別錯過!
將你的Web應(yīng)用免費部署到云端
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服