千万级用户的大型网站,应该如何设计其高并发架构?(彩蛋)

news/2024/5/20 21:07:22/文章来源:https://blog.csdn.net/C18298182575/article/details/89914011

转发自今日头条

目录

(1)单块架构

(2)初步的高可用架构

(3)千万级用户量的压力预估

(4)服务器压力预估

(5)业务垂直拆分

(6)用分布式缓存抗下读请求

(7)基于数据库主从架构做读写分离

(8)总结

本文将会从一个大型的网站发展历程出发,一步一步的探索这个网站的架构是如何从单体架构,演化到分布式架构,然后演化到高并发架构的。

一、单块架构

一般一个网站刚开始建立的时候,用户量是很少的,大概可能就几万或者几十万的用户量,每天活跃的用户可能就几百或者几千个。

这个时候一般网站架构都是采用单体架构来设计的,总共就部署3台服务器,1台应用服务器,1台数据库服务器,1台图片服务器。

研发团队通常都在10人以内,就是在一个单块应用里写代码,然后写好之后合并代码,接着就是直接在线上的应用服务器上发布。很可能就是手动把应用服务器上的Tomcat给关掉,然后替换系统的代码war包,接着重新启动Tomcat。

数据库一般就部署在一台独立的服务器上,存放网站的全部核心数据。

然后在另外一台独立的服务器上部署NFS作为图片服务器,存放网站的全部图片。应用服务器上的代码会连接以及操作数据库以及图片服务器。如下图所示:

千万级用户的大型网站,应该如何设计其高并发架构?(彩蛋)

 

二、初步的高可用架构

但是这种纯单块系统架构下,有高可用问题存在,最大的问题就是应用服务器可能会故障,或者是数据库可能会故障

所以在这个时期,一般稍微预算充足一点的公司,都会做一个初步的高可用架构出来。

对于应用服务器而言,一般会集群化部署。当然所谓的集群化部署,在初期用户量很少的情况下,其实一般也就是部署两台应用服务器而已,然后前面会放一台服务器部署负载均衡设备,比如说LVS,均匀的把用户请求打到两台应用服务器上去。

如果此时某台应用服务器故障了,还有另外一台应用服务器是可以使用的,这样就避免了单点故障问题。如下图所示:

千万级用户的大型网站,应该如何设计其高并发架构?(彩蛋)

 

对于数据库服务器而言,此时一般也会使用主从架构,部署一台从库来从主库同步数据,这样一旦主库出现问题,可以迅速使用从库继续提供数据库服务,避免数据库故障导致整个系统都彻底故障不可用。如下图:

千万级用户的大型网站,应该如何设计其高并发架构?(彩蛋)

 

三、千万级用户量的压力预估

这个假设这个网站预估的用户数是1000万,那么根据28法则,每天会来访问这个网站的用户占到20%,也就是200万用户每天会过来访问。

通常假设平均每个用户每次过来会有30次的点击,那么总共就有6000万的点击(PV)。

每天24小时,根据28法则,每天大部分用户最活跃的时间集中在(24小时 * 0.2)≈ 5小时内,而大部分用户指的是(6000万点击 * 0.8 ≈ 5000万点击)

也就是说,在5小时内会有5000万点击进来。

换算下来,在那5小时的活跃访问期内,大概每秒钟会有3000左右的请求量,然后这5小时中可能又会出现大量用户集中访问的高峰时间段。

比如在集中半个小时内大量用户涌入形成高峰访问。根据线上经验,一般高峰访问是活跃访问的2~3倍。假设我们按照3倍来计算,那么5小时内可能有短暂的峰值会出现每秒有10000左右的请求。

四、服务器压力预估

大概知道了高峰期每秒钟可能会有1万左右的请求量之后,来看一下系统中各个服务器的压力预估。

一般来说一台虚拟机部署的应用服务器,上面放一个Tomcat,也就支撑最多每秒几百的请求。

按每秒支撑500的请求来计算,那么支撑高峰期的每秒1万访问量,需要部署20台应用服务。

