博客系统架构对比分析
新浪博客系统架构(http://blog.sina.com.cn):
web服务器:nginx+apache
cgi:php
博客应用服务器:猜测是c++,memcachdb.
存储系统:mysql
发表最简单的一篇博客(内容在100字以内),花了2.77秒。
调用接口:http://control.blog.sina.com.cn/admin/article/article_post.php
对比腾讯qq空间(http://qzone.qq.com):
qzone的博客系统架构比较独特,
web服务器:公司开发的qzhttp(c++,epoll)
cgi:fastcgi(c++)
博客应用服务器:blogcontentserver(c++epoll),blogtitleserver(c++epoll),blogcounterserver(c++,select+100%内存cache)
存储系统:09以前是mysql,目前是公司开发的tdb(c++)
发表一篇简单日志:只花了172毫秒。
调用接口:http://b.qzone.qq.com/cgi-bin/blognew/blog_add
真是难以置信,一般网站,即使相同大小的静态内容,也很少能达到这个速度。
金股网的博客系统架构(http://sns.788111.com):
web服务器:apache2.x,计划将静态内容转至nginx
cgi:php
应用服务器:blogserver(c++,epoll,无内存cache)
存储系统:jcache+mysql
发表一篇简单日志:花了250毫秒
调用接口:http://jwblog.788111.com/ajax/blog_add_article.php
虽然接口里面还有很多未优化的逻辑,但总的来说是可以接受的。
=====================================================
总体架构上都差不多,cgi/fastcgi+appserver+cache+db
但在实现上有所不同。
可以参考的架构:
小规模博客系统:apache+cgi(php)+mysql(系统起步阶段)
中等规模:apache+cgi(php)+cppserver+mysql(系统发展阶段)
大规模系统:(apache+nginx)+cgi(php)+cppserver+cache+mysql(新浪模式)
超级规模:(自定义Httpserver)+fastcgi+cppserver+cache+selfdb(腾讯,google模式)
结果分析:
新浪博客:速度太慢了,无法接受
腾讯空间:速度非常快,超出预期
(但在体验上有个问题,动不动就要输入验证码,一分钟内操作不超过一次也出验证码,mygod!)
金股网博客:速度正常,还有进一步优化的空间
由于是在深圳做的测试,腾讯,金股网服务器均布在深圳,而新浪博客服务器应该主要集中在北京。
加上中国特色的网络环境,猜测主要时间花费在网络传输上了。
nginx已经在慢慢抢占apache的市场份额了,从静态领域到动态领域。
apache坚持稳定第一的原则,在互联网公司普遍缺钱的情况下似乎行不通。
nginx刚好相反,坚持性能第一的原则,更合管理层与技术高手的口味:花最少的钱,做最多的事。