77百科网
当前位置: 首页 生活百科

网站服务器架构图(10类常见的网站服务器架构)

时间:2023-06-11 作者: 小编 阅读量: 1 栏目名: 生活百科

主要手段有使用CDN和反向代理。

几年前,面试的时候,我说我的目标是三年内成为一个架构师,现在,五年时间过去了,还是一名普通的码农,但是对网站架构还是很感兴趣,在这里分享给大家一些网站常用的架构,自己做过个人站,也就是下面的第一个层次,现在公司的网站达到了下文中提到的架构的第六层,更高的层次可能更大的网站会用到。

1. 初始阶段的网站架构

一般小型网站,没有太多访客,一般来讲只需要一台服务器就够了,这时应用程序(很多情况下就是我们的代码文件,比如php,html,js,css等)、数据库、文件(比如图片或者附件)等所有资源都在一台服务器上

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

随着网站业务的发展和用户量的增加,一台服务器就无法再满足需求了。大量用户访问导致访问速度越来越慢,而逐渐增加的数据也会导致存储空间不足。这时就需要将应用和数据分离,应用和数据分离后整个网站使用 3 台服务器:应用服务器、文件服务器和数据库服务器。通常这三台服务器可以放在同一个机房,如果分布在不同的机房,最好有专线连接,否则会影响访问速度,容易出现异常,不过一般是在同一个机房部署。

3. 使用缓存改善网站性能

随着用户再增加,网站又会一次面临挑战:数据库压力太大导致整站访问效率再次下降,用户体验受到影响。一个网站,往往 80% 的业务访问集中在 20% 的数据上,比如在我们的网站中,用户登陆注册和玩游戏操作最为频繁,那么就需要对用户数据做缓存,当最频繁的请求过来的时候,优先从缓存中读取数据,而不用去查询数据库。这样就可以减少数据库的访问压力,从而提高整个网站的访问速度。常用的缓存有文件缓存和redis,memcache等,文件缓存通常在服务器本地存储,redis等可以使用单独的服务器。

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

使用缓存后,数据访问压力得到了缓解,但是单一应用服务器能够处理的请求连接有限,在网站访问高峰期,应用服务器就成了整个网站的效率瓶颈。使用分布式集群是网站解决高并发、海量数据问题的常用手段。这种情况下,更恰当的做法是增加一台服务器分担原有服务器的访问及存储压力。对网站架构而言,只要能通过增加一台服务器的方式改善负载压力,就可以以同样的方式持续增加服务器不断改善系统性能,从而实现系统的可伸缩性。通过负载均衡调度服务器,可以将来自用户浏览器的访问请求分发到应用服务器集群中的任何一台服务器上,如果有更多用户,就在集群中加入更多的应用服务器,使应用服务器的压力不再成为整个网站的瓶颈。应用服务器实现集群是网站可伸缩架构设计中较为简单成熟的一种,如下图所示:

5. 数据库读写分离

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

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

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

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

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

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

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

8. 使用 NoSQL 和搜索引擎

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

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

9. 业务拆分

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

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

10. 分布式服务

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

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

对于上文中提到的一些服务器架构常用技术,我在这里做一些简单描述,更深层次的了解大家也可以自行google或者百度。

1、负载均衡服务器

负载均衡服务器主要作用是实现某些类型服务器的规模扩展。比如对于系统前端的web服务器和后端的数据库服务器,想通过加服务器实现N 1横向扩展,通过多台服务器负载分担压力,负载均衡必不可少。

2、web服务器

最常见,内存要求不是很高但cpu要求较高,主要用于部署各种web应用,如带界面的web页面、不带界面的web服务、wcf等等。

3、缓存服务器

大中型网站,分布式缓存已是标配,缓存服务器专门用于部署分布式缓存,一般而言对内存和带宽要求较高。

4、消息队列服务器

队列是系统解耦利器,也是大中型分布式系统标配,没有队列,业务系统很容易高度耦合,系统吞吐量也会很快遭遇瓶颈。

5、文件服务器

分布式文件系统,专门用于存储业务系统需要的各种文件如图片、多媒体文件等。

6、索引服务器

用于网站全文索引,搜索必备。对内存和CPU要求较高,大型网站,通常还需要支持主从备份和容错,甚至多实例索引集群。

7、搜索服务器

