• 1.1 大型网站软件系统的特点

    • 高并发,大流量
      需要面对高并发用户,大流量访问
    • 高可用
      系统7 * 24小时不间断服务
    • 海量数据
      需要存储、管理海量数据,需要使用大量服务器
    • 用户分布广泛,网络情况复杂
      许多大型互联网都是为全球用户提供服务,用户分布范围广,各地网络情况千差万别
    • 安全环境恶劣
      因互联网的开放性,使得互联网站容易受到攻击,大型网站几乎每天都会受黑客攻击
    • 需要快速变更,发布频繁
      互联网产品为快速适应市场,满足用户需求,其产品发布频率极高
    • 渐进式发展
      几乎所有大型互联网站都是从一个小网站开始,渐进地发展起来的。​​
  • 1.2 大型网站架构演化发展历程
    • 初始阶段的网站架构
      应用程序、数据库、文件等所有的资源都在一台服务器上​

  • 应用服务和数据服务分离

    • 演进原因:网站业务发展,一台服务器不能满足需求。多用户访问导致性能越来越差,多数据导致存储空间不足
    • 演进做法:整个网站使用应用服务器、文件服务器和数据库服务器三台服务器。其中,应用服务器需要处理大量业务逻辑,需要更快更强大的CPU,数据库服务器需要快速磁盘检索和数据缓存,需要更快的硬盘和更大的内存,文件服务器需要存储大量用户上传的文件,需要更大的硬盘
    • 演进好处:应用和数据分离,不同特性的服务器承担不同服务角色,网站的并发处理能力和数据存储空间得到很大改善

  • 使用缓存改善网站性能

    • 演进原因:数据库压力太大导致访问延迟,影响网站性能,用户体验收到影响
    • 演进做法:缓存在应用服务器上的本地缓存 + 缓存在专门的分布式缓存服务器上的远程缓存。
    • 演进好处:使用缓存后,数据访问压力得到有效缓解

  • 使用应用服务器集群改善网站的并发处理能力

    • 演进原因:单一服务器能够处理的请求连接有限,在网站访问高峰期,应用服务器成为整个网站的瓶颈
    • 演进做法:使用集群。也就是增加应用服务器,可持续增加,体现系统的可伸缩性。增加服务器后,通过负载均衡调度服务器,将来自用户浏览器的访问请求分发到应用服务器集群中的任何一台服务器上
    • 演进好处:如果有更多用户,就在集群中加入更多的应用服务器,使应用服务器的负载压力不再成为整个网站的瓶颈

  • 数据库读写分离

    • 演进原因:使用缓存后仍有一部分读操作(缓存访问不命中、缓存过期)和全部的写操作需要访问数据,网站用户达到一定规模后,数据库因为负载压力过高而成为网站瓶颈
    • 演进做法:通过配置两台数据库主从关系,将一台数据库服务器的数据更新同步到另一台服务器上。应用服务器写数据的时候访问主数据库,主数据库通过主从复制机制将数据更新到从数据库,从而应用服务器读数据的时候,就可以通过从数据库获得数据。
      为了便于应用程序访问读写分离后的数据库,通常在应用服务器端使用专门的数据访问模块,使数据库读写分离对应用透明
    • 演进好处:改善数据库负载压力

  • 使用反向代理和CDN加速网站响应

    • 演进原因:不同地区的用户访问网站时,速度差别也极大,需要加速网站访问速度。
    • 演进做法:使用CDN和反向代理,两者的基本原理都是缓存。CDN部署在网络提供商的机房,请求时从距离自己最近的网络提供商机房获取数据。反向代理部署在网站的中心机房,用户请求到达中心机房后,首先访问反向代理服务器,若反向代理服务器缓存着用户请求的资源,就将其直接返回给用户
    • 演进好处:尽早返回数据给用户,一方面加快用户访问速度,另一方面减轻后端服务器的负载压力。

  • 使用分布式文件系统和分布式数据库系统

    • 演进原因:任何强大的单一服务器都满足不了大型网站持续增长的业务需求。
    • 演进做法:业务分库,将不同业务的数据库部署在不同的物理服务器上

  • 使用NoSQL和搜索引擎

    • 演进原因:网站业务越来越复杂,对数据存储和检索的需求也越来越复杂
    • 演进做法:采用非关系型数据库技术如NoSQL和非数据库查询技术如搜索引擎
    • 演进好处:NoSQL和搜索引擎都是源自互联网的技术手段,对可伸缩的分布式特性具有更好的支持。

  • 业务拆分

    • 演进原因:为了应对日益复杂的业务场景
    • 演进做法:使用分而治之的手段将整个网站业务分成不同产品线,归不同业务团队负责,技术上根据产品线划分,将一网站拆分成许多不同的应用,每个应用独立部署维护。

  • 分布式服务

    • 演进原因:业务拆分越来越小,存储系统越来越庞大,应用系统的整体复杂度增加,部署维护越来越困难。
    • 演进做法:每个系统都需要执行许多相同的业务操作,比如用户管理、商品管理等,那么将这些共用的业务提取出来,独立部署。由这些可服用的业务连接数据库,提供共用业务服务,而应用系统只需要管理用户界面,通过分布式服务调用共用业务服务完成具体业务操作

  • 1.3 大型网站架构演化的价值观
    大型网站都是从小型网站发展而来。网站的价值在于它能为用户提供什么价值,在于网站能做什么,而不在于它是怎么做的。

    • 大型网站架构技术的核心价值观是随网站所需灵活应对
      伴随小型网站业务的逐步发展,慢慢地演化成为一个大型网站。
    • 驱动大型网站技术发展的主要力量是网站的业务发展
      业务成就了技术。事业成就了人。

  • 1.4 网站架构设计误区
    • 一味追求大公司的解决方案
    • 为了技术而技术
    • 企图用技术解决所有问题