而且应用服务器对数据库的访问量又是要翻几倍的,因为假设一秒钟应用服务器接收到1万个请求,但是应用服务器为了处理每个请求可能要涉及到平均3~5次数据库的访问。

按照3次数据库访问来算,那么每秒会对数据库形成3万次的请求。

按照一台数据库服务器最高支撑每秒5000左右的请求量,此时需要通过6台数据库服务器才能支撑每秒3万左右的请求。

图片服务器的压力同样会很大,因为需要大量的读取图片展示页面,这个不太好估算,但是大致可以推算出来每秒至少也会有几千次请求,因此也需要多台图片服务器来支撑图片访问的请求。

五、业务垂直拆分

一般来说在这个阶段要做的第一件事儿就是业务的垂直拆分

因为如果所有业务代码都混合在一起部署,会导致多人协作开发时难以维护。在网站到了千万级用户的时候,研发团队一般都有几十人甚至上百人。

所以这时如果还是在一个单块系统里做开发,是一件非常痛苦的事情,此时需要做的就是进行业务的垂直拆分,把一个单块系统拆分为多个业务系统,然后一个小团队10个人左右就专门负责维护一个业务系统。如下图

千万级用户的大型网站,应该如何设计其高并发架构?(彩蛋)

 

六、分布式缓存扛下读请求

这个时候应用服务器层面一般没什么大问题,因为无非就是加机器就可以抗住更高的并发请求。

现在估算出来每秒钟是1万左右的请求,部署个二三十台机器就没问题了。

但是目前上述系统架构中压力最大的,其实是数据库层面 ,因为估算出来可能高峰期对数据库的读写并发会有3万左右的请求。

此时就需要引入分布式缓存来抗下对数据库的读请求压力了,也就是引入Redis集群。

一般来说对数据库的读写请求也大致遵循28法则,所以每秒3万的读写请求中,大概有2.4万左右是读请求

这些读请求基本上90%都可以通过分布式缓存集群来抗下来,也就是大概2万左右的读请求可以通过 Redis集群来抗住。

我们完全可以把热点的、常见的数据都在Redis集群里放一份作为缓存,然后对外提供缓存服务。

在读数据的时候优先从缓存里读,如果缓存里没有,再从数据库里读取。这样2万读请求就落到Redis上了,1万读写请求继续落在数据库上。

Redis一般单台服务器抗每秒几万请求是没问题的,所以Redis集群一般就部署3台机器,抗下每秒2万读请求是绝对没问题的。如下图所示:

千万级用户的大型网站,应该如何设计其高并发架构?(彩蛋)

 

七、基于数据库主从架构做读写分离

此时数据库服务器还是存在每秒1万的请求,对于单台服务器来说压力还是过大。

但是数据库一般都支持主从架构,也就是有一个从库一直从主库同步数据过去。此时可以基于主从架构做读写分离

也就是说,每秒大概6000写请求是进入主库,大概还有4000个读请求是在从库上去读,这样就可以把1万读写请求压力分摊到两台服务器上去。

这么分摊过后,主库每秒最多6000写请求,从库每秒最多4000读请求,基本上可以勉强把压力给抗住。如下图:

千万级用户的大型网站,应该如何设计其高并发架构?(彩蛋)

 

八、总结

本文主要是探讨在千万级用户场景下的大型网站的高并发架构设计,也就是预估出了千万级用户的访问压力以及对应的后台系统为了要抗住高并发,在业务系统、缓存、数据库几个层面的架构设计以及抗高并发的分析。

但是要记住,大型网站架构中共涉及的技术远远不止这些,还包括了MQ、CDN、静态化、分库分表、NoSQL、搜索、分布式文件系统、反向代理,等等很多话题,但是本文不能一一涉及,主要是在高并发这个角度分析一下系统如何抗下每秒上万的请求。

附:粉丝福利

关于高并发、分布式、大型互联网架构技术知识所录制的几十个视频资料分享给大家。

获取方式:转发+关注后私信回复【架构资料】获取

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

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

相关文章

一个开源vue网站博客,nuxt开源网站,前后端分离项目

