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

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
探索Google App Engine背后的奧秘(3)- Google App Engine的簡(jiǎn)介
按:此為客座博文系列。投稿人吳朱華曾在IBM中國(guó)研究院從事與云計(jì)算相關(guān)的研究,現(xiàn)在正致力于研究云計(jì)算技術(shù)。

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

Google App Engine的介紹

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

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

功能

在功能上,主要有六個(gè)方面:

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

使用流程

整個(gè)使用流程主要包括五個(gè)步驟:

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

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

Google App Engine的主要組成部分

主要可分為五部分:

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

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

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

Python的實(shí)現(xiàn)

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

Java的實(shí)現(xiàn)

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

Datastore

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

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

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

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

服務(wù)

Memcache

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

URL抓?。‵etch)

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

Email

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

計(jì)劃任務(wù)(Cron)

計(jì)劃服務(wù)允許應(yīng)用在指定時(shí)間或按指定間隔執(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)來驗(yàn)證用戶。App Engine還將支持OAuth。

XMPP

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

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

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

Blobstore

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

Mapper

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

Channel

其實(shí)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. 管理界面(點(diǎn)擊看大圖)

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

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

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

編程模型

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

限制和資費(fèi)

首先,談一下App Engine的使用限制,具體請(qǐng)看下表:

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

表1. App Engine的使用限制

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

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

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

表2. App Engine的免費(fèi)額度表

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

本篇結(jié)束,下篇將對(duì)App Engine的架構(gòu)進(jìn)行介紹。

--EOF--


本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Google App Engine的簡(jiǎn)介 - 搜索引擎技術(shù) - 數(shù)據(jù)挖掘研究院 - Chi...
Google App Engine網(wǎng)絡(luò)應(yīng)用程序
什么是 Google App Engine?
Google GAE 搭建博客,谷迷們千萬別錯(cuò)過!
Google App Engine 6步上手教程
App Engine:在Google上托管你的應(yīng)用
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服