《大型网站技术核心原理与案例分析》之大型网站架构演化

大型网站的性能需求

高性能、高可用、易扩展、可伸缩、安全性

大型网站的特点

  1. 高并发、大流量:大型网站面对的访问量比较大很容易理解,那么何为高并发呢?

    并发:在操作系统中是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。而到我们的大型网站(Web应用)中,是指在同一时刻同时有多个用户向服务器发送请求。当一个用户向网站的服务器发送请求的时候,经过后台的运算将用户想要的到的结果返回个用户,那么如果在后台运算结束之前又有新的用户向服务器发送了请求,我们在后台的程序中应该做什么样的处理呢。

  2. 高可用性:系统需要支持7×24小时都处在运行的状态,我们每周可以过周末,但是并不代表着周末没有人访问网站,因此网站需要支持7×24小时的服务。

  3. 用户分布广泛,网路情况复杂:例如现在人们购物需要用到的淘宝商城、京东商城以及我们经常用到的百度搜索引擎,用户分布在不同的地方;同时不同的用户在访问这些Web应用时的网络状态也是不同的,有的人所处的环境网速比较快,有的人网速比较慢。

  4. 安全环境恶劣:由于互联网的开放性,在全世界都可以访问到,因此面临的环境非常恶劣,很容易受到攻击。

  5. 需求变更快,发布(服务器的更新)比较频繁:互联网产品为了满足人们日益增加的需求,更新迭代的速度非常快。

  6. 渐变式发展:任何一个大的网站都是由小的网站发展起来,在发展的过程当中功能逐渐完善,同时给用户的体验也逐渐改善。

  7. 需要有很好的适配性:现在可以联网的不仅仅是电脑,智能手机普遍使用的今天可以通过不同的设备来访问同一个网站,例如手机、pad以及pc机。那么此时网站就要做到很好的适配性,既可以在手机端展示好界面又可以在pc端展示好界面。

大型网站的演化路径

明确了大型网站需要满足的需求以及大型网站的特点,那么在构建大型网站的时候就需要有一个渐变的过程,在这个渐变的过程中使网站的功能逐渐强大,同时其性能也逐步提高。

  1. 初始阶段:初始阶段,网站的用户访问量可能比较少,那么此时只需要一台服务器即可。
网站初期.png

Web应用的组成简介

Web应用一般有三部分组成:1、应用程序 2、数据库  3、文件  
Web应用最核心的两个部分是应用程序和数据库,我们访问网站就是访问的一个应用程序  
数据库主要是用来存放应用程序在运行的过程当中需要用到的数据,例如我们登录淘宝网站  
时的个人信息(用户名、密码、收获地址等信息)。而文件,是应用程序在运行过程当中需要  
读取的文件,例如淘宝网站各个商品的图片资源,都是以文件的形式存放。

Web应用的初期,数据量比较小,同时所用到的文件也比较少,此时我们可以把三者放在同一个服务器上面。

Web服务器

Web服务器也称www服务器,主要的功能是提供网上信息浏览服务,web服务器是可以向请求的浏览器发送文档的程序。Web服务器有以下几个特点:

  1. 服务器是一种被动程序:只有当Internet上的其他计算机的浏览器向服务器发送请求的时候,服务器才会响应。
  2. 最常用的服务器是Apache和Microsoft的Internet信息服务器。
  3. Internet服务器是一台在Internet上具有独立Ip的计算机。
  4. Web服务器是指驻留于因特网上某种类型计算机的程序。

2.应用服务器和数据服务相分离

随着网站业务的发展,访问的用户量越来越多,网站的数据也随之增多,此时如果数据库的存储空间不足,可能会导致用户访问网站的响应速度变慢。一台服务器已经不能满足需求,这是就应该考虑将应用服务器和数据库服务器以及文件服务器分离。根据各个服务器担任的角色不同来选定各个服务器的配置:

应用服务器需要强的CPU,数据服务器需要快速磁盘检索和数据缓存,因此需要更快的硬盘和更大的内存,文件服务器主要用来存放应用中使用到的文件,需要更大的磁盘空间。

将应用服务器、文件服务器和数据库服务器分离之后整个应用的部署情况如下图所示:

网站第二阶段.png

当应用和数据进行分离之后,不同特性的服务器担任着不同的角色,整个网站的性能得到提升。

3.使用缓存改善网站性能
网站数据的访问并不是平均分配,只有一小部分的数据会经常被访问到。当用户访问Web应用时,Web应用先从数据库中查询数据后经过应用程序的处理再返回给用户,如果有一部经常被访问到,那么可以就这一部分是数据而言提高这部分数据的访问速度,解决方案是将这部分数据缓存到内存中。当用户访问Web应用时,先从缓存中进行查询,如果缓存中有对应的数据,则直接返回,如果没有对应的数据再去数据库查询,提高数据查询的效率。

