面对高并发、大流量、高可用、海量数据、用户分布广泛、网络情况复杂这类网站系统我们如何应对???
第一阶段 一台服务器不行就上多台服务器
1.应用程序与数据服务分离
将应用程序、数据库、文件等资源放在一台服务器上,面对海量用户的访问只可能是崩崩崩的挂掉。
so?
我们知道的是应用服务器、数据库服务器、文件服务器这三块对服务器的要求是不同的,应用服务器就需要大大的CPU来处理复杂的业务逻辑,数据库服务器需要快速磁盘检索 和 数据缓存也就是要大内存,而文件服务器要求的是更快更大的内存(上SSD吧)。
2.来吧 服务器集群
这里就用到负载均衡了。将用户的访问请求给它分发到服务器集群中的任何一台服务器,如果用户多了就多增加服务器呗,这不就改善了服务器的负载压力了吗?想想谷歌的 服务器。用户辣么多,越来越多,那就上更多的应用服务器,这样应用服务器就不会成为网站系统的瓶颈了。
第二阶段 你光上硬件这样很成本高啊,来点技术的方式吧
1.上缓存
大部分用户的业务访问集中在一小部分数据上,辣么我们就可以把这小部分数据放在内存中,你要用就从内存中拿这样的话,数据库的压力就小很多了,系统响应速度也就快 了。
缓存又分为本地缓存和远程分布式缓存,本地缓存肯定快啊,但你应用服务器的内存毕竟有限,缓存的数据量有限,所以三思啊。远程分布式缓存,部署专门的大内存服务器 为缓存服务器,这样来吧用户你来把,我内存大不怕。
问题又来了,你数据访问没问题了,但你单一服务器处理的请求连接是有限的啊,在网站访问高峰期你就压力山大了,但是前面部署弄了服务器集群吗?所以不是问题。
2.将数据库的读写分离
配置两台数据库的主从关系,一台专门读,一个专门写。但是这个数据的同步还是比较麻烦的。
3.反向代理服务器
本质就是缓存,请求来了,我这个反向代理服务器中有,就直接给你返回。
4.花样繁多的分布式
拆分数据库放,拆分文件系统等等。。。