1. 优化网站响应时间的架构方案:
网站能否留住用户,一方面是看内容,另一方面是看响应时间。通常有几种方法可以减少网站的响应时间:
1. 减少HTTP请求。包括合并css和javascript。减少图像的数量,例如使用css偏移技术来选择图像中的不同位置。使用浏览器的Cache函数,我们可以在header中声明它是否被浏览器缓存。
2、动态内容静态。例如,永久生成HTML文件。生成静态文件并设置生存期。当静态文件过期时,将查询新的动态内容进行替换。
3. 优化数据库。数据库的性能对项目的整体性能至关重要。一个设计良好的Mysql可以比一个混乱的Mysql执行N个数量级,更不用说引入NOSQL了,比如Redis, MongoDB。
4. 使用负载均衡。将请求分发到尽可能多的服务器。
5. 使用缓存。为了避免重复计算,需要花费大量的时间和资源进行缓存计算。例如,在Mysql前面有一层Memcached。例如,创建一个文件并在使用它时包含它。另一个例子是PHP中的OPCACHE。
二、压力测试的框架:
吞吐量是指单位时间内处理的请求数,单位为reqs/s。最大吞吐量是指单位时间内可以处理的最大请求数。模拟足够多的人和并发请求来测试最大吞吐量的方法称为压力测试。例如,Apache ab(Apache Bench)是Apache自带的。ab有许多参数,例如请求数(-n)、并发用户数(-c)、超时时间(-t)、长连接(-k)和Cookie的附件(-c name=value)。
$ab -c 10 -n 1000 http://localhost/
三、长连接架构方案:每次请求都需要TCP三次握手,握手比例表示连接正式连接,然后发送数据。因此,对于N个请求,它需要3N次握手、N次数据传递和N次响应,总共5N次。如果将N个请求合并为一个请求,则需要3次握手、1次数据下发、1次响应返回,共5次。但是,有时我们需要最后一个响应的返回结果来发送新请求,在这种情况下合并请求不容易实现,这需要长连接。它很容易使用,并在头文件中包含以下内容:
连接:维生
可以在客户端和服务器上设置长连接的最长持续时间。如果最大持续时间不一致,则以较小的持续时间为准。开启长连接后的应力测试:
发现增幅超过了三到五倍。这台机器的性能提高了8倍。
提高Mysql响应性的架构解决方案:Handlerocker是由日本的一位架构师开发的。Mysql的一个插件。Handlerocker实现了一个绕过Mysql的SQL解析层。它可以在Mysql5.1或更高版本中使用。具体操作请参见Mysql手册。我不会在这里详细说明。
5. Mysql主从复制的架构方案:分布式部署时,使用1个主库和N个从库。只在主数据库中写入,只在从数据库中搜索。主数据库和从数据库数据需要统一,即主从复制。
其优点如下:1。备份辅助数据库后,主数据库可以继续处理更新。
2. 优化响应时间。3. 提高鲁棒性。当主库故障时,可以切换到从库作为备份。实现主/从复制有三个步骤,一个在主库中,两个在从库中:
1. 主数据库服务器将用户对数据库更新的操作保存到二进制格式的二进制日志文件中。然后Binlog Dump线程将二进制日志文件传输到从库服务器。
2. 从库服务器使用I/O线程将主库服务器的二进制日志文件中的更新操作复制到称为中继日志的中继日志文件中。
3. 备用数据库服务器使用另一个SQL线程Relay Log,将日志文件中的操作依次转发到本地数据库,从而实现主备数据库之间的数据同步。本文仅列出了解决方案,详细的配置和实现步骤将在另一篇文章中编写。
agent的架构方案:读取内存的速度是读取硬盘速度的10万- 100万倍。将访问过的页面缓存到内存中,下次直接从内存中读取,这样可以有效加速。1. 传统的代理。客户端向代理服务器发送请求,代理服务器从WEB服务器获取数据并将其返回给浏览器。代理服务器是一种具有较大存储空间的缓存。2. 反向代理。它与传统的代理原理类似,只是使用的对象不同。传统代理由客户端使用,反向代理由服务器使用。用户通过反向代理访问Web服务器,Web服务器被隐藏。但是,用户并不关心这一点,而是将代理服务器视为真正的Web服务器。反向代理有Vamish。
七、异步计算的架构:比较耗时的比如用户上传的文件分发到多台机器上,比如裁剪图片、转码视频等等。可以使用异步方案。让用户先返回结果,而不是等待计算完成。该产品与Memcache是同一个Gearman。您可以查看使用Gearman的PHP手册。