欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

《大型网站技术架构 核心原理与案例分析》读书笔记

程序员文章站 2022-03-14 10:22:31
一、大型网站架构演化 1、大型网站特点 高并发,大流量 高可用 海量数据 用户分布广泛,网络情况复杂 安全环境恶劣 需求快速变更,发布频繁 渐进式发展 2、大型网站架构发展历程 文件服务器,数据库服务器,应用服务器分离 应用服务器增加本地缓存,本地缓存优先,增加分布式缓存服务器 使用应用程序服务器集 ......

一、大型网站架构演化

1、大型网站特点

  • 高并发,大流量
  • 高可用
  • 海量数据
  • 用户分布广泛,网络情况复杂
  • 安全环境恶劣
  • 需求快速变更,发布频繁
  • 渐进式发展

2、大型网站架构发展历程

  • 文件服务器,数据库服务器,应用服务器分离
  • 应用服务器增加本地缓存,本地缓存优先,增加分布式缓存服务器
  • 使用应用程序服务器集群提高网站的并发,由负载均衡服务器统一调度分发
  • 使用分布式文件系统和分布式数据库系统
  • 使用CDN网络加速和反向代理服务器:基本原理都是缓存,CDN部署在网络提供商的机房,是用户在请求网络服务时,可以从距离自己最近的网络提供商机房获取数据。而反向代理是部署在中心机房,当用户的请求到达中心机房后,首先访问的是反向代理服务器,如果反向代理服务器中缓存这用户请求的资源,就将其直接返回给用户,目的都是尽早返回数据给用户,加快用户访问速度,减轻后端服务器的压力。
  • 使用Nosql和搜索服务器
  • 业务拆分,根据不同的产品,不同的业务,将一个网站拆分成不同的应用,每个应用独立部署维护,各个应用之间通过消息中间件或者访问同一个数据存储系统来构成一个相互关联的完整系统
  • 分布式服务,将公用的业务提取出来,独立部署,为其他应用服务器提供可复用的共用业务服务(可以通过dubbo和zookeeper集群实现)

《大型网站技术架构 核心原理与案例分析》读书笔记

3、网站架构的价值观和设计误区

  • 架构的选取随网站所需灵活应对
  • 主要驱动力量是网站的业务发展
  • 不可一味追随大公司的架构设计,照搬照抄
  • 网站技术是为了业务存在的,不可为了技术而技术
  • 不要企图使用技术解决一切问题。技术是用来解决业务问题的,同样业务问题也可以采用业务手段,通过修改业务架构来解决

二、大型网站架构模式

1、分层,将系统在横向纬度上分成几个部分,每个部分负责单一职责,通过上层对下层的依赖和调用组成一个完整的系统。网络的7层通讯协议,计算机硬件、操作系统、应用软件,都采用了分层的思想。将网站系统分为应用层、服务层、数据层,三层结构分别部署在不同的服务器上

  • 应用层:负责具体业务和视图展示
  • 服务层:为应用层提供服务支持,如用户管理服务、购物车服务
  • 数据层:提供数据存储访问服务,如数据库、缓存、文件、搜索引擎等

2、分割。在纵向方面对系统进行划分,比如应用层,可以将不同业务分割,将购物、论坛、搜索、广告分割成不同的应用,由独立的团队负责。部署在不同的服务器上。

3、分布式。分层和分割的目的就是为了切分后的模块便于分布式部署,将不同的模块部署在不同的服务器上。同时,分布式也带来了很多问题,

  • 不同服务器之间的通信对网络依赖很大
  • 保持数据一致性比较困难
  • 网站依赖错综复杂,开发维护困难

    常见的分布式方案有以下几种

  • 分布式应用和服务。
  • 分布式静态资源
  • 分布式数据和存储
  • 分布式计算
  • 分布式文件系统
  • 分布式锁
  • 分布式配置。支持网站线上服务配置实时更新

4、集群。虽然分布式已经将各个应用分开部署,但是对于用户集中访问的模块,还需要独立部署服务器集群化,即多台服务器部署相同应用构成一个集群,通过负载均衡设备共同对外提供服务。并且支持线性扩展,发生故障时的失效转移。即使是访问量很小的分布式应用和服务也至少要部署两台构成小的集群,提高系统的可用性

5、缓存。缓存是改善软件性能的第一手段。大型网站很多方面都使用了缓存设计:

  • CDN,即内容分发网络。在这里缓存网站的一下静态资源(较少变化的数据),可以就近以最快速度返回给用户。如视频网站和门户网站会将用户访问量大的热点内容缓存在CDN
  • 反向代理。当用户的请求到达数据中心时,最先访问到的是反向代理服务器,这里缓存网站的静态资源,无需继续将请求转发给应用服务器,直接返回给用户
  • 本地缓存。在应用服务器本地缓存这热点数据,应用程序可以在本地内存中直接访问,无需访问数据层
  • 分布式缓存。将数据存储在专门的分布式缓存集群中,应用服务器通过网络通讯访问缓存数据。

缓存同时也存在着缓存击穿、缓存雪崩、缓存热点不集中的问题