大型网站架构和高并发的一些想法

好吧,从写这个标题的时候,瞬间感觉自己高大上了。

说下自己项目的经历和对大型网站架构和高并发的想法吧。

随着网站/平台 业务的爆炸性增长,对网站/平台 要想提升性能,可以从以下几个角度考虑下。

1、拆分功能、采用分布式架构。

随着功能性增多,这个时候一个网站已经承受不了那么大的并发数了。这时候我们就需要把功能拆分。根据功能把数据库拆分成不同的数据库,减少主数据库的访问压力。把网站的功能拆分成不同的子站点,来分担主站的压力。

可以通过WCF服务或者Web API来实现这些功能。

2、事务机制、队列机制

当网站并发过高时,数据库IO也会发生并发现象。可能会造成程序对数据库操作失败,这时候,需要事务机制,来保证数据的完整性。

队列机制是为了解决高并发情况下,网站瘫痪,所有用户提交的数据都无法相应的情况。

当采用队列机制后,所有用户会进入队列,可以保证有效范围内的用户正常提交数据。当一个用户操作完成以后,会自动回收到资源,给下个用户提供出资源和位置。

3、化动为静(静态化)

把一些不常用的数据和一些不常更改的数据尽量静态化。如:新闻站点、活动站点、公司介绍等。尽量用静态页面来呈现,减少数据库查询,从而减轻数据库压力。

关于静态化,可通过两种方式。

(1)伪静态

顾名思义,其实还是动态页面,只是访问的时候修改了url路径和后缀。

伪静态的页面url会好很多,对网页优化,特别是SEO有很大好处。如果配合CDN加速,可以减少服务器压力(但伪静态的网页,cdn加速不太稳定,因为有的时候,可能cdn会访问不到页面,不能保证所有页面都能做到cdn加速)

(2)纯静态

页面全部是静态页面。这种页面cdn加速后效果明显。数据库压力可以说是0。当这种形式较为占用存储空间(不过对于这些年硬盘的白菜价,基本可以忽略这个因素)

4、缓存机制

缓存是有效减少服务器和数据库压力的最简单、最直接的方式。

缓存目前常用的有session缓存、memorycache缓存

5、CDN加速

cdn加速可以把静态资源自动备份到不同地区的CDN服务器上,这样可以有效缓解服务器压力。静态资源都是从每个地方的CDN服务器上拉取下载的。

6、减少请求、合并请求

减少从服务器请求的次数,尽量把多个请求合并成一个请求。从而减少服务器压力

7、代码优化、重构

优化代码,删除无效判断,代码执行先后顺序优化。减少重复代码。

8、压缩文件大小,减少请求的文件大小

特别是js、css文件,进行压缩处理,删减无效的空格、换行等,删除页面无效标签。减少服务器请求文件的压力

9、采用异步机制、延迟加载机制

数据请求采用异步机制,给用户带来流畅用户体验。

图片、新闻信息等,采用延迟加载,加快页面访问速度。

10、业务调整

跟市场沟通、调整业务的实现方式。

如发号活动。

原来市场要求的是10:00准时发号、所有号码全部在奖池里,没有发号数量限制。造成当天1w个礼包,直接全部发放。造成网站由于访问数量过大,平台直接被拖垮,礼包全部发放了,后续活动没有激活码。

调整后的

仍然是10:00准时发号,但每个小时都会有机会抢号、每个小时可以控制发放的数量,如果领取的礼包超过这个数量就暂停发放,等到下个整点进行发放。

11、验证码机制

虽然说验证码这个对用户体验来说,确实效果很差,但确实是有效防止高并发。。。


原文地址:https://www.cnblogs.com/woaic/p/3942972.html