大型网站架构演化
Posted hangtutu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大型网站架构演化相关的知识,希望对你有一定的参考价值。
学习《大型网站技术架构》第一章所摘抄的重点内容,感兴趣的同学可以直接去读这本书。。。
大型网站软件系统特点
1.高并发,大流量 : 需要面对高并发用户,大流量访问。
2.高可用 : 系统需要24小时不间断服务。
3.海量数据 : 需要存储、管理海量数据,需要使用大量服务器。
4.用户分布广泛,网络情况复杂 : 许多大型互联网都是为全球用户提供服务的,用户分布范围广,各地网络情况复杂。
5.安全环境恶劣 : 由于互联网的开放性,使得互联网站更容易受到攻击,大型网站几乎每天都会被黑客攻击。
6.需求快速变更,发布频繁 : 和传统软件的版本发布频率不同,互联网产品为更快速使用市场,满足用户的需求,其产品发布频率是极高的。
7.渐进式发展 : 与传统软件产品或企业应用系统一开始就规划好全部的功能和非功能需求不同,几乎所有的大型网站都是从一个小型网站开始,渐进的发展起来的。
大型网站架构演化发展历程
1.初始阶段的网站架构
特点 : 应用程序、数据库、文件等所有的资源都在一台服务器。
架构图 :
2.应用服务和数据服务分离
解决问题 : 越来越多的用户访问导致性能越来越差,越来越多的数据导致存储空间不足。
特点 : 将应用和数据分离,整个网站使用三台服务器,应用服务器(需要更快更强大的CPU)、文件服务器(需要更大的硬盘)、数据库服务器(需要更快地硬盘和更大的内存)。
架构图 :
3.使用缓存改善网站性能
解决问题 : 随着用户不断增多,数据库压力太大导致访问延迟。
特点 : 根据二八定律,80%的业务访问集中于20%的数据上,所以将这一小部分数据缓存在内存中
缓存方式:
1.本地缓存:速度更快,但是受应用服务器内存限制,其缓存数据量有限,而且会出现和应用程序争用内存的情况。
2.远程缓存:以实用集群的方式,部署大内存服务器作为专门的缓存服务器,可以在理论上做到不受容量限制的缓存服务。
架构图 :
4.使用应用服务器集群改善网站的并发处理能力
解决问题 : 使用缓存后,数据访问压力得到有效缓解,但是单一应用服务器能够处理的请求连接有限,在网站访问高峰期,应用服务器成为整个网站的瓶颈。
特点 : 应用服务器实现集群,通过负载均衡调度服务器,可将来自用户浏览器的访问请求分发到应用服务器集群中的任何一台服务器上,如果有更多的用户,就在集群中加入更多的 应用服务器,使应用服务器的负载压力不再成为整个网站的瓶颈。
架构图 :
5.数据库读写分离
解决问题 : 网站在使用缓存后,绝大多数数据读操作访问都可以不通过数据库就可以完成,但是仍有一部分读操作和全部的写操作需要访问数据库,在网站的用户达到一定规模后, 数据库因为负载压力过高为成为网站的瓶颈。
特点 : 通过配置两台数据库主从关系,可以将一台数据库服务器的数据更新同步到另一台服务器上,网站利用数据库的这一功能,实现数据库的读写分离,从而改善数据库负载压 力。为了便于应用程序访问读写分离后的数据库,通常在应用服务器端使用专门的数据访问模块,是数据库读写分离对应用透明。
架构图 :
6.使用反向代理和CDN加速网站响应
解决问题 : 随着网站业务不断发展,用户规模越来越大,由于中国复杂的网络环境,不同地区的用户访问网站时,速度差别也极大。
特点 : 使用CDN可反向代理尽早返回数据给用户,一方面加快用户访问速度,另一方面也减轻后端服务器的负载压力。
架构图 :
7.使用分布式文件系统和分布式数据库系统
解决问题 : 任何强大的单一服务器都满足不了大型网站持续增长的业务需求.
特点 : 使用分布式数据库、分布式文件系统。(不到不得已时,网站更常用的数据库拆分手段是业务分库,将不同业务的数据库部署在不用的物理服务器上)。
架构图 :
8.使用NoSQL和搜索引擎
解决问题:随着网站业务越来越复杂,对数据存储和检索的需求也越来越复杂,网站需要采用一些非关系数据库技术如NoSQL和非数据库查询技术如搜索引擎。
特点 : 应用服务器通过一个统一数据访问模块访问各种数据,减轻应用程序管理诸多数据源的麻烦。
架构图 :
9.业务拆分
解决问题 : 大型网站为了应对日益复杂的业务场景,通过使用分而治之的手段将整个网站业务分为不同的产品线,如大型购物交易网站就会将首页、商铺、订单、买家、卖家等拆分成 不同的产品线,分归不同的业务团队负责。
特点 : 将一个网站拆分为许多不同的应用,每个应用独立部署维护。
架构图 :
10.分布式服务
解决问题 : 随着业务拆分越来越小,存储系统越来越庞大,应用系统的整体复杂度呈指数增加,部署维护越来越困难。
特点 : 将共用业务提取出来,独立部署。由这些可复用的业务连接数据库,提供共用业务,而应用系统只需要管理用户界面,通过分布式服务调用共用业务服务完成具体业务操作。
架构图 :
以上是关于大型网站架构演化的主要内容,如果未能解决你的问题,请参考以下文章