《大型网站技术架构-核心原理与案例分析》(李智慧 著)第1章-大型网站架构演化相关推荐

  1. 读《大型网站技术架构 核心原理与案例分析+李智慧-高清》有感

    其实作为一个刚入职场的小白(今年才毕业),对于java的领域一开始我是特别喜欢.从一开始的学习ssm框架培训,到现在真正的去公司参加项目.目前为止我进公司快一个月了,先从写测试类开始,用的是testn ...

  2. 读书笔记:大型网站技术架构-核心原理与案例分析

    李智慧<大型网站技术架构-核心原理与案例分析> 性能 可用性 伸缩性 扩展性 安全性 总结 这本书组织的很不错,语言精练,篇幅也不长,对网站架构的要点讲的狠清楚透彻,思路清晰.主要围绕架构 ...

  3. 读书笔记之 大型网站技术架构(核心原理与案例分析)

    前言 坚持看了十几天的书,终于完成了毕业后第一次静下心来,利用业务时间看书并做笔记的成就了.废话不多说,这回看的是一直很膜拜的李智慧大神写的大型网站技术架构-核心原理与案例分析. 简短的读后感 极其推 ...

  4. 大型网站技术架构:核心原理与案例分析 mobi_阿里面试官:你会高并发技术吗?...

    前言 据有关数据统计,无论是游戏行业还是互联网行业,无论是软件开发公司还是大型网站,都对高并发技术人才有着巨大的需求.因此,无论为了是面试还是为了工作,学习高并发技术刻不容缓. 当然,高并发相关岗位的 ...

  5. 把书读薄:大型网站技术架构-核心原理与案例分析(第四篇 架构师)

    14 架构师领导艺术 职能:架构设计,软件开发,管理职能(规划产品,估算人力资源,估算时间资源,安排人员职责分工,确定计划里程碑,指导工程师工作,过程风险评估与控制). 是工程师的榜样,要做好表率. ...

  6. 大型网站技术架构:核心原理与案例分析 mobi_大数据技术经典学习路线

    如果你看完有信心能坚持学习的话,那就当下开始行动吧! 点击链接加入群聊[大数据学习交流群]:想要在大数据这个领域汲取养分,让自己壮大成长.分享方向,行动以前先分享下一个大数据交流分享资源,欢迎想学习, ...

  7. 大型网站架构模式【大型网站技术架构.核心原理与案例分析】(阅读分享)

    这本书分几个章节,其中有一个值得和大家分享的技术知识. 大型网站架构模式中引入了模式概念:每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心.这样,你就能一次又一次地使用该方案而不 ...

  8. 《大型网站技术架构:核心原理与案例分析》拜读总结,第八章——固若金汤:网站的安全架构

    道高一尺,魔高一丈的网站应用攻击与防御 XSS和SQL注入构成网络应用攻击的最主要的手段,(70%).此外,常用的WEB应用还包括CSRF,Session劫持等手段. XSS攻击:跨站点脚本攻击,指黑 ...

  9. 【撸码师读书笔记】 大型网站技术架构——核心原理与案例分析

    2019独角兽企业重金招聘Python工程师标准>>> 合理的预估系统的瓶颈及制定有效伸缩性架构预案: 架构设计应从性能,可用性,伸缩性,扩展性及安全这五个要素方面出发: 与传统企业 ...

  10. 大型网站技术架构·核心原理与案例分析 第八章·固若金汤:网站的安全架构思维导图

    固若金汤:网站的安全架构思维导图

最新文章

  1. docker-registry的定制和性能分析
  2. 02_记录学生相关数据,输出平均分数
  3. Docker的“谎言”
  4. MobX快速入门教程(重要概念讲解)
  5. Linux系统编程---6(信号的机制,信号4要素,Linu常规信号表,定时器)
  6. 潜流式湿地计算_人工湿地计算书
  7. java并发编程(更新)
  8. 面向对象编程(二):继承
  9. 用一个URL加一个JAVA壳做成一个安卓应用
  10. Modern CMake 翻译 2.1 变量和缓存
  11. JavaScript 开发者经常忽略或误用的七个基础知识点
  12. AFNetworking 2.0 来了
  13. 【运维必备-堡垒机】
  14. 计算机专业如何推广太极拳,太极拳在年轻人群体中推广的怎么样不得不说挺吃惊...
  15. 中文和拼音的相关转换
  16. latex公式换行后保证括弧大小相同
  17. 寒武纪cnstream模型加速的python环境搭建笔记
  18. 同花顺服务器文件夹,同花顺的文件目录.doc
  19. Delphi下spcomm的安装,win7系统,delphi7和delphi2010.
  20. 学IT,是不是穷人家孩子获得高收入的唯一出路?

热门文章

  1. 计算机病毒是人制,计算机病毒是一组人为设计的程序
  2. 儿童节html模板,六一儿童节作文350字满分模板
  3. scau 18967 六一儿童节
  4. 了解计算机软件系统教学设计,认识计算机》教学设计
  5. 树莓派4开发板无屏幕WIFI连接配置
  6. 计算机硬盘按数据传输,同时让多个硬盘轻松同步数据传输
  7. Matlab设置黑色背景
  8. 搜狗输入法不能正常使用?
  9. 实现SDT(software-defined Things)的IOT案例(2)
  10. clip gradient