通常需要部署多台,否则查询多了性能撑不住,对内存要求不高。有的中小型站点,索引和搜索服务器在物理和逻辑上都是同一台服务器。

8、作业服务器

主要用于后端应用程序大批量大数据量复杂业务逻辑的定时作业,大多数互联网公司标配,某些企业的定时调度框架是直接部署在web服务器上的,可以减少这里的所谓作业服务器。

9、数据库服务器

主要用于存储和查询数据。数据库已是各种系统实际上的标配,内存和CPU都要求极高,网络和硬件要求也不低。大中型网站还需要支持数据库的主从备份和容错,甚至多实例的数据库集群。

通常,大中型的互联网应用会经历一个从单一的数据库服务器,到Master/Slave主从服务器,再到垂直分区(分库),然后再到水平分区(分表,sharding)的过程。而在这个过程中,Master/Slave以及分库相对比较容易,对应用的影响也不是很大,但是分表会引起一些棘手的问题,比如不能跨越多个分区join查询数据,如何实现DB负载等等,这个时候就需要一个通用的DAL框架来屏蔽底层数据存储对业务逻辑的影响,使得底层数据的访问对应用完全透明化。

10、nosql服务器

海量数据处理的兴起,各种nosql产品层出不穷,nosql服务器主要用于处理海量数据,支持存储、查询、分片等。

web应用中,有两个一直是不好实现横向扩展或者由于历史遗留问题实现代价非常大的东西,如你所知,就是:A、数据库 B、网络带宽。

而某些nosql的出现很可能解决这个历史遗留难题,现在已经有nosql产品弥补了关系型数据库天生不支持横向扩展的缺点,在特定场景下正在替代关系型数据库。

11、Web 服务器与应用服务器的区别是什么?

严格意义上Web服务器只负责处理HTTP协议,只能发送静态页面的内容。而JSP,ASP,PHP等动态内容需要通过CGI、FastCGI、ISAPI等接口交给其他程序去处理。这个其他程序就是应用服务器。

比如Web服务器包括Nginx,Apache,IIS等。而应用服务器包括WebLogic,JBoss等。应用服务器一般也支持HTTP协议,因此界限没这么清晰。但是应用服务器的HTTP协议部分仅仅是支持,一般不会做特别优化,所以很少有见Tomcat直接暴露给外面,而是和Nginx、Apache等配合,只让Tomcat处理JSP和Servlet部分

Web服务器通常只需支持HTTP协议,单纯处理页面用的;而应用服务器提供的是客户端可以调用的方法,需要支持EJB JNDI JMX 等J2EE API。 比如,Apache属于Web服务器,Weblogic属于应用服务器。 不过,现在大多数应用服务器也包含了Web服务器的功能。

Web服务器一般指的是处理静态请求或转发http请求的服务器,而应用服务器一般是用来处理动态请求的服务器。两者并没有很严格的区别。

来源:cnblogs.com/111testing/p/7078635.html

回复“资源”,视频教程,微服务、并发,数据可调优等,微信搜索【Java知音】

