标签:
在网站发展初期,网络用户比较少,一般使用一台性能比较好的服务器就可以维持网站的运作,此时服务器同时提供业务运算、文件读取和上传、数据库读写服务。如图:
此时,网站的代码、JS脚本、CSS样式、图片、上传文件、视频、数据库均在此服务器上,当网站访问人数增加时,服务器压力开始增大,且出现在CPU、内存、磁盘I/O等多方面,这样的性能问题使架构师们不得不从新考虑系统架构问题,此时出现了服务器分离
服务器分离的好处在于每个服务器集中处理引题,并根据处理问题的不同提升不同的硬件,如:应用服务器一般会进行大量的运算,所以需要更强的CPU;文件服务器因为有大量文件上传所以需要大容量的硬盘;数据库服务器因为需要索引、查询等,所以需要更快速人硬盘及更大的内存。
一般网站总有一类或一些数据被访问的次数是比较高人,比如热销的商品、热门的新闻、近一周的销量排名等,如果每次都从数据库读,必定会降低使整个网站的吞吐,所以把热门数据进行缓存是当前一些网站的普遍做法,比如新浪微博使用Redis做缓存。
网站发展到这一段,服务器的整个响应时间应该还是比较理想的,但时由于单台Web服务器的接入能力有限,比如像Apache、IIS给每个连接处理启动一个线程,通常到1000个连接数的时候由于频繁的上下文切换便会给服务器带来额外的压力,所以这时需要更多的Web服务器进行服务,使用负载均衡设备或软件提供载,负载设备比如有F5,软件有nginx等
网站经过一定时间的发展,或用户量的扩张,数据都会急剧的增长,这时一个低质量的SQL查询语句就可能让某些核心业务长时间等待,比如用户A想查看近一年的订单统计数据,这个查询就有可能让订单表长时间处于锁定状态,解决这种类似问题的最有效,也是最安全的方法就是使用数据库读写分离
标签:
原文地址:http://www.cnblogs.com/lizitest/p/4947506.html