大型网站架构演进历程

news/2024/5/13 19:42:25/文章来源:https://blog.csdn.net/kuangxie4668/article/details/103761812

大型网站架构演进历程

  • Web1.0 静态网站
  • Web2.0
  • 应用服务和数据分离
  • 使用缓存改善网站性能
  • 使用应用服务器集群改善网站的并发处理能力
  • 数据库读写分离
  • 使用搜索引擎
  • 业务拆分
  • 分布式服务

Web1.0 静态网站

在这里插入图片描述
大型网站都是从小型网站发展起来的
网站架构也是一样
网站刚开始搭建处于雏形阶段,访问量小,一台服务器完全够用
也是大部分企业级应用的选择
所有的网站都是静态的网站,没有和用户的交互,都是单向的

Web2.0

在这里插入图片描述
在1.0版本基础上增加了数据库
现在用户和服务器之间可以说是双向的交互
用户可以查询、增加、删除一个数据,这些数据都会保存到数据库里面

应用程序,数据库,文件都部署在一台服务器的

应用服务和数据分离

在这里插入图片描述
​随着业务的发展,一台服务器不能满足业务需求:
越来越多的用户访问导致性能越来越差
越来越多的数据导致服务器存储空间不足
这就需要将应用和数据分离
应用和数据分离后整个网站使用两(三)台服务器,应用服务器,文件服务器,(数据库服务器)

应用和数据分离后
不同特性的服务器承担不同的服务角色
网站的并发处理能力和数据存储都得到了很大的改善,支持业务的进一步发展
但是随着业务的增多,访问量增大,网站又一次面临挑战
数据库压力太多导致访问延迟,进而影响整个网站的性能,用户体验收到影响

使用缓存改善网站性能

在这里插入图片描述
网站访问特点和现实世界的财富分配通常符合二八定律: 80%的业务访问集中在20% 的数据上
淘宝买家浏览的商品集中在少部分成交数多、评价良好的商品上
百度搜索的关键词集中在少部分热门词汇上,搜索出来的词条你也会浏览前两页的内容。
既然大部分的浏览都只会放在一小部分数据上
那么就能把这些数据缓存起来放在内存中
就可以减少数据库的压力
从而提高整个网站的数据访问速度
改善数据库的写入性能

使用缓存后,有效的改善了数据库访问的压力,
但是单一应用程序的服务器能够处理的连接有限
在网站访问的高峰期间,应用服务器会成为网站的瓶颈

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

在这里插入图片描述
使用集群是解决高并发,海量数据问题的关键手段
当一台服务器的处理能力、存储空间不足的时候,不要尝试去更换一台存储量更大的服务器
而是考虑集群部署
因为对于大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务

应用服务器集群部署,使用负载均衡服务器做负载控制
能够改善流量峰值对应用服务器的压力
避免单一服务器承担更多的请求压力
如果还有更多的请求,那么就在现有的基础上增加更多的应用服务器。

数据库读写分离

在这里插入图片描述
使用缓存后,能够改善一部分的数据库访问压力
使绝大多数数据读操作访问不用通过数据库就能完成
但是仍有一部分读(缓存访问不命中,缓存过期)和全部的写操作都会直接访问数据库
在网站到达一定的规模后,也会增大数据库的压力
​目前大部分主流数据库都提供主从热备功能
通过配置两台数据库搭建主从关系
可以将一台数据库服务器的数据更新同步到另一台服务器上
网站可以利用这一特性,实现数据库的读写分离的功能,从而改善数据库的压力。

应用在写数据的时候,访问主服务器
在读数据的时候,访问从服务器
主数据库通过主从复制的功能将数据同步更新到从服务器
这样当有读操作的时候,就会直接访问从服务器
当有写操作的时候,会直接访问主服务器
为了便于应用程序访问读写分离后的数据库
通常在应用服务器端使用专门的数据访问模块,使数据库读写分离对应用透明

使用搜索引擎

在这里插入图片描述
随着网站业务的扩大,对数据存储和检索的要求也越来越高,网站需要采用一些非关系型数据库技术如NoSQL和非数据库查询技术和搜索引擎

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

业务拆分

在这里插入图片描述
​大型网站为了应对日益繁杂的业务场景
通过使用分而治之的方式将整个网站的业务拆分成不同的产品线
如大型购物交易网站就会将首页、商铺、订单、买家、卖家等拆分成不同的产品线
分归不同的业务部门负责管理

分布式服务

在这里插入图片描述
随着业务拆分越来越小,存储系统越来越大,应用系统的整体复杂度呈指数增长,部署越来越困难
由于所有的应用都要和数据库系统连接
在数万台服务器规模的网站中,这些连接的数目是服务器规模的平方
导致存数据库连接资源不足,拒绝服务。
​ 既然每一个应用系统都需要执行许多相同的业务操作,可以把相同的业务提取出来
由这些可服用的业务连接数据库。提供公用业务服务。

大型网站演化到这里,基本上大多数的技术问题都可以解决
诸如跨数据中心的实时数据同步和具体网站业务相关的问题都可以通过组合改进现有的技术架构来解决。

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

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

相关文章

18个优秀的在线图片编辑服务网站

18个优秀的在线图片编辑服务网站 作者:Jason Ng 说起编辑图片,可能大多数人都会马上想起强大的Photoshop。事实上,除了购买或下载盗版的PS之外,你还可以使用很多优秀在线图片编辑服务,这些网站大多数都是免费的。对于大部分的…

网站被微信浏览器拦截怎么办 微信屏蔽网址打开如何解决

先来认识一下微信屏蔽的原理。按原理逐个攻破,整理如下:微信屏蔽的原理 一、微信系统的两个检测手段:第一是系统的自动检测;第二是微信工作人员的人工检测。 二、 人工的检测很好理解,有用户投诉举报,在多…

