大型网站架构演化历程

news/2024/5/9 18:56:43/文章来源:https://blog.csdn.net/weixin_33708432/article/details/91984759

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

大型网站的挑战主要来自庞大的用户,高并发的访问和海量数据,任何简单的业务一旦需要处理数以P计的数据和面对数以亿计的用户,问题就会变得棘手。大型网站架构主要就是解决这类问题。更多内容也可以阅读各大互联网公司架构演进之路汇总、大型网站架构技术一览两篇文章。

本文内容大部分来自《大型网站技术架构》,这本书很值得一看,强烈推荐。

大型网站系统的特点

高并发,大流量

需要面对高并发用户,大流量访问。Google 日均 PV 35 亿,日 IP 访问数 3 亿;腾讯 QQ 的最大在线用户数 1.4 亿(2011年数据)。

高可用

系统 7 x 24 小时不间断服务。

海量数据

需要存储、管理海量数据,需要使用大量服务器。Facebook 每周上传的照片数量接近 10 亿,百度收录的网页数目有数百亿,Google 有近百万台服务器为全球用户提供服务。

用户分布广泛,网络情况复杂

许多大型互联网站都是为全球用户提供服务的,用户分布范围广,各地网络情况千差万别。在国内,还有各个运营商网络互通难的问题。

安全环境恶劣

由于互联网的开放性,使得互联网站更容易受到攻击,大型网站几乎每天都会被黑客攻击。

需求快速变更,发布频繁

和传统软件的版本发布频率不同,互联网产品为快速适应市场,满足用户需求,其产品发布频率极高。一般大型网站的产品每周都有新版本发布上线,中小型网站的发布更频繁,有时候一天会发布几十次。

渐进式发展

几乎所有的大型互联网网站都是从一个小网站开始,渐进地发展起来的。Facebook 是扎克伯格同学在哈佛大学的宿舍里开发的;Google 的第一台服务器部署在斯坦福大学的实验室;阿里巴巴是在马云家的客厅诞生的。好的互联网产品都是慢慢运营出来的,不是一开始就开发好的,这也正好与网站架构的发展演化过程对应。

大型网站架构演化发展历程

大型网站的技术挑战主要来自于庞大的用户,高并发的访问和海量的数据,任何简单的业务一旦需要处理数以 P 计的数据和面对数以亿计的用户,问题就会变得很棘手。大型网站架构主要解决这类问题。

初始阶段的网站架构

大型网站都是从小型网站发展而来,网站架构也是一样,是从小型网站架构逐步演化而来。小型网站最开始没有太多人访问,只需要一台服务器就绰绰有余,这时的网站架构如下图所示:

1

应用程序、数据库、文件等所有资源都在一台服务器上。

应用服务和数据服务分离

随着网站业务的发展,一台服务器逐渐不能满足需求:越来越多的用户访问导致性能越来越差,越来越多的数据导致存储空间不足。这时就需要将应用和数据分离。应用和数据分离后整个网站使用3台服务器:应用服务器、文件服务器和数据库服务器。这 3 台服务器对硬件资源的要求各不相同:

应用服务器需要处理大量的业务逻辑,因此需要更快更强大的CPU;

数据库服务器需要快速磁盘检索和数据缓存,因此需要更快的磁盘和更大的内存;

文件服务器需要存储大量用户上传的文件,因此需要更大的硬盘。

此时,网站系统的架构如下图所示:

2

应用和数据分离后,不同特性的服务器承担不同的服务角色,网站的并发处理能力和数据存储空间得到了很大改善,支持网站业务进一步发展。但是随着用户逐渐增多,网站又一次面临挑战:数据库压力太大导致访问延迟,进而影响整个网站的性能,用户体验受到影响。这时需要对网站架构进一步优化。

使用缓存改善网站性能

网站访问的特点和现实世界的财富分配一样遵循二八定律:80% 的业务访问集中在20% 的数据上。既然大部分业务访问集中在一小部分数据上,那么如果把这一小部分数据缓存在内存中,就可以减少数据库的访问压力,提高整个网站的数据访问速度,改善数据库的写入性能了。 网站使用的缓存可以分为两种:缓存在应用服务器上的本地缓存和缓存在专门的分布式缓存服务器上的远程缓存。

