• 1.初始架构
  • 2.应用服务与数据分离
  • 3.使用缓存改善网站性能
  • 4.应用服务器集群化
  • 5.数据库读写分离
  • 6.使用反向代理和CDN
  • 7.使用分布式FS和分布式DBS
  • 8.使用NoSQL和搜索引擎
  • 9.业务拆分
  • 附:思维导图

《大型网站技术架构》读书笔记 - 网站的技术升级路线

本文描述网站从小到大演变过程中的技术升级路线;

1.初始架构

一台服务器,应用、DB、文件都在一块,使用经典的LAMP模式构建整个站点; 
优点很明显,开发部署都简单,船小好掉头,做不起来也亏不了多少;

2.应用服务与数据分离

随着访问量的增长,出现问题了:web性能变差,数据存储空间不够 
这时候需要更多的服务器,首要任务是将数据库分离出来,单独占用一台服务器,如果文件读写多,需要增加文件服务器;不同的服务器对硬件的要求也不尽相同: 
应用服务器需要处理大量业务逻辑,这需要更强的CPU; 
数据库服务器需要快速磁盘检索和数据缓存,这需要更快的硬盘和更大的内存; 
文件服务器需要存储用户上传的文件,需要更大的硬盘;

3.使用缓存改善网站性能

访问量持续增长,web性能再次变差; 
考虑使用缓存改善网站性能;web的访问规律:80%业务访问集中在20%的数据上;使用缓存,数据库压力得到有效缓解; 
缓存可通过以下方式增加: 
增加应用服务器本地缓存,这个最直接,也最简单; 
增加远程分布式缓存集群;当本地的内存不足以放下需要缓存的数据时,就只有通过分布式; 
使用类似Memcached之类的开源缓存产品,缓存更多的数据;

4.应用服务器集群化

随着网站的成长,单一应用服务器成为网站瓶颈; 
解决方案:应用服务器集群化提高网站并发处理能力; 
做成集群的关键是增加负载均衡服务器来调度应用集群

5.数据库读写分离

问题:当增加缓存之后,随着访问量的持续增长,数据库再次出现问题:数据库负载压力过高 
解决方案:数据库读写分离 
利用数据库主从热备功能,实现读写分离;读写分离的细节这篇文章讲的很清楚了,就不多说,有需要的请参考:http://www.cnblogs.com/qlee/archive/2011/04/08/2009738.html

6.使用反向代理和CDN

问题:网站做大,全国甚至全球各区域的访问量都来了,但是各区域的访问速度差别巨大; 
解决方案:使用反向代理和CDN 
CDN和反向代理基本原理都是缓存,CDN部署在网络提供商的机房,用户请求最近的节点访问;而反向代理则部署在网站的中心机房;

7.使用分布式FS和分布式DBS

问题:应用集群如果将session管理做好,或做成无状态的应用集群,可达到线性伸缩;而数据库的压力却不是很好解决; 
解决方案:使用分布式数据库拆分,可使用的方法有: 
单表拆分:将不同的表放到不同的库中,从而降低单个数据库的结点的负载;这样带来的问题就是不同库中的表无法做join操作; 
另一种方法就是按业务拆分,将属于同一业务的表划分到一个库中,从而有效降低数据库负载,同时在业务逻辑实现上不至于过于复杂;

8.使用NoSQL和搜索引擎

问题:出现海量数据存储和检索的需求 
解决方案:使用NoSQl产品分布式部署来支持海量数据的查询和存储;

9.业务拆分

按照业务来划分子系统,按产品线划分系统,通过分布式服务来协同工作;

附:思维导图

卓越亚马逊地址: 《大型网站技术架构》 
点击查看原图

