大型网站架构演化概览

news/2024/5/9 5:25:23/文章来源:https://blog.csdn.net/weixin_30390075/article/details/98363625

1.大型网站的特点:

  相比传统企业应用系统,大型互联网应用系统有以下特点:

  • 高并发、大流量:需要面对高并发用户,大流量访问。
  • 高可用:系统需要7*24小时不间断服务。
  • 海量数据:需要储存、管理海量数据,需要使用大量服务器。
  • 用户分布广泛,网络情况复杂
  • 安全环境恶劣:黑客攻击。
  • 需求快速变更,发布频繁
  • 渐进式发展:大型互联网几乎都是从小网站发展起来的,不像传统行业一开始需求就相对固定。

  那么大型网站是如何做到高可用、高性能、易扩展、可伸缩且安全的网站,又是怎样演变的了?

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

2.1 初始化阶段的网站架构

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

 

 

2.2 应用服务和数据服务分离

随着网站用户的增加,不断增加的访问数量,和大量的文件储存,一台服务器已经不能满足需求,这时就需要分离应用和数据。

分离后整个网站使用三台服务器:应用服务器、文件服务器、数据库服务器。

三台服务器对硬件的要求不同:

  • 应用服务器需要处理大量业务逻辑,需要更好的cpu;
  • 数据库服务器需要快速检索磁盘和数据缓存,因此需要更快的硬盘和更大的内存;
  • 文件服务器需要储存大量用户上传的文件,因此需要更大的硬盘。

 

 

2.3 使用缓存改善网站性能

随着用户进一步增加,数据库压力太大导致访问延迟。而大部分数据的访问,总是集中在某些热点数据上,例如淘宝商品访问,总是集中在评价最高的商品上。

那么我们可以将这一部分热点数据,缓存到内存中,以减少数据库的访问压力。

网站可使用的缓存分为两种:

  • 本地缓存:缓存在应用服务器上,访问速度快,但受应用服务器的内存限制。
  • 远程缓存:缓存在专门的分布式缓存服务器上,理论上不受内存容量限制。

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

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

单一应用服务器性能是有上限的,这种情况下,更好的方式是多个服务器的集群来分担原有服务器的访问及储存压力,从而实现系统的可伸缩性。

应用服务器集群搭建后,通过负载均衡调度服务器,将请求分发到集中中任何一台机器上。

2.5 数据库读写分离

网站使用缓存后,绝大部分数据都可以从缓存中获取,但在部分情况下任然需要访问数据库:

  • 缓存未命中(请求未能从缓存系统中找到匹配的缓存)
  • 缓存过期
  • 全部写操作

虽然只有部分情况才会访问数据库,但当用户基数不断增大,数据库也会不堪重负。

这种情况下,可以通过读写分离,来减轻数据库的压力。

目前大部分主流数据库都支持主从热备(双机热备),通过设定两台数据库的主从关系,可以将一台数据库服务器的数据同步更新到另一台服务器上,网站利用数据库的这个功能来实现读写分离。

在写数据时访问主数据库,同时主数据库同步数据到从数据库,在读取数据时,就可以访问从数据库,同时还需要一个数据访问模块,让读写分离对应用程序透明,减少代码依赖。

 

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

随着网站规模的扩大,用户可能分布在全国各地,不同地方的网络环境不同,要保证响应速度,就需要加速网站的访问速度。

主要的加速手段:

  • CDN
  • 反向代理

这两种方式都基于缓存,不同点在于:

  • CDN部署在网络提供商的机房,用户在请求数据时,可以从离自己最近的网络提供商出获取数据。
  • 反向代理部署在网站中心机房,用户在请求数据时,首先访问的时反响代理服务器,如果缓存着用户请求的资源,就直接将缓存返回给用户。

 

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

数据库经过读写分离,拆分为两台服务器,但是随着网站发展任然不能满足需求,文件服务器也是一样。

这时就需要分布式的数据库系统和文件系统。

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

 

2.8 使用NoSQL和搜索引擎

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

NoSQL和搜索引擎,对可伸缩的分布式系统有很好的支持。面对如此多的数据源,应用服务器通过统一的数据访问模块来访问不同的数据源。

 

