大型网站技术架构(1)

news/2024/5/20 21:07:19/文章来源:https://blog.csdn.net/weixin_34293902/article/details/86354356

网站都是从小网站一步一步发展为大型网站的,而这之中的挑战主要来自于庞大的用户、安全环境恶劣、高并发的访问和海量的数据,任何简单的业务处理,一旦需要处理数以 P 计的数据和面对数以亿计的用户时,问题就会变的很棘手

下面我们就来说说这个演变过程:

初始阶段

大型网站都是由小型网站演变而来的,网站架构也一样

小型网站最开始没有太多人访问,只需要一台服务器就绰绰有余,就像这样:

应用程序、数据库、文件等所有资源都在一台服务器上,通常使用 Linux PHP MySQL Apache 就可以完成整个项目部署,然后再买个域名,租一个廉价的服务器就可以开始我们的网站之旅了

应用服务与数据服务分离

随着业务的发展,逐渐的一台服务器已经不能满足需求,这时我们可以将 应用与数据分离

分离之后我们使用到三台服务器:应用服务器、文件服务器和数据库服务器,如下所示:

对于这三台服务器要求各不相同:

  • 应用服务器 要处理大量的业务逻辑,所以需要更好更快更强大的 CPU

  • 数据库服务器 需要快速的进行磁盘检索和数据缓存,因此需要更快的硬盘和更大的内存

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

应用与数据分离后,各个的职责变得更加专一,网站的性能得到进一步的提升,但随着用户的继续增加,我们需要对网站架构进一步优化

使用缓存改善性能

网站的访问一样遵循二八定律:80% 的业务访问集中在 20% 的数据上面

因此我们要对这一小部分的数据进行缓存来减轻数据库的访问压力,以提高整个网站的数据访问速度,改善数据库的读写性能

网站的缓存可以分为两种:缓存在应用服务器上的本地缓存和缓存在专门的分布式缓存服务器上的远程缓存

  • 本地缓存 的访问速度会快一些,但是受应用服务器内存限制,缓存数据量很有限,而且会出现内存争用的情况

  • 远程分布式缓存 可以使用集群的方式,部署大内存的服务器作为专门的缓存服务器,可以在理论上做到不受内存容量限制的缓存服务

如下所示:

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

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

使用集群是网站解决高并发,海量数据问题的常用手段,当你纵向提升到一定程度后,那就该开始横向提升了

当一台服务器的处理能力不足时,与其换一台更强大的服务器,不如增加一台服务器去分担原有的服务器压力。对于大型网站而言,无论多么强大的服务器,都满足不了持续增长的业务需求,更高效的方式就是增加服务器来分担压力

对于网站架构而言,如果增添一台新的服务器可以改善负载压力,那么就可以使用同样的方式来应对源源不断的业务需求,从而实现系统的可伸缩性

通过负载均衡调度服务器,可以将用户请求分发到应用服务器集群里的任何一台服务器上,如果有更多的用户,可以增加更多的应用服务器,使应用服务器的负载压力不再成为网站的性能问题

数据库读写分离

在使用了缓存后,大多数的操作不经过数据库访问就能完成,但仍有一部分读操作(缓存访问未命中,缓存过期)和所有的写操作需要访问数据库,在网站的用户量达到一定时,数据库的负载问题就来了

目前大多数的数据库都支持主从热备份,通过配置两台服务器的主从关系,可以将一台数据库服务器的数据更新同步到另一台,网站利用这一功能,实现数据库读写分离,从而进一步改善数据库负载压力

应用服务器在写操作的时候,访问主数据库,主数据库通过主从复制机制把数据同步更新到从数据库,这样当应用服务器进行读操作的时候,就能访问从数据库获取数据

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

CDN 和 反向代理 的基本原理都是缓存

  • CDN 部署在网络供应商的机房,用户在进行请求时,会从距离最近的网络供应商机房获取数据

  • 反向代理 则部署在中心机房,当用户请求到达中心机房后,会首先访问反向代理服务器,如果反向代理服务器中缓存这用户请求的资源,就直接返回给用户

使用 CDN 和 反向代理 都是为了尽快返回给用户数据,一方面加快用户访问速度,另一方面也减轻了后端服务器的压力

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

随着网站业务的继续发展,这时候就可以像分布式应用服务器一样,对数据库系统和文件系统进行分布式管理

分布式数据库 是网站数据库拆分的最后手段,一般我们可以采取业务分库,根据不同业务的数据库部署在不同的数据库服务器上

使用 NoSQL 和搜索引擎

