《大型网站技术架构》读书笔记
2016-11-04 11:48:00 1542 举报
AI智能生成
网站从小到大演变过程中的技术升级路线
作者其他创作
大纲/内容
初始架构
一台服务器
应用、DB、文件都在一块
经典的LAMP模式
子主题
子主题
应用服务和数据分离
问题:性能变差、数据存储空间不够
3台服务器
应用服务器
需要处理大量业务逻辑,这需要更强的CPU;
数据服务器
需要快速磁盘检索和数据缓存,这需要更快的硬盘和更大的内存;
文件服务器
需要存储用户上传的文件,需要更大的硬盘;
使用缓存改善网站性能
问题:访问量持续增长,web性能再次变差;响应速度变慢
2-8定律:web的访问规律:80%业务访问集中在20%的数据上;
增加应用服务器本地缓存,这个最直接,也最简单
增加远程分布式缓存集群:当本地的内存不足以放下需要的缓存的数据时,就只能通过分布式
使用类似于memcached之类的开源缓存产品。redis缓存更多的数据
应用服务器集群化
随着网站的成长,单一应用服务器成为网站瓶颈;
应用服务器集群化提高网站并发处理能力
做成集群的关键是增加负载均衡服务器来调度应用集群
数据库读写分离
问题:当增加缓存之后,随着访问量的持续增长,
数据库再次出现问题:数据库负载压力过高
数据库再次出现问题:数据库负载压力过高
数据库读写分离
利用数据库主从热备功能,实现读写分离;
读写分离的细节这篇文章讲的很清楚了,就不多说,有需要的请参考
利用数据库主从热备功能,实现读写分离;
读写分离的细节这篇文章讲的很清楚了,就不多说,有需要的请参考
使用反向代理和CDN
问题:网站做大,全国甚至全球各区域的访问量都来了,但是各区域的访问速度差别巨大;
解决方案:使用反向代理和CDN
CDN和反向代理基本原理都是缓存,CDN部署在网络提供商的机房,
用户请求最近的节点访问;而反向代理则部署在网站的中心机房;
使用分布式FS和分布式DBS
问题:应用集群如果将session管理做好,或做成无状态的应用集群,可达到线性伸缩;
而数据库的压力却不是很好解决;
而数据库的压力却不是很好解决;
解决方案:使用分布式数据库拆分,可使用的方法有:
单表拆分:将不同的表放到不同的库中,从而降低单个数据库的结点的负载;
这样带来的问题就是不同库中的表无法做join操作;
这样带来的问题就是不同库中的表无法做join操作;
另一种方法就是按业务拆分,将属于同一业务的表划分到一个库中,
从而有效降低数据库负载,同时在业务逻辑实现上不至于过于复杂;
使用NOSQL和搜索引擎
问题:出现海量数据存储和检索的需求
解决方案:使用NoSQl产品分布式部署来支持海量数据的查询和存储;
业务切分
按照业务来划分子系统,按产品线划分系统,通过分布式服务来协同工作;
系统发展到最后都是一个拆分的过程,也不会像三国一样合就必分,系统职能越来越单一化。
这也回到了面向对象编程的五项基本原则的单一职责的原则。
这也回到了面向对象编程的五项基本原则的单一职责的原则。
0 条评论
下一页