常见的网站服务器架构有哪些?

news/2024/5/15 8:28:21/文章来源:https://blog.csdn.net/weixin_38653290/article/details/84782095

1. 初始阶段的网站架构

一般来讲,大型网站都是从小型网站发展而来,一开始的架构都比较简单,随着业务复杂和用户量的激增,才开始做很多架构上的改进。当它还是小型网站的时候,没有太多访客,一般来讲只需要一台服务器就够了,这时应用程序、数据库、文件等所有资源都在一台服务器上


13553988-6e2ad69d9738e43f.png

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

随着网站业务的发展和用户量的增加,一台服务器就无法再满足需求了。大量用户访问导致访问速度越来越慢,而逐渐增加的数据也会导致存储空间不足。这时就需要将应用和数据分离,应用和数据分离后整个网站使用 3 台服务器:应用服务器、文件服务器和数据库服务器。这 3 台服务器对硬件资源的要求各不相同:

应用服务器业务逻辑,需要强大的CPU

数据库服务器对磁盘读写操作很多,需要更快的磁盘和更大的内存

文件服务器存储用户上传的文件,因此需要更大的磁盘空间


13553988-66cfb2d046075639.png

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

随着用户再增加,网站又会一次面临挑战:数据库压力太大导致整站访问效率再此下降,用户体验受到影响。一个网站,往往 80% 的业务访问集中在 20% 的数据上,比如微博请求量最多的肯定是那些千万级粉丝的大 V 的微博,而几乎没有人关注的你的首页,除了自己想起来之外根本不会被打开。既然大部分业务访问集中在一小部分数据上,那就把这一小部分数据先提前缓存在内存中,而不是每次都去数据库读取,这样就可以减少数据库的访问压力,从而提高整个网站的访问速度。

网站使用的缓存一般分为缓存到应用服务器或者缓存在专门的分布式缓存服务器。缓存到应用服务器自己的访问速度快很多,但是受自身内存限制,往往不太适用。远程分布式缓存使用一个集群专门负责缓存服务,当内存不够还可以轻松得动态扩容。


13553988-b064a628f1f7a905.png

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

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


13553988-f5f93549c954dbf7.png

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

5. 数据库读写分离

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

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


13553988-b8f4609df57aaffe.png

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

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


13553988-af4e4d147e08cf97.png

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

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


13553988-05e92321e3db1f1d.png

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

8. 使用 NoSQL 和搜索引擎

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


13553988-bca26e5e301c49b4.png

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

9. 业务拆分

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

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


13553988-981a50088bbcf5f1.png

10. 分布式服务

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

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


13553988-c6740e62ecac9b55.png

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

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

相关文章

视频网站的几个有趣问题

目前的视频网站主要分为两类,一类以用户上传的内容为主(UGC网站),比如YouTube、优酷、土豆;另一类是专业视频内容为主,比如Hulu、Netflix、奇艺、搜狐。 第一类网站的视频数量非常大,以短视频为主,种类丰富…

ASP.NET网站权限设计实现——套用JQuery EasyUI列表显示数据、分页、查询

分类: C#日记ASP.net(vs2008平台下)(31) 版权声明:本文为博主原创文章,未经博主允许不得转载。 有时候闲的无聊,看到extjs那么肥大,真想把自己的项目改了,最近看到一款轻型的UI感觉不错,但是在…

国内网站数量直线下降:2021年仅剩422万个

最近,松松编辑杰哥从站长圈了解到,CNNIC近期发布2021年中国网站最新数量报告,截至2021年6月,我国网站数量累计为422万个! 根据CNNIC发布的第48次《中国互联网络发展状况统计报告》报告显示杰哥得知,截至到今年6月&…

记录一次基于docker的网站架构方案

这个是网站的大概架构 ps:dc监控用于监控容器状态,以及查看容器运行日志,快速启动容器 rancher用于快速升级以及快速部署服务,以及做了一个高可用防止容器宕机(容器需要写docker-compose) zabbix用于监控…

18个配色(色彩搭配)资源网站——设计师福利

无论是在品牌视觉形象的展示,还是传统广告和数字营销领域的推广,色彩搭配实在太重要了!然而,我们通常所说的:这个品牌真高端!真大气!最重要因素是由色彩搭配决定的,这个是给人最直接…

网站的关键!教你13步打造漂亮的WEB字体

