中大型网站技术架构演变过程

1、大型网站的特点

高并发,大流量:PV量巨大。即页面浏览量;用户每1次对网站中的每个网页访问均被记录1次。用户对同一页面的多次访问,访问量累计。

高可用:7*24小时不间断服务。

海量数据:需要储存、管理海量数据,需要使用大量服务器。

用户分布 广泛,网络情况复杂:为全球用户提供服务,用户分布范围广。

安全环境恶劣:黑客攻击多。

需求快速变更,发布频繁:快速适应市场,满足用户需求。

渐进式发展:慢慢地运营出大型网站。

2、大型网站架构演变过程

初始阶段网站架构

一台Server就刚需—应用程序、数据库、文件等所有资源都集中在一台Server上,典型案例:基于LAMP架构的PHP网站。

应用和数据服务分离

三台Server平天下—业务发展,单台不再适应业务的发展,将应用和数据分离后成三台Sever(应用服务器、文件服务器与数据库服务器)。分离后三台Server对硬件资源的需求各不相同:应用服务器需要更快更强大的CPU,而数据库服务器需要更快的硬盘和更大的内存,文件服务器则需要更大的硬盘。

使用缓存改善网站性能

3+N的Server模式—减少数据库访问压力,提高网站的数据访问速度。缓存又可以分为:本地缓存和远程缓存(可以是分布式的),本地缓存访问速度快,但数据量有限;远程分布式缓存可以集群,因此容量不受限制。

使用应用服务器集群改善网站并发处理能力

集群—解决高并发、海量数据问题的常用手段,实现系统的可伸缩性。通过负载均衡调度器,可将用户访问分发到集群中的某台Server上,应用服务器的负载压力不再成为整个网站的瓶颈。

数据库读写分离

随着用户量的增加,数据库成为最大的瓶颈,改善数据库性能常用的手段是进行读写分离以及分表,读写分离顾名思义就是将数据库分为读库和写库,通过主备功能实现数据同步。分库分表则分为水平切分和垂直切分,水平切换则是对一个数据库特大的表进行拆分,例如用户表。垂直切分则是根据业务不同来切换,如用户业务、商品业务相关的表放在不同的数据库中。

使用反向代理和CDN加速网站响应

CDN和反向代理的基本原理都是缓存,区别在于CDN部署在网络提供商的机房,而反向代理则部署在网站的中心机房。使用CDN和反向代理的目的都是尽早返回数据给用户,一方面加快用户访问速度,另一方面也减轻后端服务器的负载压力。

使用分布式文件系统和分布式数据库系统

用户一天天增加,业务量越来越大,产生的文件越来越多,单台的文件服务器已经不能满足需求。需要分布式的文件系统支撑。

使用NoSQL和搜索引擎

NoSQL和搜索引擎都是源自互联网的技术手段,对可伸缩的分布式特性具有更好的支持。应用服务器则通过一个统一数据访问模块访问各种数据,减轻应用程序管理诸多数据源的麻烦。

业务拆分

随着业务进一步扩展,应用程序变得非常臃肿,这时我们需要将应用程序进行业务拆分,如百度分为新闻、网页、图片等业务。每个业务应用负责相对独立的业务运作。业务之间通过消息进行通信或者同享数据库来实现。

分布式服务

这时我们发现各个业务应用都会使用到一些基本的业务服务,例如用户服务、订单服务、支付服务、安全服务,这些服务是支撑各业务应用的基本要素。我们将这些服务抽取出来利用分部式服务框架搭建分布式服务。

出处:

https://juejin.im/post/5aeea414f265da0ba266e242

架构文摘

互联网应用架构丨架构技术丨大型网站丨大数据丨机器学习

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180609B0BZQJ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券