程序员BUGTB 图解大型网站技术架构演变过程

1、大型网站的特点
高并发 , 大流量:PV量巨大 。 即页面浏览量;用户每1次对网站中的每个网页访问均被记录1次 。 用户对同一页面的多次访问 , 访问量累计 。
高可用:7*24小时不间断服务 。
【程序员BUGTB 图解大型网站技术架构演变过程】海量数据:需要储存、管理海量数据 , 需要使用大量服务器 。
用户分布广泛 , 网络情况复杂:为全球用户提供服务 , 用户分布范围广 。
安全环境恶劣:黑客攻击多 。
需求快速变更 , 发布频繁:快速适应市场 , 满足用户需求 。
渐进式发展:慢慢地运营出大型网站 。
2、大型网站架构演变过程
初始阶段网站架构
程序员BUGTB 图解大型网站技术架构演变过程
文章图片
一台Server就刚需—应用程序、数据库、文件等所有资源都集中在一台Server上 , 典型案例:基于LAMP架构的PHP网站 。
应用和数据服务分离
程序员BUGTB 图解大型网站技术架构演变过程
文章图片
三台Server平天下—业务发展 , 单台不再适应业务的发展 , 将应用和数据分离后成三台Sever(应用服务器、文件服务器与数据库服务器) 。 分离后三台Server对硬件资源的需求各不相同:应用服务器需要更快更强大的CPU , 而数据库服务器需要更快的硬盘和更大的内存 , 文件服务器则需要更大的硬盘 。
使用缓存改善网站性能
程序员BUGTB 图解大型网站技术架构演变过程
文章图片
3+N的Server模式—减少数据库访问压力 , 提高网站的数据访问速度 。 缓存又可以分为:本地缓存和远程缓存(可以是分布式的) , 本地缓存访问速度快 , 但数据量有限;远程分布式缓存可以集群 , 因此容量不受限制 。
使用应用服务器集群改善网站并发处理能力
程序员BUGTB 图解大型网站技术架构演变过程
文章图片
集群—解决高并发、海量数据问题的常用手段 , 实现系统的可伸缩性 。 通过负载均衡调度器 , 可将用户访问分发到集群中的某台Server上 , 应用服务器的负载压力不再成为整个网站的瓶颈 。
数据库读写分离
程序员BUGTB 图解大型网站技术架构演变过程
文章图片
随着用户量的增加 , 数据库成为最大的瓶颈 , 改善数据库性能常用的手段是进行读写分离以及分表 , 读写分离顾名思义就是将数据库分为读库和写库 , 通过主备功能实现数据同步 。 分库分表则分为水平切分和垂直切分 , 水平切换则是对一个数据库特大的表进行拆分 , 例如用户表 。 垂直切分则是根据业务不同来切换 , 如用户业务、商品业务相关的表放在不同的数据库中 。
使用反向代理和CDN加速网站响应
程序员BUGTB 图解大型网站技术架构演变过程
文章图片
CDN和反向代理的基本原理都是缓存 , 区别在于CDN部署在网络提供商的机房 , 而反向代理则部署在网站的中心机房 。 使用CDN和反向代理的目的都是尽早返回数据给用户 , 一方面加快用户访问速度 , 另一方面也减轻后端服务器的负载压力 。
使用分布式文件系统和分布式数据库系统
程序员BUGTB 图解大型网站技术架构演变过程
文章图片
用户一天天增加 , 业务量越来越大 , 产生的文件越来越多 , 单台的文件服务器已经不能满足需求 。 需要分布式的文件系统支撑 。
使用NoSQL和搜索引擎
程序员BUGTB 图解大型网站技术架构演变过程
文章图片
NoSQL和搜索引擎都是源自互联网的技术手段 , 对可伸缩的分布式特性具有更好的支持 。 应用服务器则通过一个统一数据访问模块访问各种数据 , 减轻应用程序管理诸多数据源的麻烦 。
业务拆分
程序员BUGTB 图解大型网站技术架构演变过程


推荐阅读