前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大型网站架构演化

大型网站架构演化

作者头像
柳公子
发布2018-09-17 16:47:47
9360
发布2018-09-17 16:47:47
举报
文章被收录于专栏:PhpZendo

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

大型网站架构演化

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年1月13日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大型网站架构演化
    • 1 大型网站软件的特点
      • 2 大型网站架构演化过程
        • 2.1 单台服务器
        • 2.2 应用服务器与数据分离
        • 2.3 数据缓存
        • 2.4 应用服务器集群
        • 2.5 数据库读写分离
        • 2.6 反向代理和 CDN 服务
        • 2.7 分布式文件系统和分布式数据库系统
        • 2.8 使用 NoSQL 和搜索引擎
        • 2.9 业务拆分
        • 2.10 构建分布式服务
      • 3 扩展阅读
      相关产品与服务
      对象存储
      对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档