网站的高并发,大流量访问怎么解决

1-HTML页面静态化
访问频率较高但内容变动较小,使用网站HTML静态化方案来优化访问速度。将社区内的帖子,文章进行实时的静态化,有更新的时候再重新静态化也是大量使用的策略。
优势:
一:减轻服务器负担。
二:加快页面打开速度,静态页面无需访问数据库,打开速度较动态页面有明显提高。
三:很多搜索引擎都会优先收录静态页面,不仅被收录的快,还收录的全,容易被搜索引擎
找到。
四:HTML静态页面不会受程序相关漏洞的影响,减少攻击,提高安全性。

2-图片服务器和应用服务器相分离。
现在很多网站上都会用到大量的图片,而图片是网页传输中,占主要的数据量,也是影响网站性能的主要因素。因此很多网站都会将图片存储从网站中分离出来,另外架构一个或多个服务器来存储图片,将图片放到一个虚拟目录中,而网页上的图片都用一个url地址来指向这些服务器上的图片的地址,这样的话,网站的性能就提高了。
优势–
一:分担Web服务器的I/O负载,将耗费资源的图片服务器分离出来,提高服务器的性能和
稳定性。
二:能够专门对图片服务器进行优化-为图片服务设置有针对性的缓存方案,减少带宽成本,提高访问速度。
三:提高网站的可扩展性-通过增加图片服务器,提高图片吞吐能力。

3-数据库
如果有个特别大的访问量到数据库上,查询速度会变得很慢,所以我们需要进行优化,从三个方面考虑:
一:SQL查询语句优化
(1)使用索引。
(2)借助explain(查询优化神器)选择更好的索引和优化查询语句
(3)仍和地方都不要使用SELECT * FROM语句。
(4)不要在索引列做运算或者使用函数
(5)查询尽可能使用limit来减少返回的行数。
(6)使用查询缓存,并将尽量多的内存分配给MYSQL做缓存。
二:主从复制,读写分离,负载均衡
(1)目前大多数的主流关系型数据库都提供了主从复制的功能,通过配置多态数据库的主从关系,可以将一台数据库服务器的数据更新同步到另一台服务器上。网站可以利用数据库这一功能,实现数据库的读写分离,从而改善数据库的负载压力。一个系统的读操作远远多于写操作,因此写操作发向master,读操作发向slaves进行操作(简单的轮询算法来决定使用哪个slave)
(2)利用数据库的读写分离,Web服务器在写数据的时候,访问主数据库(master),主数据库通过主从复制将数据从更新同步到数据库slave。这样当Web服务器读数据时,就可以通过从数据库获得数据。这一方案使得在大量读操作的Web应用可以轻松地读取数据,而主数据库也只会承受少量的写入操作,还可以实现数据热备份,可谓是一举两得。
三:数据库分表、分区。分库
1、分表
-垂直拆分
在主键和一些列放在一个表中,然后把主键和另外的列放在另一个表中。如果一个表中
某些列常用,而另外一些不常用,则可以采用垂直拆分。
-水平拆分
根据一列或者多列数据的值,把数据行放到两个独立的表中。

2:分区
分区就是把一张表的数据分成多个区块,这些区块可以在一个磁盘上,也可以在不同磁盘上,分区后,表面上还是一张表,但是数据散列字多个位置,这样一来,多块硬盘同时处理不同的请求,从而提高磁盘I/O读写性能。实现简单,包括水平分区和垂直分区。

3:分库
分库是根据业务不同,把相关的表切分到不同的数据库中,比如web、bbs、blog等库。
分库解决的是数据库端 并发量的问题。分库和分表并不一定两个都要
上,比如数据量很大,但是访问的用户很少,我们就可以只使用分表不
使用分库。如果数据量只有1万,而访问用户有一千,那就只使用分库。

4-缓存
尽量使用缓存。包括用户缓存、信息缓存等。多花点内存来做缓存,可以大量减少与数据库的交互,提高性能。
假如我们能减少数据库频繁的访问,那对系统肯定大大有利的。比如一个电子商务系统的商品搜索,如果某个关键字的商品经常被搜,那就可以考虑这部分商品列表放到缓存中,这样不用每次访问数据库,性能大大增加。

5-镜像
镜像是冗余的一种类型,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像。

6-负载均衡
在网站高并发访问的场景下,使用负载均衡技术(负载均衡服务器)为一个应用构建一个由多台服务器组成的服务器集群,将并发访问请求分发到多台服务器上处理。避免单一服务器因负载压力过大而响应缓慢,使用户请求具有更好的响应延迟特性。

7-并发控制
加锁,乐观锁和悲观锁。

8-消息队列
通过mq一个一个排队方式,跟12306一样。

你可能感兴趣的:(网站的高并发,大流量访问怎么解决)