今天,大多数浏览器已经默认支持Web字体,日趋增多的字体特性被嵌入最新版HTML和CSS标准中,Web字体即将迎来一个趋于复杂的崭新时代。这意味着网页设计师需要重新审视经典的字体规则——而这并非故事的结束。 印刷字体是静态的,而网…

大型网站架构系列:电商网站架构案例(1)

大型网站架构是一个系列文档,欢迎大家关注。本次分享主题:电商网站架构案例。从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型。除具备功能需求外,还具备一定的高性能&#xff0…

大型网站架构系列:电商网站架构案例(2)

电网网站架构案例系列的第二篇文章。主要讲解网站架构分析,网站架构优化,业务拆分,应用集群架构,多级缓存,分布式Session。 五、网站架构分析 根据以上预估,有几个问题: 需要部署大量的服务器&…

大型网站架构系列:电商网站架构案例(3)

本文章是电商网站架构案例的第三篇,主要介绍数据库集群,读写分离,分库分表,服务化,消息队列的使用,以及本电商案例的架构总结。 6.5数据库集群(读写分离,分库分表) 大型网…

大型网站架构系列:负载均衡详解(1)

面对大量用户访问、高并发请求,海量数据,可以使用高性能的服务器、大型数据库,存储设备,高性能Web服务器,采用高效率的编程语言比如(Go,Scala)等,当单机容量达到极限时,我们需要考虑业务拆分和分…

大型网站架构系列:负载均衡详解(3)

本次分享大纲 软件负载均衡概述Ngnix负载均衡Lvs负载均衡Haproxy负载均衡本次分享总结 一、软件负载均衡概述 硬件负载均衡性能优越,功能全面,但是价格昂贵,一般适合初期或者土豪级公司长期使用。因此软件负载均衡在互联网领域大量使用。常用…

大型网站架构系列:负载均衡详解(4)

本文是负载均衡详解的第四篇,主要介绍了LVS的三种请求转发模式和八种负载均衡算法,以及Haproxy的特点和负载均衡算法。具体参考文章,详见最后的链接。 三、LVS负载均衡 LVS是一个开源的软件,由毕业于国防科技大学的章文嵩博士于19…

大型网站架构系列:分布式消息队列(一)

以下是消息队列以下的大纲,本文主要介绍消息队列概述,消息队列应用场景和消息中间件示例(电商,日志系统)。 本次分享大纲 消息队列概述消息队列应用场景消息中间件示例JMS消息服务(见第二篇:大…

大型网站架构系列:消息队列(二)

本文是大型网站架构系列:消息队列(二),主要分享JMS消息服务,常用消息中间件(Active MQ,Rabbit MQ,Zero MQ,Kafka)。【第二篇的内容大部分为网络资源的整理和汇…

12个最佳的免费学习编程的游戏网站

在这篇文章中,我们对 200 多个编程游戏网站的各个方面进行了评估,包括是否免费、是否自由开源、是面对菜鸟还是有经验的程序员、支持的编程语言等等,然后遴选出这 12 个上佳的免费的编程游戏网站,希望能让你或你的朋友(或者你的孩…

11个最值得Java开发者收藏的网站

Java是一种面向对象的编程语言,由Sun Microsystems公司在1995年的时候正式发布。直到今天,Java都一直是最受欢迎的编程语言之一。如今,Java应用于各种各样的技术领域,例如网站开发、Android开发、游戏开发、大数据等等。 在世界各…

2020-08-27 KK日记,记录一下使用flask做的看小说网站

1、前言 虽然一直干着运维的工作,但是对编程却有莫名的兴趣,于是就依仗着大学时的一些编程基础,在空闲时间自学了python、flask框架、bootstrap、jquery,html等。并用此写了一个看爽文的“工具”。 2、设计思路 通过爬虫爬取感兴…

【易懂教程】在Github上搭建网站

首先,还是要说一下“写在前面的话”,文章属于个人学习笔记,抛砖引玉,希望能对你有微薄的帮助。 操作步骤: 既然是易懂教程,当然是图文并茂更能让你理解,将会大量采用图文形式进行讲解。 首先你…

手把手教你搭建网站环境——基于node后台的web服务

战前准备 下载好xftp(必备,用于上传你要部署的文件);xshell作为windows而言是个非常好用的工具,不过像阿里本来就有控制台,倒不是必备,但是那个控制塔的字符丑得一匹,实在看不下去,我用xhell只…