大型 网站成长过程的分析笔记===通过广告来来学习,重要的是思路相关推荐

  1. 《大型网站技术架构》读书笔记四:瞬时响应之网站的高性能架构

    来源:http://www.cnblogs.com/edisonchou/p/3809839.html 此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. ...

  2. Web高级征程:《大型网站技术架构》读书笔记系列

    来源:http://www.cnblogs.com/edisonchou/p/3773828.html 一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术 ...

  3. 《大型网站技术架构》读书笔记一:大型网站架构演化

    来源:http://www.cnblogs.com/edisonchou/p/3773891.html 此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. ...

  4. 《大型网站技术架构》读书笔记之七:随需应变之网站的可扩展架构

    来源:http://www.cnblogs.com/edisonchou/p/3862389.html 此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. ...

  5. 《大型网站技术架构》读书笔记三:大型网站核心架构要素

    来源:http://www.cnblogs.com/edisonchou/p/3806348.html 此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. ...

  6. 《大型网站技术架构》读书笔记之六:永无止境之网站的伸缩性架构

    首先,所谓网站的伸缩性,指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力.在整个互联网行业的发展渐进演化中,最重要的技术就是服务器集群,通过不断地向集群中 ...

  7. 大型网站技术架构(读书笔记)

    1,网站价值在于能给用户提供什么,而不在于它是怎么做的. 2,在网站还很小时,就追求网站的架构是舍本逐末. 3,不要为了技术而技术. 4,计算机的任何问题都可以通过增加一个虚拟层来解决.网络的七层,每 ...

  8. 大型网站性能监测、分析与优化常见问题QA

    @tanwen110 (唐文),曾负责腾讯四大平台之一网络媒体平台的整体运维.运营规划工作:曾任百度T7架构师和百度性能优化TOPIC.百度UAQ.APM平台负责人:畅销书<海量运维.运营规划之 ...

  9. 《大型网站技术架构》 读书笔记

    第一章 初始阶段: 都在一台服务器上. 应用服务和数据服务分离 应用服务器:更快更强大的CPU 数据库服务器:更快的硬盘.更大的内存 文件服务器:更大的硬盘 使用缓存改善网站性能 二八定律--> ...

最新文章

  1. 算法---------数组-----------移动零
  2. 计算机网络与云计算研究背景,基于云计算背景下的计算机网络安全研究
  3. js aop 拦载实现
  4. 提升自己身价的四个方式
  5. jvm垃圾收集器与内存分配策略
  6. 4.24口语习语 听力复习
  7. css 对话框 水平居中,css 水平居中的几种方法
  8. curl模拟GET/POST请求、ab压力测试
  9. js string转json有斜杠_json 带斜杠时如何解析的实现
  10. 怎样用python做词云_一步一步教你如何用Python做词云
  11. MVC进阶学习--View和Controller之间的数据传递(一)
  12. signature=0ca2720a9af9bfe70731d72325e6c137,Ca2+ signatures
  13. ViewData与ViewBag比较
  14. LeetCode 1071(最大公约)
  15. SELinux之一:SELinux基本概念及基本配置
  16. python:gettext --- 多语种国际化服务
  17. linux下运行directx,使用DXVK在Linux上改善您的葡萄酒游戏
  18. 解决SVN或eclipse安装SVN插件失败问题
  19. 跟着bob学win10 ump 学习笔记: lesson57 Weather
  20. 新征程,筑生态 - 华为中国ICT生态之行2017走进武汉

热门文章

  1. 信息学奥赛一本通 1126:矩阵转置 | OpenJudge NOI 1.8 10:矩阵转置
  2. 信息学奥赛一本通(1230:寻找平面上的极大点)
  3. 小玉买文具(洛谷-P1421)
  4. 信息学奥赛一本通C++语言——1057:简单计算器
  5. 4 WM配置-主数据-定义编码范围
  6. python求函数一二阶导_python:利用多种方式解微分方程(以二阶微分系统零状态响应为例)...
  7. OpenVINO主要工作流程
  8. css文字排列 - 代码篇
  9. axios的get请求 - 代码篇
  10. 手机壁纸图片源码自动采集美图网