回复“源码”,领取一些练手项目,完整可用的项目源码,微信搜索【Java知音】

    推荐阅读
  • 哪个星座有社交牛逼症(说的不就是这些星座嘛)

    《鬼吹灯之云南虫谷》里的王胖子最近喜提热搜。这种跨物种无障碍交友的方式,让我们不得不佩服他的“社交牛逼症”。他们往往会不自觉地承担团队粘合剂的角色,因为其处事公正,有能力协调以及具备安抚的能力,当然这也是天秤的武器之一。其实金牛座这样的例子还真不少,前有何炅(何老师),后有杨迪,无论是他们二者中的任何一位,亲和力和主动社交能力,都是遥遥领先的。

  • 新鲜西梅能多吃吗怎么吃(新鲜西梅的皮能吃吗)

    ,接下来我们就来聊聊关于新鲜西梅能多吃吗怎么吃?以下内容大家不妨参考一二希望能帮到您!新鲜西梅能多吃吗怎么吃水果,西梅,生活常识,吃西梅的方法,新鲜西梅的皮能吃吗,西梅是什么,西梅怎么吃,西梅的功效

  • 大学生入党志愿书(大学生入党志愿书范文)

    ,现在小编就来说说关于大学生入党志愿书?大学生入党志愿书敬爱的党组织:您好!我志愿加入中国共产党,愿意为共产主义事业奋斗终身。中国共产党是中国工人阶级的先锋队,同时是中国人民和中华民族的先锋队,是中国特色社会主义事业的领导核心,代表中国先进生产力的发展要求,代表中国先进文化的前进方向,代表中国最广大人民的根本利益。党的最终目的是实现共产主义的社会制度。

  • 不为人知是什么意思(不为人知相关解释)

    下面内容希望能帮助到你,我们来一起看看吧!不为人知是什么意思意思是不被人所知道了解。他暗地里做了许多不为人知的坏事。

  • 日本最新的一线男明星(日本最有个性的男明星排行榜)

    第十名:洼田正孝1988年8月6日出生,被称为变色龙演员的实力派男星。2017年,他主演了漫改电影《东京食尸鬼》。2014年,担任真人版动漫电影《浪客剑心:传说的完结篇》反派角色“志志雄真实”。2016年,他出演校园爱情电影《青空呐喊》。小栗旬是名副其实的漫改大王子,曾饰演《银魂》、《流星花园》、《名侦探柯南》、《极道鲜师》等等漫改作品。从作品看,从外貌看,你们觉得小栗旬是个什么样性格的人呢?

  • 红枣泡水的做法(红枣泡水怎么做)

    跟着小编一起来看一看吧!红枣泡水的做法红枣泡水,泡枣的水后来一起倒进锅里。去核,刀子在核边切下不要切断在绕核的位置切更容易去核。加入适量的水,看个人喜欢煲个几碗,不过如果红枣太少也不要倒入太多水,那样红枣味会没那么足。连枣一起大火煮滚,后转中火,直到水滚得不太厉害的时候慢慢加入蛋,不要扔进去,拿勺子慢慢放进去。加入适量冰糖,自己尝着觉得味道可以就好了。

  • 水稻分子育种技术取得进展(开创水稻矮化育种)

    为此,黄耀祥带领团队提出选育矮秆品种的研究设想。与此同时,省农科院的杂交稻育种成效显著。这些品种在生产上大面积推广应用,有力地促进了我国杂交稻种业的发展,并产生了巨大的社会经济效益。超级稻育种居国内先进行列。迄今,水稻抛秧技术仍是广东等华南稻作区水稻重要的生产方式之一。该项技术成为广东省内近年来推广面积最大的农业生产新技术,并在广西、江西、浙江、海南等水稻产区得到大面积普及推广。

  • 战国七雄为什么是秦国统一天下(战国七雄中除了秦国)

    通过举贤任能,加上一系列的变法革新,魏国迅速成为战国初期最强大的诸侯国,没有之一。而在和齐国、楚国等诸侯国的较量中,魏国同样占据上风。等到魏国和齐国相继衰落后,赵国成为山东六国中抗击秦国的核心力量。在赵国和秦国之间展开的长平之战,韩国、魏国、楚国、齐国、燕国等诸侯国之所以一开始不救援赵国,是因为长平之战的胜利一方,很可能就会一统天下的。

  • 零下十度水多久结冰(关于零下十度水多久结冰)

    以下内容希望对你有帮助!零下十度水多久结冰结冰要使温度小于等于0摄氏度要求在水中有冻结核。有了冻结核,乱动着的水分子才能按冰的晶体结构排列起来。江河湖海的水,城市里用的自来水等都含有杂质,这些杂质就是冻结核。如果在一杯纯净的水里放一些小小的冰晶体,或者沙粒,水分子有了核心或有依附而按冰的晶体结构排列起来,成为冰。

  • 第一次去丈母娘家包饺子啥意思(第一次去丈人家)

    网友投稿:小弟今年趁中秋第一次去丈人家,买了388的月饼一盒,带了两瓶好酒,外加一条中华烟昨天中午吃罢饭要回去,丈母娘临走前给了我10斤大枣,枣也不是当地特产十斤还挺沉,摸不着头脑各位成功人士帮分析分析,第一次没经验啊,接下来我们就来聊聊关于第一次去丈母娘家包饺子啥意思?第一次去丈母娘家包饺子啥意思网友投稿:小弟今年趁中秋第一次去丈人家,买了388的月饼一盒,带了两瓶好酒,外加一条中华烟。