Sina App Engine 介绍
什么是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或者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的線路特性
?
SAE平臺出口IP:
220.181.129.126
220.181.129.121
220.181.136.229
220.181.136.230
220.181.129.93
220.181.129.102
220.181.129.117
220.181.129.90
?
?
http接口方需要IP授權可以進行相應的設置。
?
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 |
| | 異步計算 | 郵件發送服務 |
| Image | 同步計算 | 圖像處理服務 |
| XHProf | 同步計算 | Facebook提供的強大的PHP調優工具 |
| SVN | 持久存儲 | 用戶代碼部署的入口點:https://svn.sinaapp.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日正式開放注冊。
?
加入SAE
SAE重視每一名Web開發者和普通用戶,SAE堅信:
“SAE的未來取決于能否幫助Web開發者實現其價值體現,取決于是否能和Web開發者實現雙贏的良性循環,并最終為互聯網所有用戶提供高質量的有價值的應用和服務。”
所以SAE歡迎更多的Web開發者參與,并且歡迎一切喜歡熱愛SAE的有志之士能夠親身的參與到SAE整體架構和技術研發中來(簡歷投遞請關注我們的官方微博http://t.sina.com.cn/saet和博客http://blog.sae.sina.com.cn),讓我們一起搭建SAE的未來!
轉載于:https://www.cnblogs.com/QIAOYIJUN/articles/3047627.html
總結
以上是生活随笔為你收集整理的Sina App Engine 介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jQuery源码学习第二天--jQuer
- 下一篇: 高质量程序设计指南c++/c语言(17)