2.9 业务拆分

 大型网站面对日益复杂的业务场景,根据产品线划分,可以将一个网站拆成多个应用,每个应用都独立部署维护。

每个应用之间的数据关联有如下几种方式:

  • 通过访问同一个数据储存系统(最常用)。
  • 通过超链接建立关系。
  • 通过消息队列进行数据分发。

2.10 分布式服务

随着业务拆分越来越细,应用系统越来越复杂,并且由于所有应用要和所有数据库连接,在数万台服务器规模的网站中,会导致数据库连接资源不足,拒绝服务。

应用系统中有许多相同的业务操作,比如用户管理、商品管理等,那么可以将这些相同的业务提取出来独立部署,由这些可复用的业务连接数据库,通过分布式服务调用共用业务服务完成具体操作。

 

 

*本文是《大型网站技术架构 核心原理与案例分析》的章节总结

转载于:https://www.cnblogs.com/wanshiming/p/9557797.html

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

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

相关文章

asp自助建站系统_凡科建站对于seo优化友好吗?

最早之前的凡科可以说,开始确实对百度SEO优化是不利,这也不他一家的问题,起初自助建站系统仅仅是为了降门槛让更的企业有网站。后面随着市场的需求和企业对功能的要求,国内绝大部分的自助建站系统对SEO进行了重点优化和改进。如阿…

用java实现楼层导航_JS实现网站楼层导航效果

壹 ❀ 引我在angularjs中使用锚点这篇文章中,踩坑并简单实现了楼层导航中点击小图标跳转到对应楼层的功能;但对于楼层导航而言,还有个重要的功能就是,随着滚动条滚动,达到某层时得同步点亮楼层导航的小图片。由于我前面…

html+浏览器自动全屏,web 使网站在浏览器中全屏显示 fullscreen=yes

关需朋者说上事是础一发一开程和开数的目前间于全屏(FullScr新直能分支调二浏页器朋代说,事刚een)很久以前它不曾明机式近扯多相显端幻近扯多相显端幻,浏览器就已经有全屏的概念的了。IE的open方法中可以配置上FullScreen参数来让打开的页面全屏化。但是…

网站建设教程:虚拟主机如何安装PageAdmin建站系统

想要做一个网站,可以选择的建站程序有很多种,如PageAdmin、Discuz、zblog等等。每个建站程序都有它独特的优势,如discuz适合一般的论坛社区,zblog则适用于博客类网站,而PageAdmin就是通用性网站系统。 PageAdmin是一套…

美术 建模3D模型网站推荐

免费游戏引擎专用商店 Unity 商店:Unity Asset Store - The Best Assets for Game Making Unreal 商城:Marketplace - UE Marketplace 以上商店资源只能用在自有引擎中(不能把Unity商店资源用在UE4商业项目中) 以下网站排名不…

CSDN盗版网站https://www.twblogs.net/

https://www.twblogs.net/这个盗用连接网站,把所有CSDN的博客全都复制了一遍。把文字转成了繁体,估计是应该不是大陆地区.... 各位可以搜索任意博客名字。 压根就没注册过...平白无故上了盗版网站 问了下CSDN的客服,他们不管这事》。。。。 广电总局侵…

美术-常用免费贴图网站分享

https://ambientcg.com/ 免费材质下载,无限制,资源较多 ambientCG - Free Public Domain PBR Materialshttps://ambientcg.com/ https://www.poliigon.com/ 部分免费,无限制,免费资源 Poliigon - Library of textures, model…

一些收藏默认网站后缀

菜刀链接密码默认 /plus/90sec.php||||尝试用菜刀连接--密码 guige /plus/spider.php||||spider菜刀连接 /plus/x.php||||m菜刀密码m /plus/service.php||||尝试用菜刀连接--密码 fuwu /plus/av.php||||尝试用菜刀连接--密码 110 /plus/bakup.hp||||尝试用菜刀连接--密码 mb /p…

SEO优化技术的简介

严格来讲,seo技术没有所谓的严格的黑帽与白帽之分。即使是正常的301重定向,在某些情况下也能作用于黑帽seo技术。我们能判定一个人是真正的好人还是坏人么?答案是否定的。之所以解密所谓的黑帽seo,是想满足很多朋友的遐想。 一说到…