本地缓存的访问速度更快一些,但是受应用服务器内存限制,其缓存数据量有限,而且会出现和应用程序争用内存的情况。

远程分布式缓存可以使用集群的方式,部署大内存的服务器作为专门的缓存服务器,可以在理论上做到不受内存容量限制的缓存服务。

3

使用缓存后,数据访问压力得到有效缓解,但是单一应用服务器能够处理的请求连接有限,在网站访问高峰期,应用服务器成为整个网站的瓶颈。

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

使用集群是网站解决高并发、海量数据问题的常用手段。当一台服务器的处理能力、存储空间不足时,不要企图去更换更强大的服务器,对大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务需求。这种情况下,更恰当的做法是增加一台服务器分担原有服务器的访问及存储压力。 对网站架构而言,只要能通过增加一台服务器的方式改善负载压力,就可以以同样的方式持续增加服务器不断改善系统性能,从而实现系统的可伸缩性。应用服务器实现集群是网站可伸缩架构设计中较为简单成熟的一种,如下图所示:

4

通过负载均衡调度服务器,可以将来自用户浏览器的访问请求分发到应用服务器集群中的任何一台服务器上,如果有更多用户,就在集群中加入更多的应用服务器,使应用服务器的压力不再成为整个网站的瓶颈。

数据库读写分离

网站在使用缓存后,使对大部分数据读操作访问都可以不通过数据库就能完成,但是仍有一部分读操作(缓存访问不命中、缓存过期)和全部的写操作都需要访问数据库,在网站的用户达到一定规模后,数据库因为负载压力过高而成为网站的瓶颈。 目前大部分的主流数据库都提供主从热备功能,通过配置两台数据库主从关系,可以将一台数据库服务器的数据更新同步到另一台服务器上。网站利用数据库的这一功能,实现数据库读写分离,从而改善数据库负载压力。如下图所示:

5

应用服务器在写数据的时候,访问主数据库,主数据库通过主从复制机制将数据更新同步到从数据库,这样当应用服务器读数据的时候,就可以通过从数据库获得数据。为了便于应用程序访问读写分离后的数据库,通常在应用服务器端使用专门的数据访问模块,使数据库读写分离对应用透明。

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

随着网站业务不断发展,用户规模越来越大,由于中国复杂的网络环境,不同地区的用户访问网站时,速度差别也极大。有研究表明,网站访问延迟和用户流失率正相关,网站访问越慢,用户越容易失去耐心而离开。为了提供更好的用户体验,留住用户,网站需要加速网站访问速度。主要手段有使用 CDN 和方向代理。如下图所示:

6

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

CDN 部署在网络提供商的机房,使用户在请求网站服务时,可以从距离自己最近的网络提供商机房获取数据

反向代理则部署在网站的中心机房,当用户请求到达中心机房后,首先访问的服务器是反向代理服务器,如果反向代理服务器中缓存着用户请求的资源,就将其直接返回给用户

使用 CDN 和反向代理的目的都是尽早返回数据给用户,一方面加快用户访问速度,另一方面也减轻后端服务器的负载压力。

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

任何强大的单一服务器都满足不了大型网站持续增长的业务需求。数据库经过读写分离后,从一台服务器拆分成两台服务器,但是随着网站业务的发展依然不能满足需求,这时需要使用分布式数据库。文件系统也一样,需要使用分布式文件系统。如下图所示:

7

分布式数据库是网站数据库拆分的最后手段,只有在单表数据规模非常庞大的时候才使用。不到不得已时,网站更常用的数据库拆分手段是业务分库,将不同业务的数据部署在不同的物理服务器上。

使用 NoSQL 和搜索引擎

随着网站业务越来越复杂,对数据存储和检索的需求也越来越复杂,网站需要采用一些非关系数据库技术如 NoSQL 和非数据库查询技术如搜索引擎。如下图所示:

8

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

业务拆分

大型网站为了应对日益复杂的业务场景,通过使用分而治之的手段将整个网站业务分成不同的产品线。如大型购物交易网站都会将首页、商铺、订单、买家、卖家等拆分成不同的产品线,分归不同的业务团队负责。

具体到技术上,也会根据产品线划分,将一个网站拆分成许多不同的应用,每个应用独立部署。应用之间可以通过一个超链接建立关系(在首页上的导航链接每个都指向不同的应用地址),也可以通过消息队列进行数据分发,当然最多的还是通过访问同一个数据存储系统来构成一个关联的完整系统,如下图所示:

9

分布式服务

随着业务拆分越来越小,存储系统越来越庞大,应用系统的整体复杂度呈指数级增加,部署维护越来越困难。由于所有应用要和所有数据库系统连接,在数万台服务器规模的网站中,这些连接的数目是服务器规模的平方,导致数据库连接资源不足,拒绝服务。

既然每一个应用系统都需要执行许多相同的业务操作,比如用户管理、商品管理等,那么可以将这些共用的业务提取出来,独立部署。由这些可复用的业务连接数据库,提供共用业务服务,而应用系统只需要管理用户界面,通过分布式服务调用共用业务服务完成具体业务操作。如下图所示:

10

大型网站的架构演化到这里,基本上大多数的技术问题都得以解决,诸如跨数据中心的实时数据同步和具体网站业务相关的问题也都可以通过组合改进现有技术架构解决。关于分布式的内容,可以继续看分布式系列文章。

【公告】版权声明

(全文完)

转载于:https://my.oschina.net/u/182501/blog/1530170

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_765839.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器系统版本更新,win10系统如何更新到1909版本_网站服务器运行维护,win10系统,更新,1909版本...

vi中哪条命令是不保存强制退出_网站服务器运行维护vi中“q!”命令是不保存强制退出。vi中的一些常用命令:“:w”保存、“:wq!”保存并强制退出、“:x”保存并退出(仅当文件有变化时保存)。注意问题:1、保证电源接通状态,笔记本要外接电源&…

windows 11家庭中文版 使用ie9及以下版本浏览器访问网站

