服务器架构方案一,支持百万级很轻松
我是写代码出身,因为时间长了,后来做了一些服务器架构方面的工作,我很喜欢服务器架构的工作感觉非常的有意思,也许是写代码写时间长了,写烦了吧。做大型项目服务器架构师是非常必要的,他们好比建筑行业的图纸设计师,如果没有好的设计,大楼盖到一半有可能就倒了,程序人员好比是泥瓦匠,农民工。经常听到有人说代码农民工,是不是从这儿来的。我去过一家公司,他们有一个自己的网站,一天的pv流量差不多有100多万,当时给了一个项目经理的虚名,你又要写代码,又要搞架构。他们服务器如下:
一台负载均衡服务器,二台mysql数据库服务器,一台文件服务器,二台web服务器,用了6台机子,机子有点多,不过都很老,应当是90年代的机子,还有软驱,我听以前的同事说,这些电脑是从一家倒闭公司,接手过来的。架构看下图:
说明:
1,用lvs来做负载均衡还是比较好的,综合考虑,个人觉得lvs比Haproxy,apache,Nginx都要好一点。
2,对于动态请求转发到web服务器,如果是图片和静态文件,直接转到文件服务器,文件服务器用apache做了图片的cache
3,服务器用rsync时进行同步文件
4, 在web端和数据库服务器中间加了一层memcache以减少对数据库的请求,mysql的并发连接数1000多一点,如果是牛人,mysql在怎么优 化,我想不会超过2000,如果是大网站同时并发2000,太正常了,这个时候,我们要进行分流,或者减少对数据库的请求以减少mysql的并发连接数。
5,二台mysql服务器,用mysql replication进行同步,基本上可以做到二台服务器的数据的实时同步。
上面的架构有好多可以改进的地方,有好多可以分的更细一点,因为是根据上级的要求来做,所以就没有自做主张了。以下简单说一下架构的过程:
1,因为我电脑里面的linux系统是arch,装lvs有很多的不便,所以实验时我改装了Haproxy。Haproxy安装配置
2,apache自身带的mod_cache我觉得缓存的效果不好,不如varnish,squid。但是因为apache用的人多,所以当时决定用这个了。apache缓存的安装配置
3,现在有二台web服务器,如果改了一个文件,可以分别传到二台服务器上,如果是多台,手动传就比较麻烦了,推荐安装。rsync安装配置
4,memcache在减少对mysql的请求方面做了很大的贡献,memcache的安装配置
5,用mysql replication来同步数据库可以做到准实时,mysql replication安装配置