大型网站技术架构详解 之一 大型网站架构演化

news/2024/5/19 8:33:07/文章来源:https://blog.csdn.net/CaiFeiYueLe/article/details/89074752

1. 大型网站架构演化

如果把20世纪90年代初CERN(欧洲核子研究组织)正式发布Web标准和第一个Web服务的出现当作互联网站的开始,那么只经历了20多年的时间,但是时至今日,互联网对人们的生活产生了巨大的改变。同时也看到,在互联网跨越式发展的过程中,在电子上午背后却是不堪重负的网站架构,某些B2C网站逢促销比宕机成为一种规律,铁道部电子客票官方网站的频繁故障和操作延迟更是将这一想象发挥的淋漓尽致。

1.1 大型网站软件系统的特点

**特点如下

  • 高并发,大流量--需要面对高并发用户,大流量访问
  • 高可用--系统7*24小时不间断服务
  • 海量数据--需要存储、管理海量数据,需要使用大量服务器
  • 用户分布广泛,网络情况复杂--许多大型互联网都是伪全球用户提供服务,各地网络情况千差万别。在国内,还存在各个运营商网络通信难的问题
  • 安全环境恶劣--由于互联网的开放性,使得互联网容易受到攻击,大型网站几乎每天都会被黑客攻击
  • 需求快速变更,发布频繁--大型网站基本每周都有新版本发布上线,中小型企业发布更为频繁
  • 渐进式发展--与传统企业不同,几乎所有的大型互联网站都是从一个小型网站开始,主键发展起来的。Facebook是扎克伯格在哈佛大学宿舍里开发的;Google第一台服务器部署在斯坦福大学实验室里;阿里巴巴则是在马云的客厅里诞生的。。。

**

1.2 大型网站架构演化发展过程

大型网站的技术挑战主要来源于庞大的用户,高并发的访问和海量的数据;任何简单的业务一旦需要处理以P计的数据和面对数以亿计的用户,问题就会变得很棘手,大型网站架构主要处理这类问题。

1.2.1 初始阶段的网站架构

应用程序、数据库、文件等所有的资源在一台 服务器上。通常操作系统使用Linux,应用程序使用PHP开发,然后部署在Apache上,数据库使用MySQL。
初始阶段网站架构

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

随着网站业务的发展,一台服务器逐渐不能满足需求:越来越多的用户访问导致性能越来越差,越来越多的数据导致存储空间不足。这就需要将应用和数据分离。应用和数据分离后整个网站使用三台服务器:用用服务器、文件服务器和数据库服务器。应用服务器需要处理大量的业务逻辑,因此需要更快更强大的CPU;数据库服务器需要快速磁盘检索和数据缓存,因此需要更快的硬盘和更大的内存;文件服务器需要存储大量用户上传的文件,因此需要更多的硬盘。
应用和数据分离后,不同特性的服务器担任不同的服务角色,网站的并发处理能力和数据存储空间得到了很大的改善,支持网站进一步发展。但随着用户逐渐增多,网站又面临挑战:数据库压力太大导致访问延迟,进而影响整个网站的性能。

应用服务和数据服务分离

1.2.3 使用缓存改善网站性能

网站访问特点和显示世界的财富分配一样遵守二八定律:80%的业务访问集中在20%的数据上。所以,把这一小部分数据缓存在内存中,就可以减少访问数据库的压力,提高整个网站的数据访问速度。
缓存分为两种:缓存在应用服务器上的本地缓存和换存在专门的分布式服务器上的远程缓存。本地缓存更快一些,但受应用服务器内存限制。远程分布式缓存可以使用集群的方式,理论上可以做到不受内存容量限制的缓存服务。
网站使用缓存
使用缓存后,数据访问压力得到有效改善,但是单一应用服务器能够处理的请求连接有限,在网站访问高峰期,应用服务器成为整个网站的瓶颈。

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

使用集群是网站解决高并发、含量数据的常用手段。增加服务器分担原有服务器的访问集缓存压力,从而实现系统的可伸缩性。
应用服务器集群部署
通过负载均衡调度服务器,可将来自用户浏览器的访问请求分发到应用服务器中任何一台服务器。

1.2.5 数据库读写分离

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

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