缓存分为两种:

1>缓存在本地 2>用专门的服务器缓存数据

如果将数据缓存在本地,那么缓存的数据量比较大的时候,缓存会和应用程序争用内存,这时有可能导致应用程序运行的缓慢甚至应用服务器直接挂掉。
使用专门的服务器作为缓存,可以使用集群的方式来部署。

添加缓存服务器之后的应用程序分布如下图所示:

网站第三阶段使用缓存服务器.png

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

当数据库、应用和文件服务器分离以及增加上缓存服务器之后,数据的存储和访问在目前这个阶段已经不是制约整个应用的瓶颈。但是当有大量的用户同时访问应用的时候,应用服务器就显得力不从心,这种情况下更恰当的做法是将应用进行分布式部署,而不是将现有的应用服务器换成配置更高的服务器。增加应用服务器和提现有应用服务器的配置对应用的改善作用是不相同的。

如果将应用部署在不同的服务器上,那么现在面临的一个问题就是怎么分配这几台服务器的流量,以及当用户访问应用的时候怎么将用户的访问分配到分布式服务器的其中一台服务器上。此时,负载均衡服务器就派上了用场,负载均衡服务器的作用就是将来自用户浏览器的访问分发到应用服务器集群中的其中任意一台。添加负载均衡服务器、将应用分布在不同的服务器、应用和数据访问相分离、添加缓存之后整个网站的部署如下:

第四阶段分布式应用服务器.png

5.数据库读写分离

网站使用缓存后,数据访问的速度有效提升,但是仍有一部分读操作和全部的写操作在缓存中不能完成,当用户达到一定的规模之后,数据库会因为负载过大成为制约整个网站的瓶颈。目前绝大多数数据库都支持主从热备份功能(在数据库服务不停的情况下,将主数据库的数据备份到从数据库),利用数据库的这一特性,可以将数据库的读写进行分离。及将一应用的数据库分为两个数据库,一个是主数据库,用来写操作;一个是从数据库,用来读操作。当用户将数据写入主数据库后,主数据库将数据备份到从数据库,从而实现两个数据库的数据一致性。

添加主从数据库之后网站的结构如下:


主从数据库分离.png

6.使用分布式文件系统和分布式数据库系统
任何强大的单一服务器都满足不了大型网站持续增长的业务需求,数据库经过读写分离后拆分成两台服务器,但是随着网站业务的发展并不能满足网站的需求,这是可以将数据库部署为分布式数据库。分布式数据库是数据库拆分的最后阶段,只有当单表的数据量特别大时才使用这种方式。数据库的分布式部署并不是没有依据,而是根据网站的业务模块进行拆分,将一个模块的数据存放到某个数据库中,这样访问不同模块时,应用可以访问不同的数据库。

使用分布式文件和分布式数据库之后的系统结构:

分布式数据库.png

7.使用NoSQL和搜索引擎

现在使用的数据库都是关系型数据库,关系型数据库每条记录和程序都有对应关系,关系型数据库存储的时候将组成字段相同的一条记录存放在同一个表中。随着数据库的发展,出现了非关系型数据库,NoSQL(Not Only SQL),非关系型数据库采用键值对的形式存放数据,少了关系型数据库的约束,查询起来比较方便和快速。同时有更快的查询技术搜索引擎。

如果系统的数据非常多,单表中的数据非常多,此时查询数据如果查询全表就会非常慢。为了提高查询的效率可以在应用中引入非关系型数据库和搜索引擎。引入非关系型数据库和搜索引擎之后的应用结构如下:

搜索引擎和非关系型数据库的引入.png

8.业务拆分

当网站的业务逻辑比较多的时候,如果将不同的业务模块都放在一个应用中,此时应用的负载比较大,如果将不同的业务部署在不同的服务器上,当用户访问网站页面中不同的模块时,页面将请求分发到不同的应用上,这样可以减小单个应用的压力,提高网站的响应速度。应用和应用之间通过一个超链接建立关系,也可以通过消息队列进行数据分发来构成一个完整的应用系统。
将整个应用进行业务拆分并将不同的业务部署到不同的服务器上之后,构成了以下的网站结构:


业务拆分.png

读后感:
通过第一篇章,了解了大型网站由小变大的一个过程,从原理方面了解了大型项目的整体架构,以及在每个不同的阶段制约整个应用的瓶颈。同时也可以当作自己一个进阶的路径,现在的大型项目不一定都是采用这种架构,但是原理相通。在这些环节中,哪个堤防薄弱可以在哪些地方多下功夫,毕竟,互联网应用以后都朝着这个方向发展!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容