Sina App Engine

來源:互聯網
上載者:User

什麼是Sina App Engine

Sina App Engine(以下簡稱SAE)是新浪研發中心于2009年8月開始內部開發,並在2009年11月3日正式推出第一個Alpha版本的國內首個公有雲計算平臺(HTTP:// sae.sina.com.cn),SAE是新浪雲計算戰略的核心組成部分。

SAE作為國內的公有雲計算,從開發伊始借鑒吸納Google、Amazon等國外公司的公有雲計算的成功技術經驗,並很快推出不同于他們的具有自身特色的雲計算平臺。 SAE選擇在國內流行最廣的Web開發語言PHP作為首選的支援語言,Web開發者可以在Linux/Mac/Windows上通過SVN、SDK或者Web版線上代碼編輯器進行開發、部署、調試,團隊開發時還可以進行成員協作, 不同的角色將對代碼、專案擁有不同的許可權;SAE提供了一系列分散式運算、存儲服務供開發者使用,包括分散式檔存儲、分散式資料庫集群、分散式緩存、分散式定時服務等,這些服務將大大降低開發者的開發成本。 同時又由於SAE整體架構的高可靠性和新浪的品牌保證,大大降低了開發者的運營風險。 另外,作為典型的雲計算,SAE採用「所付即所用,所付僅所用」的計費理念,通過日誌和統計中心精確的計算每個應用的資源消耗(包括CPU、記憶體、磁片等)。

總之,SAE就是簡單高效的分散式Web服務開發、運行平臺。

SAE的核心優勢

SAE的基本目標使用者有兩種,一種是Web開發者,另一種是普通互聯網上網人群。

對於Web開發者,SAE帶來的好處有:

· 硬體成本更低,無需預先購買設備,承擔更大的投入風險

· 開發成本更低,SAE提供許多服務供開發者使用,開發者無需重複開發,包括佇列、資料庫、緩存、定時、驗證碼、計數器,幾乎覆蓋了Web開發的所有領域。 另外對於特定開放平臺的開發者,比如新浪微博開發者,SAE已經集成了完整的OpenAPI的封裝,將開發者的開發成本降到最低。 值得一提的是,SAE的開發者目前已經形成了良好的交流氛圍,在意見回饋中樞、SAE官方群,SAE官方微群可以看到很多熱情的開發者在一起共同提高

· 運維成本更低,在SAE上的應用無需關心硬體維護、服務監控、資料容災等操作,SAE會通過其高可靠的架構和方便的監控頁面為使用者將運維成本降到最低擴充性更強,在SAE上的服務無需關心服務壓力猛增時帶來的擴容等操作, SAE自動支援服務擴展

· 更加安全可靠,SAE自動提供SQL語句性能分析、前端防攻擊、代碼檢查等功能,在SAE上的所有應用均為多機房容災部署,比傳統的部署模式更加安全可靠,並且SAE提供服務的SLA來實現對使用者服務品質的承諾

對於普通上網人群,使用SAE可以:

使用推薦應用一鍵安裝Web應用,普通使用者無需會編碼,也可以在瞬間擁有自己的團購、博客、微博、Wiki等

SAE整體架構

SAE從架構上採用分層設計,從上往下分別為反向代理層、路由邏輯層、Web計算服務池。 而從Web計算服務層延伸出SAE附屬的分散式運算型服務和分散式存儲型服務,具體又分成同步計算型服務、非同步計算型服務、持久化存儲服務、非持久化存儲服務。 各種服務統一向日誌和統計中心彙報,參考下圖:

7層反向代理層:HTTP反向代理,在最外層,負責回應使用者的HTTP請求,分析請求,並轉發到後端的Web服務池上,並提供負載均衡、健康檢查等功能。

服務路由層:邏輯層,負責根據請求的唯一標識,快速的映射(O(1)時間複雜度)到相應的Web服務池,並映射到相應的硬體路徑。 如果發現映射關係不存在或者錯誤,則給出相應的錯誤提示。 該層對使用者隱藏了很多具體位址資訊,使開發者無需關心服務的內部實際分配情況。

Web服務池:由一些不同特性的Web服務池組成。 每個Web服務池實際是由一組Apache(PHP)組成的,這些池按照不同的SLA提供不同級別的服務。 每個Web服務進程實際處理使用者的HTTP請求,進程運行在HTTP服務沙箱內,同時還內嵌同樣運行在SAE沙箱內的PHP解析引擎。 使用者的代碼最終通過介面調用各種服務。

日誌和統計中心:負責對使用者所使用的所有服務進行統計和資源計費,並設定的分鐘配額,來判定是否有非正常的使用。 分鐘配額描述了資源消耗的速度,當資源消耗的速度到達一個預警閾值時,SAE通知系統會提前向使用者發出一個警告,提醒使用者應用在某個服務上的使用可能存在問題,需要介入關注或處理,配額系統是SAE用來保證整個平臺穩定的措施之一 ;日誌中心負責將使用者所有服務的日誌匯總並備份,並提供檢索查詢服務。

各種分散式服務:SAE提供幾乎可以覆蓋Web應用開發所有方面的多種服務,使用者可以通過StdLib(可以理解為SAE PHP版的STL)很方便的調用它們。

SAE的功能

開發:

·   代碼檢查,説明檢查不良函數並説明移植

·   代碼部署

·   分散式資料庫

·   分散式檔存儲

·   分散式緩存

·   各種附屬分散式服務,包括圖像、定時、任務佇列、郵件、計數器等

·   對接多個開放平臺,如新浪微博開發平臺

·   代碼調優,通過XHProf提供

·   資料庫優化,通過RDC提供

·   團隊協作,可以邀請好友以不同的許可權加入專案

·   代碼版本管理(計畫支援)

運營:

·   應用打包,通過我們的應用嚮導進行推廣

·   日誌,包括訪問日誌、錯誤日誌等

·   資源報表,消耗SAE各項資源的統計

·   服務監控,監控各項服務狀態

·   資料移轉,包括資料庫導入、資料庫匯出等

SAE提供的服務及兩大特性

SAE提供的服務

SAE目前已經提供了十多種服務,整體上分為計算型和存儲型,計算型又包括同步計算和非同步計算,而存儲型則分為持久化存儲和非持久化存儲。 具體清單如下:

服務名稱

類型

說明

HTTP+PHP

同步計算

帶SAE沙箱的Apache和Zend為使用者提供Web計算服務

Storage

持久化存儲

提供分散式檔存儲

Memcache

非持久化存儲

提供分散式快取服務

RDC

持久化存儲

分散式資料庫集群,提供MySQL服務

TaskQueue

非同步計算

非同步離線羽量級任務佇列,HTTP方式調用

DeferredJob

非同步計算

非同步離線重量級任務佇列,系統方式調用

Counter

持久化存儲

計數器服務

RankDB

持久化存儲分散式排行榜服務

KVDB

持久化存儲分散式key/value存儲服務

Cron

非同步計算

分散式定時服務

FetchURL

同步計算

分散式抓取服務

TmpFS

非持久化存儲

提供暫存檔案存儲,檔生命週期在一個會話內,Http請求結束檔自動消失

AppConfig

提供應用配置功能,取代Apache htaccess

Mail

非同步計算

郵件發送服務

Image

同步計算

影像處理服務

XHProf

同步計算

Facebook提供的強大的PHP調優工具

SVN

持久存儲

使用者代碼部署的進入點:HTTPs://svn.sianapp.com/yourapp

Online CodeEditor

持久存儲

線上代碼編輯器,編輯的代碼保存後入自動入SVN並部署到Web伺服器

兩大特性:擴充性與可靠性

·   擴充性

SAE在服務的可擴充性上基本是動態可擴充性的思路,即資源和ID沒有強對應關係,使用者以服務消費者的身份使用SAE服務。

·   可靠性

在計算可靠性方面,SAE主要是依靠多點部署來完成可靠性,多節點的計算一致性上,SAE有分散式鎖服務提供比Paxos更好的容錯邏輯。

在資料可靠性方面,SAE的所有資料都通過冗余存儲來達到SLA。 SAE通過主動複製和被動複製來實現多點資料冗余。

SAE和虛擬主機的區別

·   傳統服務託管面向的是硬體軟體設備,消費者得到的也是設備的使用權;而SAE面向的服務,消費者得到的是服務的使用權。

·   傳統服務託管不面向開發者,開發者無法在其上享受到開發的樂趣;而SAE的一個重要使用者就是web developer,開發者可以在其上通過線上調試、日誌分析、協作共用等功能進行web開發。

    ·   傳統服務託管不提供分散式系統解決方案;而SAE提供的完整的分散式web服務的解決方案,其中不僅僅包括分散式資料庫、分散式檔案系統,更包括分散式計時器系統、網頁抓取服務、影像處理服務等。 

    ·   傳統服務託管不解決功能變數名稱問題,使用者往往煩惱于功能變數名稱申請;而SAE的使用者將自動得到在sinaapp下的次層網域,同時SAE還支援功能變數名稱cname。 

    ·   傳統服務託管無法保證SLA(Service Level Agreement),硬體故障的成本基本由消費者承擔;而SAE保證使用者的SLA,使用者的web服務自動享有高冗余的前端伺服器、享有自動負載均衡系統、服務自動擴展、 服務自動收縮等功能。 

    ·   傳統的服務託管採用預付費的方式,費用固定且和實際使用方式無直接關係;而SAE採用預充值方式,「所付即所用,所付僅所用」,web服務的一切損耗均提供報表查詢和帳單匯總,讓使用者一目了然。

    SAE公有雲計算和傳統的虛擬主機的區別如下表。

類項

SAE

VPS

核心使用者

Web開發者

無核心使用者

使用方式

服務使用

設備租用

目標

力爭覆蓋Web服務所有需求,提供多種服務給開發者使用

僅基本需求

SLA(服務承諾)

高可靠性及嚴格的服務承諾

依服務商變化,無嚴格協定

計費方式

所付即所用,所付僅所用

預付費,無精確計費

為什麼我們要做SAE

Sina App Engine專案始于2009年8月,目標為雲計算時代的分散式web服務提供一整套解決方案。 我們開發SAE主要是出於對內、對外兩方面考慮:

對內,新浪很早以前就開始了關於私有雲的開發和實踐,所以為了進一步提高公司資源的利用率,更加提高web開發的效率,降低web運營的成本,決定了我們要開發SAE。

對外,亞馬遜、Google都是國外的成功的提供公有雲計算服務的公司,SAE也想借助雲計算這樣一個趨勢,為國內廣大使用者提供雲計算的分散式web服務的開發、運行平臺。

SAE的目標和發展

雲計算雖然是個新名詞,但實際在國外已經有4、5年的歷史。 2006年,亞馬遜就推出了以EC2為代表的公有雲計算,並且已經實現了大規模盈利;2008年,Google則推出了以Google App Engine為代表的公有雲計算。 國內的雲計算卻一直是炒的很厲害,各大互聯網公司都在宣傳,但真正有技術實力做出來而又對外公開使用的少之又少。

實際從2004年開始,新浪就開始了私有雲方向的研究和實踐,以此為基礎的動態應用平臺目前已經支撐新浪內部的絕大部分業務。 從2008年起,新浪又啟動了「浪雲」的公有雲計算計畫,相繼開發了分散式佇列服務、P2P檔案系統、分散式運算框架等一系列基礎服務。 實際SAE就是「浪雲」戰略的產物。

SAE從架構設計和代碼編寫開始,就明確了自身的兩個目標:

· 做公有雲計算平臺。 公有雲不同于私有雲,更強調安全性和可靠性,這也對整體的架構設計和技術實現提出了更苛刻的要求

· 為分散式Web服務提供一整套的解決方案。 SAE爭取提供開發者開發Web應用過程中所用到的所有服務。

經過技術團隊一年的開發,SAE目前已經提供了十多種服務,整體上分為計算型和存儲型,計算型又包括同步計算和非同步計算,而存儲型則分為持久化存儲和非持久化存儲。 具體清單如下:

SAE在2009年11月3日發佈了Alpha1版本,2010年2月1日發佈了Alpha2版本,2010年9月1日發佈了Beta版本,2011年5月17日正式開放註冊。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.