大型网站架构 - 1.架构的演变过程

1. 第一阶段:单服务器架构

这一阶段是我们的起步阶段,比如我们创业的时候刚购买了一台云主机。

在这一阶段,为了节约成本,我们将所有的应用程序,数据库,文件全部放在这台服务器上。

然后,CPU或者内存的成本在开发阶段也使用最小能接受的成本,然后开始我们的服务器开发之路。

 

2. 第二阶段:应用服务和数据服务分离

随着网站的第一次上线,我们的网站如果运营得不错的话,在这之后应该会逐渐积累人气,业务

也会随着人气的发展而进一步发展。

这个时候,1台服务器显然不能满足需求了,越来越多的用户访问导致性能变差,与此同时,数据也逐渐

变多,我们考虑增加硬盘。

这个时候,首先想到的就是:将应用和数据分离


于是,网站架构变成3台服务器:应用服务器(Web Server), 文件服务器(Resource Server), 数据库服务器(Database Server)

对于3台服务器的配置要求不太一样:

Web Server: 需要处理大量的业务,需要更快的CPU

Database Server: 需要快速检索数据和存放更多的数据,需要更大更快的硬盘,硬盘最好也是固态硬盘为主。

Resource Server: 需要存放用户上传的文件,如照片,视频等等,需要更大的硬盘,硬盘大一点,但是普通硬盘即可。

 

3. 第三阶段:使用缓存改善网站性能

网站业务遵循二八原则,80%的业务集中在20%的数据上。

因此,如果把这一小部分数据缓存起来,就可以i暗哨数据库访问的压力。

在初始阶段可以使用一些本地服务器的内存缓存,随着业务的扩展,

可以增加远程分布式的缓存服务器,应用一些成熟的框架,如: Redis

 

4. 第四阶段:应用服务器集群增加并发处理能力

集群已经显然成为现代网站处理高并发,海量数据的常规手段。

当1台服务器性能不足时,我们首先考虑的不应当是更换强大的服务器,而是应该增加服务器。

这个时候,我们的架构中应该引入负载均衡调度服务器,然后请求经过负载均衡服务器,分发到位于集群上的各个

应用服务器。

 

5. 第五阶段:数据库读写分离

缓存并不能解决所有的数据库问题,仍有很大一部分数据由于某些原因(缓存不命中,缓存过期)需要访问数据库。

通过设置数据库的主从备份结构,可以将主数据库的数据同步更新到另外的数据库上。

从而架构改为,将数据写入主数据库,而从数据库负责读取数据。

 

6. 第六阶段:使用反向代理和CDN加速网站响应

CDN和反向代理的基本原理都是缓存。

区别:

CDN部署在网络提供商的机房,用户可以从距离自己最近的网络提供商机房获取数据。

反向代理部署在网站的中心机房。

 

7. 第七阶段:使用分布式文件系统和分布式数据库

数据库需要进行拆分,拆分一般根据业务进行拆分,

将不同的数据库部署在不同的物理服务器上。

再进一步,我们可以引入NoSql和搜索引擎。

 

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/303402

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。