说明: 最近维护一个网站,浏览器需要使用ie9及以下版本,找了很多方法,后来使用的还是ie11,只做了兼容性视图配置,就好了,挑了其中稍简便的方法,以供参考我使用的电脑操作系统版本 ![在…

网站性能测试基本指标

一.系统吞度量要素: 一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。 单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。 系…

网站漏洞扫描工具Uniscan

2019独角兽企业重金招聘Python工程师标准>>> 网站漏洞扫描工具Uniscan 网站漏洞的种类有很多种,如何快速扫描寻找漏洞,是渗透测试人员面临的一个棘手问题。Uniscan是Kali Linux预先安装的一个网站漏洞扫描工具。该工具可以针对单一、批量、do…

h357.php,基于js的电商网站的搭建

课题研究的背景意义目前是一个互联网的时代,人们的需求日渐的被互联网满足,在这个大的背景下,我们想到了来搭建一个全面的电商的网站来满足的人们的日常的需求。这个前景还是很ok的。可行性研究技术可行性我们的目前学学了html,cs…

kentico7中设置网站的主页

打开SiteManager,选择Settings,然后左上角选择具体的网站,Content,Web Site Content,Default alias path

快速使用Let's Encrypt开启个人网站的https

背景 为什么要使用https? https可以有效避免无良运营商的DNS劫持,可以显著提升网站逼格。使用https已经是大势所趋,人心所向,iOS甚至强制要求开发者使用https。为什么要使用Lets Encrypt? 对于个人开发者而言,https证书太贵&…

搭建网站必不可少的知识8

如何选择主机操作系统?一、请根据网站使用的编程语言来选择合适的操作系统和主机类型:1、网站开发语言为ASP、.NET、HTML,请选择Windows系统虚拟主机免费版及其以上型号主机; 2、网站开发语言为PHP、HTML、WAP,请选择L…

可以免费下载视频素材和模板网站汇总

1.视崛:拥有比较丰富的AE模板和高清视频素材 传送门:http://www.shij001.com/ 2.92素材网:超清视频模板,可以用于商业用途 传送门:http://699pic.com/video/?sem1&sem_kid103309 3.新GG儿:数字视觉分享…

phpstudy2018搭建网站,访问目录出现Forbidden You don't have permission to access / on this server...

关于phpstudy2018搭建网站,访问目录出现Forbidden You dont have permission to access / on this server.: 我都配置好httpd.conf文件了 一开始还以为phpstudy2018出bug了呢,然后才发现还需要在phpstudy设置点东西 1. 首先httpd.conf配置文件…

大快网站:如何选择正确的hadoop版本

2019独角兽企业重金招聘Python工程师标准>>> 大快网站:如何选择正确的hadoop版本 Hadoop的环境安装部署是所有刚开始学习hadoop必然要面对的一个问题,对于新手而言基本不会一次性部署成功,甚至可能要花费好几天的时间才能完成hado…

访问网站的全过程解析(www.sangfor.com.cn)

以访问www.sangfor.com.cn为例,介绍网站访问的全过程 一般服务器都放到总部私网内,外网用户只能访问到公网地址。而且深信服官网服务器有两条线路,一条是电信的202.96.137.88另一条是网通的60.21.140.230 网站访问容易出现跨运营商访问&…

浅析:外链在SEO中的作用!

长期以来,外链在SEO工作都是一个不可逾越的话题,它在整站优化中,扮演重要的角色,特别是熊掌号上线,很多SEO人员,逐渐在唱衰外链的作用。而在实际工作,我们发现来自垂直行业具有一定权威度的外链…

SEO公司清法网络 分析seo优化排名下降的几大原因

企业网站在做SEO优化的过程中,总会遇到被“拔毛”的情况。而网站被“拔毛”后,权重降低,排名下降,让很多站长一筹莫展。搜索公关专家清法通过多年的SEO网站优化经验以及对网站排名问题的深入分析,总结出几个可能导致网…

使用Quasar设计Material和IOS风格的响应式网站

GITHUB:使用Quasar设计旅游网站文章链接:使用Quasar设计Material和IOS风格的响应式网站 Quasar Quasar是一款基于Vue.js开发的UI框架,可以让你轻松构建网站简洁明快的界面,更重要的是它还能让你轻松做好RWD(响应式网站…

html 各大网站分享代码

通过这个网站可以制作 http://share.baidu.com/code <script>window._bd_share_config{"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"",…

分享五个前端开发必备工具网站

1.Beautiful CSS box-shadow examples 包含各种各样的阴影效果&#xff0c;点击自动复制到剪贴板上&#xff0c;再也不用费力气调整阴影效果啦&#xff01; 91 Beautiful CSS box-shadow examples - CSS Scan 2.阿里巴巴矢量图标库 很全很好用&#xff0c;iconfont 懂得都懂…

您与此网站的连接不是私密连接

检查传递参数和header 我是忘记了传递Blade-Auth &#xff0c;会出现此问题

5个免费的PPT模板下载网站

现在PPT模板网站是在太多了&#xff0c;看的人眼花缭乱&#xff0c;而且每当自己选好一个中意的PPT模板&#xff0c;下载时&#xff0c;却发现需要开通会员或者关注公众号强制分享朋友圈&#xff0c;这时真的非常的烦躁了。 我花了很长时间去寻找&#xff0c;去看下到底有没有…

高质量免费PPT模板下载网站-朴尔PPT - 知乎

朴尔PPT官方地址&#xff1a;www.puerppt.com 朴尔PPT网站设计非常美观和简约&#xff0c;没有眼花缭乱的广告&#xff0c;注册就能直接下载&#xff0c;而且涵盖的模板非常多&#xff0c;涉及多个分类,并且还可以根据颜色筛选&#xff0c;模板颜值非常高 朴尔PPT 丰富的PPT图…