CDN和反向代理基本原理都是缓存,区别于CDN部署在网络提供商的机房,使用户在请求网站服务时,可以从距离自己最近的网络提供商机房获取数据;反向代理则部署在网站的中心机房,当用户请求到达中心机房后,首先访问到的是反向代理服务器,如果缓存着用户请求的资源,将其直接返回。
网站使用CDN和反向代理加速访问
使用CDN和反向代理的目的是尽早返回数据给用户,一方面加快用户访问速度,另一方面也减轻后端服务器的负载压力。

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

数据库经过读写分离后,从一台服务器拆分成两台,但是随着网站业务的发展依然不能满足需求,这时需要使用分布式数据库。
分布式数据库是数据库拆分的最后手段,只有在单表数据非常庞大的时候才使用。不到不得已,网站常用的数据库拆分手段是业务分库,将不同的数据库部署在不同的物理服务器上。
分布式文件和数据库系统

1.2.8 使用NoSQL和搜索引擎

随着网站业务越来越复杂,对数据存储和检索的需求也越来越复杂,网站需要采用一些非关系数据库技术如NoSQL和非数据库查询技术如搜索引擎。应用服务器可以通过统一数据访问模块访问各种数据。
使用NoSQL系统和搜索引擎

1.2.9 业务拆分

将一个网站拆分成不同的应用,每个应用独立部署维护,应用之间可以通过超链接建立关系,也可以通过消息队列进行数据分发。
应用拆分

1.2.10 分布式服务

随着业务拆分越来越小,存储系统越来越大;每一个应用系统执行许多相同的业务操作,比如用户管理、商品管理等,那么可以将这些共用的业务提取出来,独立部署。通过分布式服务调用共用业务服务以完成具体业务操作。
在这里插入图片描述

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

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

相关文章

架构 之四 瞬时响应:网站的高性能架构

网站的性能是客观的指标,可以具体体现到响应时间、吞吐量等技术指标,同时也是主观的感受,不同的用户感受不同。 4.1 网站性能测试 不同视角下的网站性能有不同的标准,也有不同的手段。 4.1.1 不同视角下的网站性能 1. 用户视角…

2017织梦最简单的修改网站地图目录的方法

本文来自IT摆渡网,欢迎转载,请标明出处。 很多用织梦的seo都会发现织梦生成的网站地图不是在根目录,而且是生成在dede文件夹里的,但是dede里面的文件都比较重要,一般我们在robots.txt中都禁止蜘蛛爬行的。这样相对seo…

织梦网站安全防范操作

本文转自IT摆渡网欢迎转载,请标明出处。 更多文章请阅读 dede问题修复 前言: 很多时候,咱们作为站长朋友经常会碰到安全或者被攻击的安全隐患,除开日常备份之外,咱们还需要做好该做的安全防范操作,今天…

织梦dedeCMS网站如何插入自动推送代码

本文转自IT摆渡网欢迎转载,请标明出处。 更多文章请阅读 织梦教程 之前咱们讲了实时推送,也讲了网站地图,今天我们一起来讲讲自动推送,都是可以加速收录的! 经过大量的实验,每一点做到极致,收录不再是问…

seo快速上首页五大策略技巧

本文转自IT摆渡网欢迎转载,请标明出处。 更多文章请阅读 seo初级教程 seo快速上首页是每个seo优化人员所想的,尤其是新手seo人员都会希望自己做的网站能到通过自己的seo技术快速上首页。但是seo优化本身却又是一个漫长枯燥的等待,那么我们…

seo必须知道的6大点

本文转自IT摆渡网欢迎转载,请标明出处。 更多文章请阅读 SEO优化网络推广方法 “外链为王,内容为皇”的说法在seo行业似乎已经成为了不变的定理,让众多行业人士忽略了网站结构的建设。外链、内容固然重要,但是不能厚此薄彼&am…

SEO技术问答:网站被黑被劫持了怎么办

本文转自IT摆渡网欢迎转载,请标明出处。 更多文章请阅读 SEO教程 网站遇到被黑,被恶意镜像怎么办?这是站长们最头疼的问题,只是有网站都有遇到过。今天无忧哥具体来讲讲几个安全防护和解决的办法,以供参考。 问:我…

SEO技术问答:网站上线一个月了怎么没收录