这两个方式都是依赖于互联网的技术手段,应用服务器通过一个统一的数据访问模块来访问各种数据,从而减轻应用程序有多个数据源的麻烦

业务拆分

对于大型网站,我们可以分而治之,把整个网站的业务分为不同的模块,比如大型的交易购物完整可以分为首页、店铺、订单、买家等,分别交给不同的业务团队来负责

同时我们将一个网站根据模块划分拆分成多个应用,每个应用进行单独的部署和维护,应用之间通过超链接建立关系(指向不同的应用地址),最后通过相同的数据存储系统来构成一个互相关联的完整系统

分布式服务

随着业务拆分,整个系统越来越大,应用的整体复杂度呈指数级增加,部署维护越来越困难,并且所有的应用服务器都要与数据库服务连接, 在数万台服务器规模的情况下,这些连接的数目是服务器规模的平方,导致资源不足

这时候就要对相同的业务进行提取,独立部署,把这些可重用的业务和连接数据库等,提取出来作为公共业务服务,而应用系统只需要通过分布式服务访问公共业务服务完成业务操作

到这里,基本上大多数的技术问题都能得到解决,还有一些实时同步等具体业务问题也都可以通过现有的技术解决

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

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

相关文章

网站被百度停止推广并提示网站存在安全风险,不宜推广的处理方案

2019独角兽企业重金招聘Python工程师标准>>> 春节刚过完,上班的第一天,公司网站被百度停止推广了,百度推广提示:您的url被百度杀毒提示存在网址安全风险,故物料不宜推广;若有异议,请…

网站安全演讲稿

主要包括HTML字符破坏、外部提交、SQL注入、XSS跨站攻击等几个方面。

网站安全演讲稿

主要包括HTML字符破坏、外部提交、SQL注入、XSS跨站攻击等几个方面。

网站前端_EasyUI.基础入门.0001.jQuery EasyUI简单介绍与快速使用?

简单介绍:说明: EasyUI是一种基于jQuery且完全支持HTML5的用户界面插件集合,大大节省您网页开发的时间和规模,只需通过编写一些简单HTML标记,就可以定义用户界面,使用简单但功能强大下载: http://www.jeasyui.com/download/index.php界面组件:模版代码:<!DOCTYPE html> &…

要学会冷静面对网站被黑

在这个水深火热的互联网战场上&#xff0c;很多站长都遇到同行业的恶意攻击&#xff0c;黑客入侵等等安全性受到威胁的问题吧。小编当然也不例外&#xff0c;做优化两年多&#xff0c;间间断断的也与黑客斗争了两年多&#xff0c;从最初的手无足策到现在的淡然处之&#xff0c;…

这些资源网站为什么能获得5万知乎大佬推荐,而我错失了什么吗?

现在很多朋友可能只要是一听到资源网站&#xff0c;想必就会好奇是什么网站&#xff0c;用用看是不是由说的那么厉害&#xff01;其实资源网站给我们的诱惑是在是太大了&#xff0c;其主要原因是可以帮助我们搜索到很多意想不到的资源&#xff01; 为了回应大家的需求&#xff…

大型网站技术架构(四)网站的高性能架构

2019独角兽企业重金招聘Python工程师标准>>> 网站性能是客观的指标&#xff0c;可以具体体现到响应时间、吞吐量、并发数、性能计数器等技术指标。 1、性能测试指标 1.1 响应时间 指应用执行一个操作需要的时间&#xff0c;指从发出请求到最后收到响应数据所需要的时…

宝塔面板备份和恢复WordPress网站完整教程

声明&#xff1a;以下一切操作依靠宝塔面板实现。 概述 如果还有不了解宝塔面板怎么使用的小伙伴&#xff0c;可以看下前文&#xff1a; 宝塔面板教程&#xff08;1&#xff09;基于云服务器搭建宝塔面板教程最全详解宝塔面板教程&#xff08;2&#xff09;宝塔面板添加WordP…

宝塔面板备份网站数据到七牛云(图文)

1,可以用宝塔面板来定时备份网站到网站所在的云服务器。【自己服务器有可能突然访问不了&#xff0c;宝塔面板也访问不了】 2,可以用宝塔面板来定时备份网站数据到七牛云空间&#xff0c;而不是你自己的服务器。【本文讲的就是这种&#xff0c;非常安全高效】 往期教程 宝塔面…

宝塔面板备份网站数据到又拍云图文教程