html登录页面源码_今日头条新闻资讯网站源码模板 带手机版,无采集规则失效...

此火车头采集规则已经失效 需要火车头采集规则的请自己重新编写源码名称: 仿《今日头条》网站程序开发环境:PHP帝国cms 7.2 GBK空间支持:PHP MySQL使用帝国7.2 GBK版二次开发,程序具有极好的稳定,安全,高性…

免费python培训网站_免费学习Python编程的3个优秀的网站资源

用Python编写代码一点都不难,事实上它一直被赞誉为最容易学的编程语言。如果你准备学习web开发, Python是一个不错的开始,甚至想做游戏的话,用Python来开发游戏的资源也有很多。这是快速学习这门语言的途径之一。 本人对于Python学…

python combinations_「combinations」itertools.combinations()结构及上下文||组合 - seo实验室...

combinations itertools 官方文档 itertools是2.3版本加入的用于创建循环用迭代器的函数模块。 itertools 模块提供的迭代器函数有以下几种类型:无限迭代器:生成一个无限序列,比如自然数序列 1, 2, 3, 4, ...; 有限迭代器&#xf…

利用其他网站的搜索结果_社交媒体在线上旅游信息搜索中的作用

互联网和即时通讯技术的飞速发展使得社交媒体成为热点,改变了用户的社交网络并突出了用户的核心地位。小红书等社交媒体也成为旅行者获取信息的重要来源。Zheng Xiang和Ulrike Gretzel两位学者在这一背景下探究了社交媒体出现在搜索引擎中的程度,证实了社…

scrapy 搜索关键字_解析搜索引擎抓取网站目标关键词原理

一个网站有几百甚至几千个关键词,怎么让搜索引擎知道网站的目标关键词是什么呢?解析搜索引擎抓取网站目标关键词原理一、网站标题(Title),网站标题是搜索引擎最重视的部分,通常情况下,无论网站是否存在keywords标签和d…

php 开源产品,PHP免费开源企业产品建站系统含手机站

本系统采用PHPmysql/access/sqlite免费建站整站系统,所有源码开源完整,支持手机自动同步。zzzphp功能1.支持mysql,sqlite,access三种数据库。2.模板和标签与asp版的zzzcms通用。3.asp版的zzzcms的access数据库可直接使用。4.支持手…

go-micro examples 中web form 代码学习(web类 网站的微服务架构:micro api + micro web + web service + api service)

以下对应 example/web 例子: main.go 代码如下: package mainimport ("fmt""log""net/http""github.com/micro/go-micro/web" )func helloWorldHandler(w http.ResponseWriter, r *http.Request) {fmt.Fprint…

css网页favicon_设置网站图标(favicon)

每个网站都有自己的图标(favicon),除了便于识别与书签收藏,也是一个厂牌吧。浏览器可以将favicon显示于浏览器的地址栏中,也可置于书签列表的网站名前,还可以放在标签式浏览界面中的页标题前。但是我们自己的网站,例如…

百度统计ajax,web网站统计工具之“百度统计”

百度统计是什么?百度统计是百度推出的一款免费的专业网站流量分析工具,能够告诉用户访客是如何找到并浏览用户的网站,在网站上做了些什么,有了这些信息,可以帮助用户改善访客在用户的网站上的使用体验。百度统计有什么…

修改网站首页批处理_天门关键词优化_推荐实用的关键词拓展工具弥补网站排名少的缺憾...

发布时间:2020-11-15 21:11:31SEO优化师将工作核心放在高质量的内容建设,为网站创建更多的信息内容,但是网站关键词排名仍然是少数。有哪些方法或者工作可以拓展关键词呢?接下来,优帮云小编将为您介绍关键词扩展工具和方法&#x…

先用knn对数据集进行预处理再利用神经网络对数据集进行分类_网站数据分析— 常用商品运营分析模型分享...

点击上方蓝色字关注我们~来源:掘金本节将介绍几个常用的商品分析模型,包括商品价格敏感度模型、新产品市场定位模型、销售预测模型、商品关联销售模型、异常订单检测模型、商品规划的最优组合。1商品价格敏感度模型商品价格敏感度模型是指通过研究找到用…