服务器架构方案二,支持百万级很轻松(改进版)
以前写过一篇关于服务器架构方面的文章,里面的架构,有一些地方是可以改进的,因为有一些其他原因,当时就没有改进。现在可以把可改进的地方说一下。费话不多说,看一下刚做得图片。
我把服务器架构分成5大块
一,负载均衡块
二,web服务器块
三,数据缓存块
四,数据库块,
五,文件服务器块
上面只是个人理解
1,负载均衡这一块的话,如果访问不是特别特别大的话,用软件来负载均衡就可以了。如果你觉得用软件不够好的话,你可以用f5,要花钱买的。软件做负载均衡个人觉得lvs是最好的,根据个人的实际情况来选择,Haproxy,apache,Nginx等。
2,web服务器这一块,可以用Nginx+php-cgi,apache+php-cli,apache+php-cgi这样的配合,这三种组合的效果如何呢,我做过测试,Nginx +php-cgi,apahce+php-cli,cgi的比较,经过这个测试我发现Nginx+php-cgi的效果是比apache+php-cli,apache+php-cgi要好,所以web服务器这一块,我们可以用nginx+php-cgi
3,数据缓存块,在这里的缓存指的就是内存缓存,在web服务器和数据库之间,加上内存缓存来减少对数据库的请求。数据库很容易产生瓶颈的地方,重点保护对像,哈哈。文件服务器上面装上varnish,用来缓存静态文件,个人觉得varnish比,squid,apache,nginx对静态文件的缓存效果要好,varnish的命中率很高,缓存过一次后,一般情况下都不会miss的。有空我把这几情缓存的效果做一下测试。
4,数据库这一块,根据自己的实际情况来决定数据库服务器的台数,以及决定使用什么软件来实现数据库集群,常用的有mysql replication,mysql proxy,mysql cluster,drdb等。我做过测试mysql proxy 的效果比较差。mysql proxy 问题 效率太差 慢 郁闷。
数据查寻这一块,引入了sphinx全文件检索,对于一般查询id啊,查询name之类简单的,我们直接用数据库的一般查询就行了,如果对于内容特别多的字段来进行查询的话,用like的话,效率太差了。例如:文章简介,文章内容。sphinx号称可以支持亿级检索。sphinx mmseg mysql 中文分词,现在有集成版的,coreseek如果我没有记错的话,那个时候,集成版的,我的电脑还装不了。
5,文件服务器块,其实就是存放文件的地方,对存放的文件进行监控,在这里推荐一下fastdfs,服务器端很小,支持集群,客户端有php,perl,java版的等。对于做下载类,视频类的网站来说,文件服务器肯定很多,例如youku,土豆等。做个集群还是很有必要的。FastDFS分布式文件服务器安装,及配置。FastDFS分布式文件客户端安装,以及fastdfsapi
不断的学习,不断的改进中。欢迎探讨