大型网站变迁历史-学习

xiaoxiao2021-02-28  6

转载:https://jingyan.baidu.com/article/456c463b95e6030a583144b6.html

为了解高并发网站的建设,看到了这篇比较完整的网站变迁历史,明白了痛苦使系统进步,健壮的系统是一点点的完善与进步。

关键词:拆分,缓存,分担

(1)物理分离webserver和db

问题 : webserver和db在同一台服务器上,性能上的相互影响 解决方案:两台服务器,webserver 和 db分布在不同的机器上。

(2)增加页面缓存

问题 : 访问量的增加,一些更新频次比较低的数据,每次访问都需要查找db,db压力增大 解决方案:使用缓存机制减少对数据读的压力,使用静态页面技术(squid)

(3) 增加页面片段缓存

问题 : 访问量增加,尝到页面静态化的好处 解决方案:在动态页面中将相对静态的部分静态化(esi)

(4)数据 缓存

问题 : 经常重复性读取的数据,如用户信息,大频次的读取增加了db压力 解决方案:对这部分数据采用缓存的手段,减轻db压力

(5)增加webserver(2台)

问题 : 访问量增加,单台webserver的瓶颈和宕机 解决方案:增加多台webserver,但是多台webserver需要考虑负载均衡 (apache 自带的负载均衡或lvs等,分布式缓存,分布式文件系统)

(6)分库

问题 : 访问量增加数据库读写增多,数据库链接竞争激烈 解决方案:数据库集群或者分库,集群数据库支持的不好,一般采用分库策略

(7)分表,DAL和分布式缓存

问题 :      单表数据量过大,访问变慢 解决方案:将单表数据拆分到多表,本地缓存转换为分布式缓存

(8)增加更多的webserver

问题       :访问量增加,apache阻塞很多请求,但是单个请求处理速度比较快 解决方案:增加更过的webserver

(9)数据库读写分离和廉价存储方案

问题 : webserver的增加,db的瓶颈出现,读写比例很高 解决方案:读写分离,减轻数据库压力

(10)大型分布式应用和廉价服务器(拆分应用 微服务)

问题 : 业务上功能需求越来越多,造成web应用越来越大,局部应用的bug可能造成整个网站的瘫痪,过大的应用复制,启动比较慢,造成部署维护不方便 解决方案:拆分为分布式应用,微服务。分布式应用需要提供一个高性能稳定的通讯框架;应用拆分,需要业务整理和系统依赖关系控制;运维管理(依赖管理, 运营状况监控,错误追踪,监控和报警等)

结语:

1)webserver和db,就像一个扁担上的两个桶,任何一个优化后都会形成新的不平衡。优化困难方后形成新的平衡。在不平衡中寻找平衡。

2)业务产生数据,数据流量的洪峰会对应用造成极大压力,通过拆分来分担压力(集群的力量大于单体),通过缓存来拦截压力向后传导(短流程)

转载请注明原文地址: https://www.6miu.com/read-1100313.html

最新回复(0)