unNue.com 开媛笔记,基于nuxt ssr首屏服务器端渲染 。用于分享、记录、交流和学习,希望可以帮助到小伙伴们。同时网站在不断更新,创造属于猿(媛)的世界 -$Bao Yalong ..Lets Go! https://unnue.com 简述 前端 Github地…

怎样将优酷网站下载的视频KUX转MP4格式

在休息之余,相信大多数人都会拿手机看电视剧听音乐之类的,最近拍了很多的新片子:《毒液:致命守护者》、《无名之辈》、《亡命救赎》《影》等等优质电影,但是很多的电影都只能在电影院观看的,如果不去电影院…

网站关键词编写方法,注意事项。

1.Title标签&#xff1a; 即网站标题&#xff08;沙发超人&#xff09;&#xff0c;指的是目标关键词或者主关键词在源代码中的表现形式。 代码格式1&#xff1a;<title>关键词1_关键词2_关键词3 – 网站的品牌</title> &#xff08;常用格式&#xff09; 代码格式…

分享一些省心的PPT模板下载网站资源(附5G优质PPT模板)

每次需要做PPT时&#xff0c;总是为找省心的模板二发愁&#xff0c;用搜索引擎搜索“免费PPT模板”时&#xff0c;展示出的大量所谓“免费”的网站。心动的点开一个后&#xff0c;最终却是&#xff1a;开通会员才免费&#xff0c;满满的套路 现在我们急需那些&#xff0c;省去搜…

network 关于PV,网站访问量和服务器带宽的选择

网站用户访问流量图 对于PV&#xff0c;流量和带宽的理解&#xff0c;可以分成几个问题可能更加容易理解 问题1&#xff1a;首先什么是PV 技术角度讲,1个PV是指从浏览器发出一个对网络服务器的Request 网络服务器接到Request之后会开始把该Request对应的一个Page &#xff08…

[IIS网站问题]设置防火墙协议及端口等问题

如果AppWeb网站通过域名公开访问,请选择 域 ;如果AppWeb网站只通过类似 http://192.168.3.107:6789 局域网访问,选择 专用 即可。如果实在搞不懂这个规则,就全选即可。见下图: 另外,名称可以自由定义.

小型的搜索引擎设计_广州网站设计工作室-赛致信息科技

很多人都在为自己企业的网站而发愁&#xff0c;担心的就是自己企业的网站做不好&#xff0c;在开始做网站的时候就很犹豫&#xff0c;不知道究竟该选择哪家网站建设好点&#xff0c;造成这一现状的根本原因就是现在网站建设的行业鱼龙混杂&#xff0c;让很多企业迷茫不知所措&a…

iis10 asp 如何连接mdb_网站500内部服务器错误如何解决 - 最蜘蛛池

原出处&#xff1a;最蜘蛛池原文链接&#xff1a;网站500内部服务器错误如何解决&#xff1f; - 最蜘蛛池在SEO工作过程中&#xff0c;我们偶尔会遇到http500内部服务器错误&#xff0c;这样的问题&#xff0c;它是一个明显的http状态码&#xff0c;它告诉站长&#xff0c;你的…

linux svn服务的维护,Linux服务器搭建svn环境方法详解_网站服务器运行维护,Linux,svn...

关于nginx location指令详解_网站服务器运行维护^~ 开头,注意这不是一个正则表达式(是提升优先级的字符串匹配)–它的目的是优先于正则表达式的匹配。如果该location是最佳匹配&#xff0c;则不再进行正则表达式检测。下面由Linux教程栏目给大家介绍Linux服务器搭建svn环境的方…

如何找到网站服务器的源代码_如何花3-5分钟找到网站Bug?

如何使用GA审核网站&#xff1f;只需7个步骤&#xff08;以下为问题形式出现&#xff09;&#xff0c;就会快速查出哪里出现了问题。1、网站上有损坏的页面吗&#xff1f;操作概览&#xff1a;行为>网站内容>页面标题维度&#xff0c;过滤“找不到页面”如果访问者访问错…

搜索引擎提交软件_网站如何被搜索引擎快速收录?

