大型网站架构演化

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

大型网站架构演化

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全网学习资料汇总

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏移动开发平台

零代码三步快速集成腾讯移动分析(MTA)(iOS)

腾讯移动分析有专业的移动应用数据分析能力,为您的应用提供实时数据统计分析服务,监控版本质量、渠道状况、用户画像属性及用户细分行为,通过数据可视化展现,协助产品运...

47060
来自专栏用户画像

6.3.3 异步定时方式

在异步定时方式中,没有统一的时钟,也没有固定的时间间隔,完全依靠双方相互制约的“握手”信号来实现定时控制。通常,把交换信息的两个部件或设备分为主设备和从设备。主...

11630
来自专栏娱乐心理测试

IOS 上传到后台json数据

17430
来自专栏性能与架构

网络内容缓存CDN的工作原理

CDN的全称是Content Delivery Network,即内容分发网络 CDN的目的就是提高用户访问网站的响应速度 提速的基本思路 例如你的网站服...

48570
来自专栏开源优测

python selenium2 架构说明

selenium技术族谱 ? selenium技术族谱 selenium家族图说明: 1、IDE 主要用来学习和对selenium技术有个初步的了解用,不适...

33970
来自专栏魏艾斯博客www.vpsss.net

腾讯云数据库 MySQL 月付 8 元及基本使用

37660
来自专栏破晓之歌

JS预加载视频音频/视频获取截图技巧分享 原

有空实验后贴代码。参考文档里有解决预加载音视频,以及获取截图的技巧,文章内容提到跨域资源的解决方法。

18020
来自专栏PhpZendo

网购秒杀系统架构设计

本文是「大型网站技术架构 - 核心原理与案例分析」 第 12 章的学习笔记,感兴趣的朋友可以去购买

72610
来自专栏Netkiller

打破软件自动化测试的格局

打破软件自动化测试的格局 自动化测试的误区 自动化测试仅仅被认为是替代人工,所以我们看到很多企业实施自动化测试仅仅是将现有的 Test Case 转换成自动化脚...

42050
来自专栏北京马哥教育

如何构建高扩展性网站?

本篇通过阅读《高扩展性网站的50条原则》,总结出以下内容。   一方面博主没有实际的架构经验,另一方面知识面也不够宽阔,所以只能系统的总结书中的要点,并根据自...

33840

扫码关注云+社区

领取腾讯云代金券