爱看网 (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