大型网站架构演化

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

大型网站架构演化

1 大型网站软件的特点

1.1 高并发,大流量 1.2 海量数据 存储及管理海量数据,需要大量服务器 1.3 高可用: 7 * 24 小时服务 1.4 用户分布广泛,网络环境复杂 1.5 安全环境恶劣 大型网站几乎每天都被黑客攻击 1.6 需求快速变更,发布频繁 1.7 渐进式发展

2 大型网站架构演化过程

2.1 单台服务器

应用程序、数据库服务器、文件系统部署在同一台服务器上

2.2 应用服务器与数据分离

技术要点:是将原本部署在同一台服务器的应用、数据库服务和文件服务器,拆分分别部署到不同服务器

① 应用服务器

由于更多的用户访问,导致应用服务器性能变差;同时,应用服务器需要处理大量的业务。因而,需要更强大的 CPU

② 数据库服务器

由于数据量增多,导致存储空间不足;同时,数据库服务器需要快速磁盘检索和数据缓存。因而,需要更快的硬盘和更大的内存

③ 文件服务器

需要存储用户上传的大量文件。因而,需要更大的硬盘

④ 优点

提上各个服务器并发访问能力,改善存储空间

⑤ 挑战

数据库访问压力增大,导致访问延迟

2.3 数据缓存

启用数据缓存的目的是,改善网站性能

网站访问遵循二八原则:80% 的业务访问集中在 20% 的数据上。因而需要将这 20% 的数据采用缓存手段,来缓解 80% 的访问所带了的服务器压力

① 缓存服务器部署方案,依据部署的服务器分为两类

本地缓存分布式远程缓存

② 本地缓存

将缓存服务部署在应用服务器同一台服务器上

优点:是访问数度块。 缺点: 是与应用服务器争夺内存资源;同时受内存限制缓存数据量有限

③ 分布式远程缓存(远程缓存)

优缺点同本地缓存相反;同时分布式缓存能够打破机器限制,具备更强的扩展性

③ 挑战

到此阶段,应用服务器还部署在一台服务器上,单台应用服务器处理请求的能力有限,成为网站性能的瓶颈

2.4 应用服务器集群

① 集群的优势

集群的应用,旨在改善网站并发高的问题,能有效改善网站的并发处理能力。同时,集群还是海量数据存储的常见解决手段

② 集群的技术实现原理

通过负载均衡调度器用户请求分发到集群中任意一台应用服务器

2.5 数据库读写分离

前面已经启用的数据缓存服务,解决了大部分数据的读取问题

但是依然存在以下两个方面数据处理问题没有解决:

a) 少数数据未命中缓存过期的数据读取问题无法解决 b) 数据写操作无法使用缓存技术解决

其中,数据写操作是成为数据库负载压力高的瓶颈

① 读写分离主要技术方案

主从数据库服务器热备份

② 主从热备实现原理

主服务器,用于处理数据写入操作;从服务器,用于处理数据读取操作。当主服务器执行写操作时,通过主从复制功能,将数据同步更新到从服务器

③ 挑战

接下来我们需要解决,网络环境的复杂和不同地区的用户在访问速度上的差异问题

2.6 反向代理和 CDN 服务

① 技术原理

反向代理和 CDN 服务都是缓存。区别在于,反向代理部署在网站的中心机房, CDN 服务部署在网络提供商机房

② 优点

通过加速用户访问速度和减轻后端服务器压力,达到尽快返回给用户数据的目的

2.7 分布式文件系统和分布式数据库系统

分布式系统解决的核心问题是:任何强大的单一服务器无法满足业务持续增长的业务需求,所以需要使用分布式数据库系统和分布式文件系统

分布式数据库是数据库拆分的最终手段,只有在单表数据库规模非常庞大时才使用分布式数据库系统 通常,网站更常用的技术手段是,通过对不同业务进行数据库拆分,将不同业务的数据库部署在不同物理机上。

2.8 使用 NoSQL 和搜索引擎

随着业务越来越复杂,对数据存储检索的需求也越来越复杂,需要采用一些非关系型数据库技术如 NoSQL 和非数据库查询技术搜索引擎

NoSQL 和搜索引擎源于互联网技术手段,对可伸缩的分布式特性具有更好的支持。

应用服务器通过统一的数据访问模块访问各种数据,减轻应用服务器管理诸多数据源的麻烦。

2.9 业务拆分

由于大型网站业务复杂,通过将整站的业务拆分成不同的产品达到分而治之的目的。举例: 将首页、订单、卖家、买家等不同业务

实现原理:

将不同业务查分,独立部署,通过超链接消息队列访问同一个存储系统实现业务关联

2.10 构建分布式服务

问题:

业务拆分越多,存储系统越来越庞大,应用系统整体复杂度呈指数级增长,带来部署和维护越来越困难。

解决方案:

对不同业务需要执行的相同业务操作,提取成公共服务,进行独立部署,应用系统通过分布式服务调用完成响应业务操作。如,将用户管理,商品管理独立称服务。

3 扩展阅读

mysql 主从复制原理

反向代理服务器的工作原理

说说分布式文件存储系统-基本架构

浅谈分布式数据库该如何学习和实践 上篇

HBase全网学习资料汇总

发表评论

电子邮件地址不会被公开。 必填项已用*标注