很早之前在Infoq上看到Heroku的介紹,不過當(dāng)時這個網(wǎng)站并沒有推出,今天在整理收藏夾的時候發(fā)現(xiàn),Heroku已經(jīng)推出一段時間,而且現(xiàn)在作為云計算平臺已經(jīng)有很快的發(fā)展了。
Heroku是Rails應(yīng)用最簡單的部署平臺。只是簡單的把代碼放進(jìn)去,然后啟動、運(yùn)行,沒人會做不到這些。Heroku會處理一切,從版本控制到 自動伸縮的協(xié)作(基于Amazon的EC2之上)。我們提供一整套工具來開發(fā)和管理應(yīng)用,不管是通過Web接口還是新的擴(kuò)展API。
HeroKu的架構(gòu)大部分是采用開源的架構(gòu)來實(shí)現(xiàn)的,:)其實(shí)構(gòu)建云計算平臺,開源的世界已經(jīng)解決一切了,不是嗎?下面看看HeroKu的架構(gòu)圖,非常漂亮:
一、反向代理服務(wù)器采用Nigix
Nigix是一個開源的,高性能的web server和支持IMAP/POP3代理的反向代理服務(wù)器,Nigix不采用多線程的方式來支持大并發(fā)處理,而是采用了一個可擴(kuò)展的Event-Driven(信號asynchronous)的網(wǎng)絡(luò)模型來實(shí)現(xiàn),解決了著名的C10K問題。
Nigix在這里用來解決Http Level的問題,包括SSL的處理,Http請求中轉(zhuǎn),Gzip的傳輸壓縮等等處理,同時應(yīng)用了多個前端的Nigix 服務(wù)器來解決DNS及負(fù)載均衡的問題。
二、Http Cache采用Varnish
Varnish is a state-of-the-art, high-performance HTTP accelerator. It uses the advanced features in Linux 2.6, FreeBSD 6/7 and Solaris 10 to achieve its high performance.
Varnish在這里主要給采用來處理靜態(tài)資源,包括對頁面的靜態(tài)化處理,圖片,CSS等等,這里請求獲取不到的再通過下一層的Routing Mess去獲取。通常還有另外一個選擇Squid,不過近幾年來,Varnish 給大型網(wǎng)站應(yīng)用的更加的多了。
三、動態(tài)路由處理層,這里采用了Erlang 實(shí)現(xiàn)的,是由該團(tuán)隊自己實(shí)現(xiàn)的,Erlang 提供了高可靠性和穩(wěn)定性的服務(wù)端實(shí)現(xiàn)能力(其實(shí),我們也可以這樣去使用),這個層主要是解決路由尋址的問題,通過合理分配動態(tài)過來的請求,跟蹤請求的負(fù)載能力,并合理的分配可獲取的下一層app 服務(wù)。這個層實(shí)現(xiàn)了對業(yè)務(wù)app的可擴(kuò)展性和容錯性,可以根據(jù)下一層服務(wù)的負(fù)載容量來合理進(jìn)行路由的選擇。原理上它是一個分布式的動態(tài)HTTP請求的路由池子。
四、動態(tài)網(wǎng)格層,用戶部署的app是部署在這一層,可以看成是一個服務(wù)器集群,只是粒度會更加的細(xì)小。
五、數(shù)據(jù)庫層,這里不用多說了
六、Memory Cache
也不需要多說,現(xiàn)在大部分互聯(lián)網(wǎng)公司都在應(yīng)用,而且基于它開發(fā)了很多好的連接器,我們公司其實(shí)也有在采用,不過我們還有自己開發(fā)的分布式內(nèi)存系統(tǒng),如原來的TTC Server,現(xiàn)在好像叫WorkBench。