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

一、反向代理服務器采用Nigix
Nigix是一個開源的,高性能的web server和支持IMAP/POP3代理的反向代理服務器,Nigix不采用多線程的方式來支持大并發處理,而是采用了一個可擴展的Event-Driven(信號asynchronous)的網絡模型來實現,解決了著名的C10K問題。
Nigix在這里用來解決Http Level的問題,包括SSL的處理,Http請求中轉,Gzip的傳輸壓縮等等處理,同時應用了多個前端的Nigix 服務器來解決DNS及負載均衡的問題。
二、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在這里主要給采用來處理靜態資源,包括對頁面的靜態化處理,圖片,CSS等等,這里請求獲取不到的再通過下一層的Routing Mess去獲取。通常還有另外一個選擇Squid,不過近幾年來,Varnish 給大型網站應用的更加的多了。
三、動態路由處理層,這里采用了Erlang 實現的,是由該團隊自己實現的,Erlang 提供了高可靠性和穩定性的服務端實現能力(其實,我們也可以這樣去使用),這個層主要是解決路由尋址的問題,通過合理分配動態過來的請求,跟蹤請求的負載能力,并合理的分配可獲取的下一層app 服務。這個層實現了對業務app的可擴展性和容錯性,可以根據下一層服務的負載容量來合理進行路由的選擇。原理上它是一個分布式的動態HTTP請求的路由池子。
四、動態網格層,用戶部署的app是部署在這一層,可以看成是一個服務器集群,只是粒度會更加的細小。
五、數據庫層,這里不用多說了
六、Memory Cache
也不需要多說,現在大部分互聯網公司都在應用,而且基于它開發了很多好的連接器,我們公司其實也有在采用,不過我們還有自己開發的分布式內存系統,如原來的TTC Server,現在好像叫WorkBench。