本文转自IT摆渡网欢迎转载,请标明出处。 更多文章请阅读 SEO优化网络推广方法 我们所讲的网站上线,指的是网站已经向百度提交(或者是蜘蛛已经有来抓取网站)都属于是网线上线,包含站长主动提交或无意被抓取,都算作上线。 正常情…

❤️【c++基础知识系列0】语言优点及入门网站推荐❤️

目录 一、初识C二、c入门 一、初识C C是一门很基础的编程语言,所谓编程就是把我们想要电脑实现的功能告诉电脑,让电脑按照一定的规则去实现,编程语言是人和电脑沟通的一个桥梁。 就像人类的语言一样,编程语言的种类也众多&…

谷歌Chrome浏览器无法打开网页,提示您与此网站之间建立不安全连接【解决】

在第一次使用谷歌时,往往忽略了登录谷歌账号,所以导致不能正常打开网页。 如果不想登录账号也可以正常上网! 第一步:进入设置选项选择高级 第二步:关闭允许登录Chrome 现在你就可以正常访问网页了

Tomcat 爆出高危漏洞!可导致网站、数据泄露!附解决方案

漏洞背景 安全公告编号:CNTA-2020-0004 2020年02月20日, 360CERT 监测发现 国家信息安全漏洞共享平台(CNVD) 收录了 CNVD-2020-10487 Apache Tomcat文件包含漏洞 CNVD-2020-10487/CVE-2020-1938是文件包含漏洞,攻击者可利用该高危漏洞读取…

大牛常逛的,程序员必备“九”大网站

对于程序员来说值得收藏的网站很多,今天把我自己知道的几个网站整理分享给大家 1、Dribbble设计达人(https://dribbble.com/) Dribbble是一个面向创作家、艺术工作者、设计师等创意类作品的人群,提供作品在线服务,供…

名校认证证书、免费课程……留学生不会告诉你的10个宝藏自学网站

大家好!我是LifeWORK青年社群的子宁 随着互联网的快速发展,我们的学习环境有了天翻地覆的变化,知识获取变的非常便捷,而且网上资源多得可怕,基本上覆盖了我们从小学到大学所有的阶段。 其实互联网提供的学习资源非常丰…

使用SSM+Maven开发的一个类似Bilibili的视频网站[弹幕版]

前言 因为学校的课程感觉学不到东西,所以自己上网找资料学习,做项目。大学老师讲SSM的时候,先简单地介绍了SSM,上来就给我们发了一个Gradle项目让我们导入到 IDEA 里面,然后就开始输出helloworld、连数据库&#xff0…

巡更网站部署出现记录

巡更网站的数据库和网站代码开发之初都在公司两台服务器,开发需求满足后要部署到客户公司的服务器,在此记录部署时遇到的一些问题和解决方法。 准备工作 1.上司利用远程把客户公司数据库服务器( Mysql )和网站服务器(Ubuntu-server下Apache…

第一:新建一个springboot网站项目

借此开发教程,讲解如何快速搭建一个简单的物资管理系统,可供开发者在类似场景中提供思路和参考。 第一步: 新建一个WEB项目 官网地址:https://start.spring.io 第二步: 新建一个controller包,在包下面新建…

利用Elasticsearch 的java 客户端为网站开发一个搜索服务

Elasticsearch 是什么 百科上得描述,Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是…

网站头部 html

网站头部* *处女作 第一次自己制作,略简单,略朴素 页面大概就这样了。。。正在学CSS,就按新学的试了一下 当鼠标放在这个[English]or[Chinese]时,字体透明度级度增加,效果如图: 一样的样式,…

120行代码爬取电子书网站

无聊的练习。。。貌似网站真的有毒,我的电脑多了一个广告。。。fuck 换做好几年前我们看电子书都是在网上下载txt文件的书籍,现在各种APP阅读软件实在方便太多。 那么txt的文件就没用了吗?不呀,可以下载放kindle阅读呀&#xff…

网站图片多导致网站加载慢怎么解决?

就以本站为例,我发现网站速度加载特别慢,那么好,直接打开浏览器开发者面板找问题,在network面板下我们先清空所有请求信息,然后强刷网页(CtrlF5),看看是那些资源请求影响了网站速度: 我这里呢…