很早之前在Infoq上看到Heroku的介紹,不過當(dāng)時(shí)這個(gè)網(wǎng)站并沒有推出,今天在整理收藏夾的時(shí)候發(fā)現(xiàn),Heroku已經(jīng)推出一段時(shí)間,而且現(xiàn)在作為云計(jì)算平臺(tái)已經(jīng)有很快的發(fā)展了。
Heroku是Rails應(yīng)用最簡單的部署平臺(tái)。只是簡單的把代碼放進(jìn)去,然后啟動(dòng)、運(yùn)行,沒人會(huì)做不到這些。Heroku會(huì)處理一切,從版本控制到 自動(dòng)伸縮的協(xié)作(基于Amazon的EC2之上)。我們提供一整套工具來開發(fā)和管理應(yīng)用,不管是通過Web接口還是新的擴(kuò)展API。
HeroKu的架構(gòu)大部分是采用開源的架構(gòu)來實(shí)現(xiàn)的,:)其實(shí)構(gòu)建云計(jì)算平臺(tái),開源的世界已經(jīng)解決一切了,不是嗎?下面看看HeroKu的架構(gòu)圖,非常漂亮:

一、反向代理服務(wù)器采用Nigix
Nigix是一個(gè)開源的,高性能的web server和支持IMAP/POP3代理的反向代理服務(wù)器,Nigix不采用多線程的方式來支持大并發(fā)處理,而是采用了一個(gè)可擴(kuò)展的Event-Driven(信號(hào)asynchronous)的網(wǎng)絡(luò)模型來實(shí)現(xiàn),解決了著名的C10K問題。
Nigix在這里用來解決Http Level的問題,包括SSL的處理,Http請(qǐng)求中轉(zhuǎn),Gzip的傳輸壓縮等等處理,同時(shí)應(yīng)用了多個(gè)前端的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)資源,包括對(duì)頁面的靜態(tài)化處理,圖片,CSS等等,這里請(qǐng)求獲取不到的再通過下一層的Routing Mess去獲取。通常還有另外一個(gè)選擇Squid,不過近幾年來,Varnish 給大型網(wǎng)站應(yīng)用的更加的多了。
三、動(dòng)態(tài)路由處理層,這里采用了Erlang 實(shí)現(xiàn)的,是由該團(tuán)隊(duì)自己實(shí)現(xiàn)的,Erlang 提供了高可靠性和穩(wěn)定性的服務(wù)端實(shí)現(xiàn)能力(其實(shí),我們也可以這樣去使用),這個(gè)層主要是解決路由尋址的問題,通過合理分配動(dòng)態(tài)過來的請(qǐng)求,跟蹤請(qǐng)求的負(fù)載能力,并合理的分配可獲取的下一層app 服務(wù)。這個(gè)層實(shí)現(xiàn)了對(duì)業(yè)務(wù)app的可擴(kuò)展性和容錯(cuò)性,可以根據(jù)下一層服務(wù)的負(fù)載容量來合理進(jìn)行路由的選擇。原理上它是一個(gè)分布式的動(dòng)態(tài)HTTP請(qǐng)求的路由池子。
四、動(dòng)態(tài)網(wǎng)格層,用戶部署的app是部署在這一層,可以看成是一個(gè)服務(wù)器集群,只是粒度會(huì)更加的細(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。