當(dāng)應(yīng)用創(chuàng)建一個實(shí)體時,它可以分配另一個實(shí)體作為新實(shí)體的父。給一個新實(shí)體分配父時,將使它進(jìn)入父實(shí)體所在的實(shí)體組。
沒有父的實(shí)體是根實(shí)體。一個實(shí)體的父實(shí)體也可以有父。從一個實(shí)體到根的父實(shí)體鏈就是這個實(shí)體的路徑,路徑的成員是實(shí)體的祖先。實(shí)體的父只能在創(chuàng)建時定義,之后就不能修改。
祖先是同一根實(shí)體的所有實(shí)體都在相同的實(shí)體組中,組中的所有實(shí)體存儲在同一Datastore節(jié)點(diǎn)中。單個事務(wù)可以修改單個組中的多個實(shí)體,或通過將組中現(xiàn)有實(shí)體變成為新實(shí)體的父來把一個新實(shí)體加到組中。
因?yàn)锳pp Engine迫使你以一種特殊的方式(如Datastore on BigTable,而不是數(shù)據(jù)庫)來處理你的開發(fā),Google聲稱你的應(yīng)用將更易于伸縮,而且這種伸縮性幾乎是透明的:
當(dāng)一個Web應(yīng)用變得流行起來時,突如其來的流量可以壓垮各種規(guī)模的應(yīng)用,從創(chuàng)業(yè)公司到大公司都發(fā)現(xiàn)需要一年幾次的重新架構(gòu)他們的數(shù)據(jù)庫和整個應(yīng)用。通過自動復(fù)制和負(fù)載均衡,利用Bigtable和Google的可伸縮基礎(chǔ)設(shè)施中的其他組件,Google App Engine使得應(yīng)用可以從一個用戶伸縮到百萬級用戶。
User API允許通過Google帳號進(jìn)行用戶驗(yàn)證和登錄,以及訪問帳號的綽號和郵件。其他更多的用戶信息可以從應(yīng)用保存在Datastore中的用戶信息直接獲取。
URL fetch API能通過提取HTTP和HTTPs URL(支持GET、POST、HEAD、PUT和DELETE,因此這似乎可以支持REST功能)檢索遠(yuǎn)程服務(wù)器的信息。
Mail API允許App Engine應(yīng)用異步發(fā)送郵件,如果郵件服務(wù)器不可用時允許重試。
App Engine SDK包含模擬App Engine Python運(yùn)行時環(huán)境的服務(wù)器,以及:
- 模擬模塊引入限制,只允許處理程序引入被許可的模塊,它們來自標(biāo)準(zhǔn)庫、包含在App Engine Python環(huán)境中的第三方庫,以及應(yīng)用目錄中的模塊
- 模擬應(yīng)用緩沖行為
- 使用本地文件模擬App Engine Datastore
- 模擬包含有登錄和注銷頁面的Google帳號,登錄參數(shù)可以是任何郵件地址。
- 通過提取你計(jì)算機(jī)的URL模擬URL fetch服務(wù)
- 使用你選擇的SMTP服務(wù)器或Sendmail配置模擬郵件服務(wù)
乍一看,絕大多數(shù)的應(yīng)用配置似乎可用YAML來寫。
動機(jī)和競爭
Google的公告稱他們的動機(jī)是,簡化Web應(yīng)用的構(gòu)建、部署和伸縮性:
嗯,我們構(gòu)建Web應(yīng)用是因?yàn)槲覀兿胍嗟腤eb應(yīng)用被創(chuàng)建出來。我們注意到,目前創(chuàng)建一個Web應(yīng)用真的很難:即使部署一個最簡單的Web應(yīng)用也有巨大的前端挑戰(zhàn)。你需要做很多事情。當(dāng)然,首先你必須為你的應(yīng)用編寫代碼。
但是接著,你還需書寫你的Apache Web服務(wù)器配置和啟動腳本,安裝你的數(shù)據(jù)庫,創(chuàng)建所有表和設(shè)置口令,安裝監(jiān)視器來了解你的流量和日志,決定你如何推出代碼的新版本等等。
那只是我們注意到的技術(shù)方面的挑戰(zhàn)。然后,一旦你完成了所有那些系統(tǒng)管理員的工作,你就有了另一個挑戰(zhàn):你必須著手去找你能使用的機(jī)器來運(yùn)行你的應(yīng)用,不論是物理的還是虛擬的提供商?,F(xiàn)在,就要花錢了:即使是最簡單的應(yīng)用,一周用幾次,你都必須支付一大筆預(yù)支費(fèi)用來讓它在一個傳統(tǒng)主機(jī)托管提供商處運(yùn)行。
那么,這就是財(cái)務(wù)或物理方面的挑戰(zhàn)。然后,一旦你搞定了整件事情并且運(yùn)行了,而且找到地方并為此付費(fèi)來測試它,你又面臨了另一個挑戰(zhàn):隨著你應(yīng)用的成長,你必須去維護(hù)它。你的機(jī)器崩潰了,你的配置有錯誤,你的硬盤壞了,你的流量開始增長,你必須重新分享你的數(shù)據(jù)庫,安裝更多更多的機(jī)器。隨著應(yīng)用的成長,任何事情都象是一場激戰(zhàn)。
所有這些激戰(zhàn)正是我們試圖通過App Engine避免的。它們是我們正試圖解決的問題。
其他人已經(jīng)揣測出了言外之意。很多人指出了Google與Amazon和微軟在未來云計(jì)算和Web服務(wù)方面的競爭,常常將App Engine與Amazon的Web服務(wù)EC2、S3、SQS 更多詳細(xì)信息,請您微信關(guān)注“計(jì)算網(wǎng)”公眾號: