高性能网站架构方案

高性能网站架构方案,本文谈了七点网站架构方案,用以优化网站响应时间,实现大型网站技术架构方案。无论是电子商务或者其他网站且可使用。
一、优化网站响应时间的架构方案:
    网站能不能留的住用户,一方面是看内容,另一方面是看响应时间。通常有以下几个方式来降低网站响应时间:
    1、减少HTTP请求。包括合并css和javascript。减少图片数量,比如利用css的偏移技术来在一个图片中选择不同的位置内容。利用浏览器的Cache功能,我们可以在头中声明是否被浏览器缓存。
    2、动态内容静态化。比如永久生成HTML文件。生成静态文件并设定生存时间,到期后查询新的动态内容进行替换。
    3、优化数据库。数据库的性能对于项目整体性能中是重中之重。设计良好的Mysql比乱糟糟的Mysql性能高出N个数量级,更别论再引入NOSQL了,比如Redis,MongoDB。
    4、使用负载均衡。将请求合理的分发到更多服务器。
    5、使用缓存。把花费时间和资源成本高昂的计算结果取出缓存起来,避免重复计算。比如在Mysql前面挡一层Memcached。比如生成一个文件,使用的时候include进来。再比如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个请求合成一个请求,就是3次握手,1次传递数据,1次返回响应,共5次。但是,有时候我们需要上一次响应的返回结果来发送新一轮的请求,在这个时候,合并请求并不好实现,这就需要长连接。使用起来很简单,在头中包含如下:
Connection: Keep-Alive
客户端和服务器端都可以设置长连接的最大时间,当两者不统一时以小的一方为准。开启长连接后进行压力测试:
$ab -c 10 -n 1000 http://localhost/
发现提升不止三五倍。本机是提升了8倍的性能。

 四、提高Mysql的响应速度的架构方案: Handlerocker是日本的一位架构师开发。Mysql的一种插件。Handlerocker实现了绕过Mysql的SQL解析层。在Mysql5.1以上版本可以使用,详情可以查看Mysql手册。这里就不在阐述。 

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

优点是: 

1、从库备份时,主库可以继续处理更新。 

2、优化响应时间。 

3、增加健壮性。主库挂了可以切换到从库作为备份。主从复制的实现过程有三步,1个在主库,2个在从库: 1、主库服务器将用户对数据库更新的操作以二进制格式保存到Binary Log日志文件。然后Binlog Dump线程将Binary Log日志文件传输给从库服务器。  2、从库服务器通过一个I/O线程将主库服务器的Binary Log日志文件中的更新操作复制到一个叫做Relay Log中的中继日志文件中。 3、从库服务器通过另一个SQL线程Relay Log中继日志文件中的操作依次在本地执行,从而实现主从数据库之间数据的同步。 

本篇只是简单的列出方案,详细的配置和实现步骤将在另一篇中写到。 

六、代理的架构方案: 读取内存的速度是读取硬盘的100000-1000000倍。把访问过的页面缓存在内存中,下次直接从内存中读取,可以有效加速。 

1、传统代理。客户端发送请求给代理服务器,代理服务器向WEB服务器取到数据并返回给浏览器。代理服务器就是一个有大的存储空间的Cache。 2、反向代理。和传统代理原理类似,只是使用对象不同。传统代理的使用对象是客户端,反向代理的使用对象是服务器。用户通过反向代理访问Web服务器,Web服务器是隐藏起来的。不过用户不关心这些,权把代理服务器当作真实的Web服务器。反向代理有Vamish。 

七、异步计算的架构方案: 比较耗时的比如将用户上传的文件分发到多台机器,比如裁剪图片,视频转码等。可以使用异步方案。让用户无须等待计算结束而是先行返回结果。代表产品有和Memcache同一家的Gearman。关于Gearman的使用可以查看PHP手册。
时间: 2024-08-06 11:54:18

高性能网站架构方案的相关文章

LAMP网站架构方案解剖

LAMP网站架构方案解剖 2011-03-18 10:46 月光 网络转载 字号:T | T 网站架构是比较考研技术的一件事,所以要对一种好用的工具,那么网站架构就会事半功倍,LAMP具有通用.跨平台.高性能.低价格的优势,因此LAMP无论是性能.质量还是价格都是企业搭建网站的首选平台. AD:2014WOT全球软件技术峰会北京站 课程视频发布 LAMP 用LAMP进行网站架构是非常容易的. 对于大流量.大并发量的网站系统架构来说,除了硬件上使用高性能的服务器.负载均衡.CDN等之外,在软件架构

