愛看網 (http://2goo.info) 採用了Go 語言開發的信息網站,上線以來,流量都很低,主要是新網站要搜索引擎收錄,須要漫長的過程,目前網站開通半個月,每日 pv 在 120-700,ip:10-29 個之間,包括我本身的訪問,其實多數是我本身的訪問。經過proc 查看內存的使用狀況,發現網站佔用的物理內存是 26M, 佔用虛擬內存是 273M。拿客戶類似的網站(採用Java開發的) 對比,該網站每日 pv ip,和愛看網比較都接近,甚至比愛看網稍微低一點,對方的物理內存是 174M, 佔用虛擬內存是 4G。Java 使用虛擬內存很驚人,可能和 tomcat 的配置有關吧。
至於物理內存佔用量,Java 接近 Go 的7倍。這個和 Debian 多語言性能比較的對比結果基本吻合。拋開虛擬內存不說,能不能這麼說,採用Go 開發的網站,只用一臺服務器,Java開發的網站,可能須要到6-7臺服務器了。
愛看網,開始採用Martini + PostgreSQL的框架開發,後來看了做者博客介紹,嘗試用了Negroni(中間件:Gorilla Mux,Render,Binding,Gzip,Gorp,Pq,) + PostgreSQL,Martini 和 Negroni 都是出自同一個做者,後者是做者爲了追求簡單化,非魔幻化,盡少使用 Go 反射功能,改進的產品,從文中描述來看,我以爲做者更喜歡 Negroni,畢竟 Negroni 是開發 Martini 過程當中,發現問題,不斷檢討,求變,出來的產物。
開發過程當中,學到了很多的東西,其中我喜歡 愛看網 採用的技術架構,雖然它們還有不少不成熟的因素,但我相信,隨着時間的推移,東西會慢慢變好。
愛看網 架構採用的技術:
negroni: https://github.com/codegangsta/negroni
gorilla mux: https://github.com/gorilla/mux
render: https://github.com/unrolled/render
binding: https://github.com/mholt/binding
gorp: https://github.com/go-gorp/gorp
pq: https://github.com/lib/pq
其實最近想把 Gorilla Mux 改爲 pat 試試,不知道有沒有必要。html