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

  • 1.1 大型网站软件系统的特点
    • 高并发,大流量
      需要面对高并发用户,大流量访问
    • 高可用
      系统7 * 24小时不间断服务
    • 海量数据
      需要存储、管理海量数据,需要使用大量服务器
    • 用户分布广泛,网络情况复杂
      许多大型互联网都是为全球用户提供服务,用户分布范围广,各地网络情况千差万别
    • 安全环境恶劣
      因互联网的开放性,使得互联网站容易受到攻击,大型网站几乎每天都会受黑客攻击
    • 需要快速变更,发布频繁
      互联网产品为快速适应市场,满足用户需求,其产品发布频率极高
    • 渐进式发展
      几乎所有大型互联网站都是从一个小网站开始,渐进地发展起来的。​​
  • 1.2 大型网站架构演化发展历程
    • 初始阶段的网站架构
      应用程序、数据库、文件等所有的资源都在一台服务器上
    • 应用服务和数据服务分离
      • 演进原因:网站业务发展,一台服务器不能满足需求。多用户访问导致性能越来越差,多数据导致存储空间不足
      • 演进做法:整个网站使用应用服务器、文件服务器和数据库服务器三台服务器。其中,应用服务器需要处理大量业务逻辑,需要更快更强大的CPU,数据库服务器需要快速磁盘检索和数据缓存,需要更快的硬盘和更大的内存,文件服务器需要存储大量用户上传的文件,需要更大的硬盘
      • 演进好处:应用和数据分离,不同特性的服务器承担不同服务角色,网站的并发处理能力和数据存储空间得到很大改善
    • 使用缓存改善网站性能
      • 演进原因:数据库压力太大导致访问延迟,影响网站性能,用户体验收到影响
      • 演进做法:缓存在应用服务器上的本地缓存 + 缓存在专门的分布式缓存服务器上的远程缓存。
      • 演进好处:使用缓存后,数据访问压力得到有效缓解
    • 使用应用服务器集群改善网站的并发处理能力
      • 演进原因:单一服务器能够处理的请求连接有限,在网站访问高峰期,应用服务器成为整个网站的瓶颈
      • 演进做法:使用集群。也就是增加应用服务器,可持续增加,体现系统的可伸缩性。增加服务器后,通过负载均衡调度服务器,将来自用户浏览器的访问请求分发到应用服务器集群中的任何一台服务器上
      • 演进好处:如果有更多用户,就在集群中加入更多的应用服务器,使应用服务器的负载压力不再成为整个网站的瓶颈
    • 数据库读写分离
      • 演进原因:使用缓存后仍有一部分读操作(缓存访问不命中、缓存过期)和全部的写操作需要访问数据,网站用户达到一定规模后,数据库因为负载压力过高而成为网站瓶颈
      • 演进做法:通过配置两台数据库主从关系,将一台数据库服务器的数据更新同步到另一台服务器上。应用服务器写数据的时候访问主数据库,主数据库通过主从复制机制将数据更新到从数据库,从而应用服务器读数据的时候,就可以通过从数据库获得数据。
        为了便于应用程序访问读写分离后的数据库,通常在应用服务器端使用专门的数据访问模块,使数据库读写分离对应用透明
      • 演进好处:改善数据库负载压力
    • 使用反向代理和CDN加速网站响应
      • 演进原因:不同地区的用户访问网站时,速度差别也极大,需要加速网站访问速度。
      • 演进做法:使用CDN和反向代理,两者的基本原理都是缓存。CDN部署在网络提供商的机房,请求时从距离自己最近的网络提供商机房获取数据。反向代理部署在网站的中心机房,用户请求到达中心机房后,首先访问反向代理服务器,若反向代理服务器缓存着用户请求的资源,就将其直接返回给用户
      • 演进好处:尽早返回数据给用户,一方面加快用户访问速度,另一方面减轻后端服务器的负载压力。
    • 使用分布式文件系统和分布式数据库系统
      • 演进原因:任何强大的单一服务器都满足不了大型网站持续增长的业务需求。
      • 演进做法:业务分库,将不同业务的数据库部署在不同的物理服务器上
    • 使用NoSQL和搜索引擎
      • 演进原因:网站业务越来越复杂,对数据存储和检索的需求也越来越复杂
      • 演进做法:采用非关系型数据库技术如NoSQL和非数据库查询技术如搜索引擎
      • 演进好处:NoSQL和搜索引擎都是源自互联网的技术手段,对可伸缩的分布式特性具有更好的支持。
    • 业务拆分
      • 演进原因:为了应对日益复杂的业务场景
      • 演进做法:使用分而治之的手段将整个网站业务分成不同产品线,归不同业务团队负责,技术上根据产品线划分,将一网站拆分成许多不同的应用,每个应用独立部署维护。
    • 分布式服务
      • 演进原因:业务拆分越来越小,存储系统越来越庞大,应用系统的整体复杂度增加,部署维护越来越困难。
      • 演进做法:每个系统都需要执行许多相同的业务操作,比如用户管理、商品管理等,那么将这些共用的业务提取出来,独立部署。由这些可服用的业务连接数据库,提供共用业务服务,而应用系统只需要管理用户界面,通过分布式服务调用共用业务服务完成具体业务操作
  • 1.3 大型网站架构演化的价值观
    大型网站都是从小型网站发展而来。网站的价值在于它能为用户提供什么价值,在于网站能做什么,而不在于它是怎么做的。
    • 大型网站架构技术的核心价值观是随网站所需灵活应对
      伴随小型网站业务的逐步发展,慢慢地演化成为一个大型网站。
    • 驱动大型网站技术发展的主要力量是网站的业务发展
      业务成就了技术。事业成就了人。

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

猜你喜欢

转载自blog.csdn.net/hoji_James/article/details/83245868