搭建好了你自己的网站&#xff0c;一定会有一个疑问&#xff0c;怎么让网站被搜索引擎快速收录&#xff1f;别人可以在搜索引擎搜到你的网站呢&#xff1f;我们总说怎么优化网站&#xff0c;怎么优化关键词&#xff0c;目的都是为了提升排名&#xff0c;提高网站在搜索引擎的收…

提高网站性能之 —— 减少图片HTTP 请求的方案

《Higb Performance Web Sites》&#xff08;中文名&#xff1a;“高性能网站建设指南”&#xff09;这本书对于前端工程师来说&#xff0c;绝对值得一读。本人有幸从公司借阅了&#xff0c;但不幸的是感觉翻译有点怪怪的。尤其是在翻译CSS Sprites的关键部分&#xff0c;让人不…

php网站模板包括增删改查,PHP实现简单的增删改查

前面一章已经将php环境搭建好了&#xff0c;现在开始学习使用php实现简单的增删改查。前提是WampServer和mysql安装好了。1.用代码在mysql中新建一个叫myphp的数据库&#xff0c;在myphp数据库中建立一个user表。⑴在WampServer的安装目录下找到www文件夹&#xff0c;我的在E:\…

21个为您的网站和博客提供的免费视频播放器

2019独角兽企业重金招聘Python工程师标准>>> 很多设计师在都会在他们的网站使用视频播放器。在线视频播放器无需为简单的用户和Web开发人员提供过多的介绍&#xff0c;它简单易用&#xff0c;为您建站时提供了灵活性和创造性&#xff0c;您可以添加无限数量的视频&a…

你的网站上显示Alexa世界排名的代码(表)

Alexa世界排名众多站长已经不会陌生了&#xff0c;今年将它炒的非常厉害&#xff0c;众多网站不论是拉广告还是做宣传都会以Alexa世界排名作为依据。因此&#xff0c;在这里就把Alexa排名的代码为各位需要的站长们介绍一下&#xff1a; 第一种&#xff1a;排名按钮式代码 说明&…

手机网站重构

前言 做WEB重构的同学都应该知道,我们一般需要在一个操作系统 (Windows XP)和4种以上的浏览器(IE678,Firefox,Chrome,Opera等)上测试页面的兼容性。 相对而言,手机上的页面兼容性测试,相当痛苦!手机光操作系统都有S60V3,S60V5,MTK,Android, Windows Mobile等等,每个操作系统上除…

换服务器原网站数据会丢失吗,ecs服务器更换操作系统后原服务器数据还在吗?...

ecs服务器更换操作系统后原服务器数据还在吗&#xff1f;这个知识点非常重要&#xff0c;我这里的话给大家简单的介绍一下&#xff0c;首先的话我们服务器如果更换操作系统重装操作系统&#xff0c;其实都是一个意思&#xff0c;更换系统之后呢&#xff0c;我们原来的数据库原来…

利用TP-Link+花生壳建立属于自己的网站

最近很想做一个自己的网站&#xff0c;苦于没有经费&#xff0c;也没有服务器&#xff0c;更加没有经验&#xff0c;所以只能寻找免费的解决方案。 身边有的工具只有一台TP-link&#xff0c;手提式电脑和能上网的环境&#xff0c;所以果断利用TP-link&#xff0c;没有TP-link的…

模板引擎工作原理_zuma致:新手SEO须知搜索引擎工作原理

SEO是一种优化方式&#xff1a;利用搜索引擎的规则提高网站在相关中搜索引擎内的自然排名。其目的是为了&#xff1a;为网站提供好的展示和排名&#xff0c;让其在行业内占据领先地位&#xff0c;获得流量和品牌效应收益。那么搜索引擎是怎么工作的你了解多少呢&#xff1f; 今…

怀疑Alexa算法调整,清理一批网站

因为自己有Blog&#xff0c;所以一直在关注我网站在Alexa的排名&#xff0c;前几天看到排名是三个月平均在300万左右&#xff0c;7天排名在120万左右&#xff0c;今天再看了一下&#xff0c;发现排名有了惊人的提高&#xff0c;7天排名在643,503&#xff0c;一个月排名在2,012,…