一、优化网站响应时间的架构方案:

一个网站能否留住用户,一方面取决于内容,另一方面取决于响应时间。通常有以下方法来缩短网站响应时间:

1.减少HTTP请求。包括组合css和javascript。减少图片数量,比如使用css offset技术选择一张图片中不同的位置内容。利用浏览器的缓存功能,我们可以在表头声明是否被浏览器缓存。

2.静态动态内容。比如永久生成HTML文件。生成一个静态文件并设置它的生存期,当它过期时查询新的动态内容来替换它。

3.优化数据库。数据库的性能对项目的整体性能至关重要。设计良好的Mysql的性能比混乱的Mysql高n个数量级,更不用说引入了NOSQL,比如Redis和MongoDB。

4.使用负载平衡。将请求合理地分发到更多的服务器上。

5.使用缓存。把耗费时间和资源的计算结果拿出来缓存,避免重复计算。比如在Mysql前面挡一层Memcached。例如,生成一个文件并在使用时包含它。比如PHP中的OPCACHE等。

二、压力测试的架构方案:

吞吐率是指单位时间内处理的请求数,单位为Reqs/s,最大吞吐率是指单位时间内可以处理的最大请求数。模拟足够多的人和并发请求来测试最大吞吐率的方法称为压力测试。比如Apache自带的ab(Apache Bench)。ab有很多参数,常用的有请求数(-n)、并发用户数(-c)、超时(-t)、长连接(-k)和一个Cookie的附件(-c name=value)

$ab -c 10 -n 1000 http://localhost/

三、长连接的架构方案:每个请求都需要TCP的三次握手。握手比表示连接正式连接,然后发送数据。然后,对于n个请求,需要3N次握手、n次数据传输和n次响应,总共5N次。如果n个请求合并成一个请求,就意味着三次握手,一次数据传输,一次响应,总共五次。但是,有时我们需要上一次响应的返回结果来发送新一轮请求。这时候合并请求就不容易实现了,需要很长的连接。它使用简单,并且在标题中包含以下内容:

连接:保持活动状态

客户端和服务器端都可以设置长连接的最大时间,当两者不统一时,以较小者为准。打开长连接后的压力测试:

发现高出不止三五倍。这台机器的性能提高了八倍。

四、提高Mysql的响应速度的架构方案: Handlerocker是由日本的一位建筑师开发的。Mysql的一个插件。Handlerocker实现了绕过Mysql的SQL解析层。可以在Mysql版以上使用。详情请参考MySQL手册。这里就不细说了。

五、Mysql主从复制的架构方案:在分布式部署中,1个主库和n个从库。主机只写,从机只检查。主从数据需要统一,这就是主从复制。

优点:1。当从库备份时,主库可以继续处理更新。

2.优化响应时间。3.增加鲁棒性。如果主库挂起,您可以切换到从库进行备份。主从复制过程有三个步骤,一个在主库中,两个在从库中:

1.主库服务器将用户对数据库更新的操作以二进制格式保存到二进制日志文件中。然后,Binlog转储线程将二进制日志文件传输到从属服务器。

2.从库服务器通过I/O线程将主库服务器的二进制日志文件中的更新操作复制到称为中继日志的中继日志文件中。

3.从数据库服务器的中继日志文件中的操作通过另一个SQL线程在本地依次执行,从而实现主从数据库之间的数据同步。本文只是解决方案的简单列表,详细的配置和实现步骤将在另一篇文章中编写。

六、代理的架构方案:读内存比读硬盘快10-100万倍。将访问过的页面缓存在内存中,下次直接从内存中读取,可以有效加快速度。1.传统机构。客户端向代理服务器发送请求,代理服务器从WEB服务器获取数据并返回给浏览器。代理是具有大存储空间的缓存。2.反向代理。类似于传统的代理原理,但是使用了不同的对象。传统代理使用客户端,而反向代理使用服务器。用户通过反向代理访问Web服务器,Web服务器是隐藏的。但是,用户并不关心这些,所以他们可以将代理服务器视为真正的Web服务器。反向代理是瓦米什。

七、异步计算的架构方案:耗时,比如把用户上传的文件分发给多台机器,比如裁剪图片,转码视频等。您可以使用异步模式。让用户先返回结果,而不用等待计算结束。这些产品由与Memcache同系列的Gearman代表。Gearman的使用见PHP手册。

发表回复

后才能评论