往期教程 宝塔面板教程&#xff08;1&#xff09;基于云服务器搭建宝塔面板教程最全详解宝塔面板教程&#xff08;2&#xff09;宝塔面板添加WordPress站点详细图文教程宝塔面板教程&#xff08;3&#xff09;基于宝塔面板成功配置网站SSL安全证书宝塔面板教程&#xff08;4&a…

小白搭建WordPress网站过程全纪实(超详细)

如果还有不了解宝塔面板怎么使用的小伙伴&#xff0c;可以看下我总结的系列教程&#xff0c;保证从新手变老鸟&#xff1a; 【宝塔面板精选教程汇总】 宝塔面板教程&#xff08;1&#xff09;基于云服务器搭建宝塔面板教程最全详解宝塔面板教程&#xff08;2&#xff09;宝塔…

秋式网站日志分析器[IISLogViewer] V3版本发布

离上一个版本&#xff0c;过了好久好久了。V1.0时&#xff0c;叫&#xff1a;CYQ.IISLogViewer。V2.0时&#xff0c;给了个中文名&#xff0c;叫&#xff1a;点格网站日志分析器V2.0 升级到3.0了&#xff0c;给改了个名字&#xff0c;叫&#xff1a;秋式网站日志分析器V3.0 本次…

宝塔面板教程(5)网站安全备份到七牛云存储(图文)

往期教程 宝塔面板教程&#xff08;1&#xff09;基于云服务器搭建宝塔面板教程最全详解宝塔面板教程&#xff08;2&#xff09;宝塔面板添加WordPress站点详细图文教程宝塔面板教程&#xff08;3&#xff09;基于宝塔面板成功配置网站SSL安全证书宝塔面板教程&#xff08;4&a…

IE8与网站兼容性问题

用IE8打开某些网站时&#xff0c;可能会遇到兼容性方面的提示&#xff0c;如图&#xff1a; you are trying to access xxx with a browser that is not supported. 解决方法&#xff1a;Tools--Compatibility View Settings--把网站add进兼容性站点 本文转simmy51CTO博客&…

Tomcat局域网多端口建立多网站

明确概念&#xff1a; 概念一&#xff1a;一个IP访问多个网站&#xff0c;只能用不同的端口&#xff1b; 概念二&#xff1a;一个端口访问多个网站&#xff0c;之能用不同的域名。 概念一、实践解决 一、环境&#xff1a; 局域网多个网站。 二、解决方法&#xff1a; 配置多个…

建站神器:Hexo+Kaze+Gitee Pages 搭建静态博客网站

▲点击上方公众号名称&#xff0c;置顶或星标蜗牛互联网这是蜗牛互联网的第 74 期原创。作者 l 白色蜗牛来源 l 蜗牛互联网&#xff08;ID: woniu_internet&#xff09;转载请联系授权&#xff08;微信ID: 919201148&#xff09;前言建网站本身是一个很大的工程&#xff0c;涉及…

Hexo+Kaze+Gitee Pages 搭建静态博客网站

前言 建网站本身是一个很大的工程&#xff0c;涉及前端页面的搭建&#xff0c;网站数据的存储&#xff0c;还要购置服务器资源&#xff0c;甚至是后期的维护&#xff0c;过程相当繁琐。 不过如果仅仅是想搭建个人的网站&#xff0c;写写博客&#xff0c;想要美观&#xff0c;…

搭好的网站,一个不小心库没了,心态崩了

作者 | 白色蜗牛 来源 | 蜗牛互联网&#xff08;ID: woniu_internet&#xff09; 转载请联系授权&#xff08;微信ID: 919201148&#xff09;实不相瞒&#xff0c;上个月我一直在折腾一个教程网站&#xff0c;本来想着把内容搞的丰富点&#xff0c;各方面都齐全一点&#xff0c…

SEO的Content里面的内容被转义的解决方法

看图&#xff0c;不说话 转义的根源 收工 可能不全面&#xff0c;不过确实解决了这个问题&#xff0c;有更好的方法可以提一下&#xff0c;逆天感激不尽 本文转自毒逆天博客园博客&#xff0c;原文链接&#xff1a;http://www.cnblogs.com/dunitian/p/4499673.html&#xff0c;…

网站服务器脚本怎么设置,iis网站自动配置脚本

iis网站自动配置脚本[2020-09-10 05:34:02] 简介:php设置脚本最大执行时间的方法&#xff1a;首先打开php.ini配置文件&#xff1b;然后找到max_execution_time配置&#xff1b;最后设置该配置的值为120即可。如果脚本需要长时间执行&#xff0c;在文件开头处添加代码【set_t系…