安全参透之旅第2章 FOCA网站元数据侦查工具

什么是元数据?就是有关数据的数据。它是有关特定数据集、对象或资源的描述性信息,包括所采用的格式及其创建时间和创建者。 对于参透测试人员,元数据可能很有用,因为它含有跟创建文件的系统有关的信息,比如&#xff1…

kali攻防第6章 SQLMAP介绍及ASP网站渗透

SQLMAP介绍及ASP网站渗透 准备工具 1、kali_linux系统 IP 10.10.10.131 3、Sqlpmap 入注工具 步骤: 1、 -u “检测是否存在注入” 返回数据库的名字 2、 3、 4、 参数解释: 1、user 根据经验 确定这是用户表 2、--columns 猜列表名 根…

kali攻防第7章 SQLMAP介绍之PHP网站渗透

SQLMAP介绍之PHP网站渗透 准备工具 1、KALI攻击系统IP :10.10.10.131 2、受害网站: 3、Sqlmap 入注工具 步骤: 1、检测:Sqlmap -u “” 2、sqlmap -u "" --is-dba 3、sqlmap -u “” --dbs 4、sqlmap -u “” --current-db …

python爬取动态网站实例——以爬取豆瓣电影分类排行榜为例

最近在编写 python 爬虫的时候,发现有时候爬取的网页和实际看到的效果不一致,经过各种搜索之后发现这时因为网页在加载的时候动态加载的结果,所以,为了可以获得相应的结果,需要模拟相应的请求。本文以 豆瓣电影排行榜 …

python爬取有声小说网站实现自动下载实例

最近想下载一些有声小说,但是苦于没有找到批量下载,每次都是单集单集的下载的,觉得很麻烦,就考虑用python写一个爬虫来实现自动搜集小说,自动下载。下面就是开始展开漫漫的爬虫之路。 基础的就不多说了,重…

如何拥有(建)一个自己的网站-虚拟主机建站

如何拥有(建)一个自己的网站-基础 如何拥有(建)一个自己的网站-准备 1.拥有一个虚拟主机 2.登录进入虚拟主机 3.点击进入域名绑定 域名绑定相当于让主机认可来自域名的访问,同时认可它访问主机上存放的内容。 服务器建站也有类似操作。 点击确定 即可 4.域名解析…

如何拥有(建)一个自己的网站-服务器建站

如何拥有(建)一个自己的网站-基础 如何拥有(建)一个自己的网站-准备 上面是一些需要知道的东西 1.拥有一台服务器 可以前往各大厂商购买,比方说腾讯云,阿里云等等,就不推荐了。 2.服务器可以选Linux系统 这里用Debian演示 3.SSH连接到服…

Hadoop学习笔记—20.网站日志分析项目案例(一)项目介绍

网站日志分析项目案例(一)项目介绍:当前页面 网站日志分析项目案例(二)数据清洗:http://www.cnblogs.com/edisonchou/p/4458219.html 网站日志分析项目案例(三)统计分析:…

Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗

网站日志分析项目案例(一)项目介绍:http://www.cnblogs.com/edisonchou/p/4449082.html 网站日志分析项目案例(二)数据清洗:当前页面 网站日志分析项目案例(三)统计分析&#xff1a…

Hadoop学习笔记—20.网站日志分析项目案例(三)统计分析

网站日志分析项目案例(一)项目介绍:http://www.cnblogs.com/edisonchou/p/4449082.html 网站日志分析项目案例(二)数据清洗:http://www.cnblogs.com/edisonchou/p/4458219.html 网站日志分析项目案例&#…

如何从0到1搭建站内搜索?

** 一、为什么要做站内搜索 ** 对于一个单独的内容站来说,搜索其实不算是用户的常用功能,因为在绝大部分情况下,用户会更加偏向于询问他人,也就是传说中的伸手党。当无法从他人获取自己想要的内容时,用户才会倾向于去…

大型网站框架的演变

之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变 的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什…

10个学习Android开发的网站推荐

1. Android Developers 作为一个Android开发者,官网的资料当然不可错过,从设计,培训,指南,文档,都不应该错过,在以后的学习过程中慢慢理解体会。 2. Android Guides - CodePath CodePath是国外一…

网站前端性能优化之javascript和css

之前看过Yahoo团队写的一篇关于网站性能优化的文章,文章是2010年左右写的,虽然有点老,但是很多方面还是很有借鉴意义的。关于css的性能优化,他提到了如下几点: CSS性能优化 1、把样式表置于顶部 现把样式表放到文档…

腾讯云轻量级服务器宝塔快速部署网站

1:首先我们可以登录腾讯云的官网。购买一个轻量级的服务器,这个服务器是很便宜的。第一次购买。 购买成功以后,我们会收到短信,短信会提示你已经购买成功。我们这个时候可以进入到控制台。 到了自己的控制台以后,我们要…

腾讯云服务器快速创建一个表白网站。简单可操作。

接上一篇博客,有了一个自己购买腾讯云服务器的基础,然后部署宝塔。这个时候我们就可以使用它来部署网站了。这是一个程序员表白网站。 我们先使用Xshell连接自己的服务器。好长时间忘记了登录密码用户名。我们输入bt default 这个时候我们先登入到了自己…

用Ruby on Rails做的网站

用Ruby on Rails做的网站 Basecamp Backpack Campfire Writeboard Ta-Da List Odeo 43 Things Pluggd good Yakima Herald-Republic Newspaper The Web 2.0 Show Shower in a Box Time Tracking on Rails Cardplayer.com Penny Arcade Pitchfork Media In…