高性能网站架构设计之缓存篇(3)- Redis的配置

我们说Redis是一个强大的Key-Value存储系统,在前面我们已遇到了两个问题: 1.redis server 启动后,独占进程,能不能修改为后台服务呢? 2.redis server 服务是单线程的,而我的机器是多核的,能不能在同一台机器上开启多个实例更充分的利用 cpu 资源呢?但6379端口已经被前一个实例绑定,肯定会有冲突,那能不能修改默认端口呢? 答案是肯定的,redis 提供了灵活的配置方式,一种可以通过配置文件来配置,另一种你可以在运行时通过 config set 命令来修改配

高性能网站架构设计之缓存篇(5)- Redis 集群(上)

集群技术是构建高性能网站架构的重要手段,试想在网站承受高并发访问压力的同时,还需要从海量数据中查询出满足条件的数据,并快速响应,我们必然想到的是将数据进行切片,把数据根据某种规则放入多个不同的服务器节点,来降低单节点服务器的压力. 上一篇我们讲到了 Redis 的主从复制技术,当实现了多节点的 master-slave 后,我们也可以把它叫做集群,但我们今天要讲的集群主要是利用切片技术来组建的集群. 集群要实现的目的是要将不同的 key 分散放置到不同的 redis 节点,这里我们需要一个规则或

转:讲讲Mysql的三高集群架构,所谓三高,就是“高可用”、“高负载”、“高性能”的架构方案。

from:https://www.toutiao.com/i6717521873397088780/?timestamp=1569389190&app=news_article&group_id=6717521873397088780&req_id=2019092513263001002607901724F149F2 目录 前言 主从架构 MHA架构 PXC方案 MHA与PXC 最终推荐方案 总结 前言 小伙伴们在项目开发中,无法避免的要跟数据库打交道,一般在互联网公司所采用的数据

高性能网站架构的思考 (转)

今天看到了一篇关于网站架构的文章,写的很好,改了改,添加了一些自己的想法: 对于大流量高并发的网站,首先考虑的都是如何用最少的资源处理最多的业务.一般来说,网站架构最初需要考虑三个方面:数据库瓶颈.代码执行效率和服务器端的配置.下面结合项目开发中经验总结一下.        1. 合理设计与使用数据库        对于数据库的瓶颈可以归纳为两点:如何设计高性能的数据库?如何使用设计出来的高性能数据库?        首先,设计数据库之初就应该预估可能产生的数据量和所能承受的压力:该分表的分表,

高性能网站架构的思考

今天看到了一篇关于网站架构的文章,写的很好,改了改,添加了一些自己的想法: 对于大流量高并发的网站,首先考虑的都是如何用最少的资源处理最多的业务.一般来说,网站架构最初需要考虑三个方面:数据库瓶颈.代码执行效率和服务器端的配置.下面结合项目开发中经验总结一下.        1. 合理设计与使用数据库        对于数据库的瓶颈可以归纳为两点:如何设计高性能的数据库?如何使用设计出来的高性能数据库?        首先,设计数据库之初就应该预估可能产生的数据量和所能承受的压力:该分表的分表,

高性能网站架构利器--redis必杀技

目录 1.redis简介 2.redis主从复制实现 3.sentinel集群管理工具实现redis的高可用性 4.redis cluster 4.1.redis cluster环境搭建 4.2.redis cluster增加节点 4.3.redis cluster删除节点 4.4.redis cluster主从手动切换 5.总结 1.redis简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从201

高性能网站架构设计之缓存篇(1)- Redis C#客户端

一.什么 Redis REmote DIctionary Server,简称 Redis,是一个类似于Memcached的Key-Value存储系统.相比Memcached,它支持更丰富的数据结构,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型),并提供了数据持久化机制,在某些场景下,你完全可以把它当做非关系型数据库来使用.它是一个高性能的存储系统,能支持超过 100K+ 每秒的读写频率.同时还支持消息的发布/订阅

大规模高性能网站架构设计思路整理

近期关注了一些主流高并发大型网站如:大众点评.携程.去哪儿等 整理实现思路如下: 一.第一步 1.js .CSS.图片 优化压缩 2.站点动静分离,将动态网站单独部署.静态网站单独部署 3.数据库读写分离,比如:高频率读写的表分离 4.数据库优化,分表.分库.索引等 二.负载均衡 1.软件负载均衡,如:lvs,ngnix等 2.硬件负载均衡,如:F5等 三.缓存 1.数据缓存,如:memcacahe 2.Varnish Cache 3.Squid 四: 1.CDN