[分布式][高并发]千万级用户的大型网站,应该如何设计其高并发架构?

news/2024/5/19 7:12:39/文章来源:https://blog.csdn.net/suifeng629/article/details/89915447

目录

(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_815365.aspx

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

相关文章

企业邮箱网站是什么,如何在企业邮箱网站里登录企业邮箱?

对于很多外贸企业来说,最常用的和国外客户交流的工具应该就是企业邮箱了。因为企业邮箱比起个人邮箱来说,收发邮件更稳定,安全性也更高,且邮箱容量会更大。如果还没有企业邮箱账号的话,要怎么注册邮箱呢?其…

大型网站的页面静态化

目录 前言方案一:网页静态HTML化伪静态布局样式模板化应用层nginx分发层nginx 前言 我们小伙伴们在访问淘宝、网易等大型网站时有没有考虑到,网站首页、商品详情页以及新闻详情页面是如何处理的?怎么能够支撑这么大流量的访问呢&#xff1f…

B2B2C商城系统定制要注意什么 B2B2C模式典型的代表网站有哪些?

电子商务的出现改变了人们的购物习惯,甚至让我们的生活也发生了很大的变化,在这种大环境下,越来越多的企业加入到电商大军中。那么我们一起来了解一下B2B2C商城系统定制要注意什么?B2B2C模式典型的代表网站有哪些?下面是易族智汇javashop为您编辑整理的…

Win2008R2配置WebDeploy发布网站

一、配置服务器 1.安装管理服务 2.点击管理服务进行配置 二.安装WebDeploy 2.1通过离线安装包方式安装: https://www.iis.net/downloads/microsoft/web-deploy离线包没有WebDeploy3.6版本的,不过影响不大2.2通过Web平台安装程序安装: 我当时…

主机模拟i2c检测设备时出现错误死循环_西部数码使用指南:网站打不开数据库错误等常见问题解决方法...

版权归西部数码所有,原文链接:https://www.west.cn/faq/list.asp?unid7671、“主机开设成功!”上传数据后显示此内容,是因为我司默认放置的index.htm内容,需要核实wwwroot目录里面是否有自己的程序文件,可…

如何理解O2O模式网站建设的三大核心功能?

电商的迅速发展,让O2O模式大火起来,很多企业选择开发O2O系统为企业获得更多的利润的,那么如何理解O2O模式网站建设的三大核心功能?下面是易族智汇javashop 为您编辑整理的,欢迎阅读,仅供参考。 1、O2O合作加…

使用Intellij IDEA来发SpringMVC网站(二)

注意:承接上一文:使用IntelliJ IDEA开发SpringMVC网站(一)开发环境 五、SpringMVC框架配置 进行完上面的配置,那就说明现在基本的开发环境已经搭建好了,现在要开始进行SpringMVC的网站开发。 1、web.xml配…

使用IntelliJ IDEA开发SpringMVC网站(一)开发环境

一、相关环境 - Intellij IDEA 2016.2 Ultimate - Tomcat 8.0.35 - JDK 1.8.0_92 - Spring 4.2.6 - MySql 5.7 - Maven 3.3.9 - Bootstrap 3.3.5 以上是我要做的这个demo所需要的东西,当然有些是可选的,版本也是可控的。比如说如果你用不惯Maven的话可以…

asp建站系统源码_自助建站怎么样?你需要注意这四个重点

随着互联网快速发展,网站建设受到越来越多的关注。优秀的企业网站能够为企业形象代言,也可以成为产品或服务宣传的重要窗口、企业收集反馈客户意见的重要渠道、搭建产品信息数据库等。常见的建站方式主要为模板建站和定制开发2种,模板网站主要…

千万级用户的大型网站,应如何设计其高并发架构

目录 (1)单块架构 (2)初步的高可用架构 (3)千万级用户量的压力预估 (4)服务器压力预估 (5)业务垂直拆分 (6)用分布式缓存抗下读…

修改网站首页批处理_做一个简单的企业网站需要多长时间?

做一个简单的企业网站需要多长时间?我想这大概是每个想要做网站的朋友除了关心网站价格之外最关心的另外一个问题了,今天小编就给大家介绍下网站从开始筹划到完成上线全程所需要的时间。1、域名实名认证备案和服务器虚拟机实名认证时间做网站之前首先需要…

c语言 将包含关键词的段落摘录出来_超快排:SEO优化长尾关键词并做好关键词挖掘,网站排名快速飙升!...

长尾关键词seo优化可以有效提升我们首页目标关键词的排名,因此长尾关键词的优化是每一个网站要去做的事情,长尾关键词优化的好,我们的网站才会有大量的流量,有了流量才有可能带来转化,单一的目标关键词带来的流量是非常…

strace java_Strace诊断CPU跑高问题(java/php网站)

早些年,如果你知道有个 strace 命令,就很牛了,而现在大家基本都知道 strace 了,如果你遇到性能问题求助别人,十有八九会建议你用 strace 挂上去看看,不过当你挂上去了,看着满屏翻滚的字符&#…

IIS部署ASP.NET网站后提示只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态......

今天&#xff0c;在IIS上部署网站后&#xff0c;出现了下面错误&#xff1a; 只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时&#xff0c;才能使用会话状态。还请确保在应用程序配置的 <system.web><httpModules> 节中包括 System.Web.Session…

2009年国外100大最佳设计博客网站(转载)

近日&#xff0c;国外知名电子商务网站Invesp Consulting公布了其收录的20000多个优秀博客的最终排名。Invesp Consulting将这些博客分为文化艺术、商业、计算机互联网、历史和宗教、兴趣、生活等六大类。 下面是文化艺术分类下设计领域内的排名前100名的博客。这100个博客涵盖…

纯php网站改织梦网站数据不变,dede全站URL静态化改造[070414更正]

dede全站URL静态化改造[070414更正]更新时间&#xff1a;2007年04月17日 00:00:00 作者&#xff1a;1、将include复制到网站中的include目录。2、修改数据库将所有文档设置为“仅动态”&#xff0c;可以进入数据库管理中&#xff0c;执行下面命令&#xff1a;update dede_arc…

适合程序员学习的网站

github 这是一个全球性的面向开源社区和私有软件的托管平台&#xff0c;它提供关于程序员的综合资讯&#xff0c;软件更新资讯&#xff0c;每周软件推荐&#xff0c; 码云最新推荐&#xff0c;网页开发&#xff0c;app&#xff0c;h5营销众包。技术问答和各种各样小众领域的博客…

博览更多……微软最有价值专家(MVP)网站

Explore the many...MVP Web Sites 博览更多……微软最有价值专家&#xff08;MVP&#xff09;的网站[url]http://www.mvps.org[/url]向大家提供一个绝好的网站&#xff0c;其中按照微软产品线分类&#xff0c;汇聚了全球MVP的站点或Blog。可谓非常非常的全面&#xff0c;希望对…

ISA网站发布之二 发布虚拟主机

今天我们来用ISA发布多个虚拟的网站&#xff0c;我们在北京这台计算机上建立两个网站&#xff0c;一会我们通过ISA把它们发布出去。我们先确保这两个网站访问正常这两个网站都是守候80端口的&#xff0c;有人会问都在一个端口能正常吗?IIS实现虚拟网站可以通过IP、端口、主机头…

Java 专业人士必备的书籍和网站列表

级别&#xff1a; 初级 Roy Miller (royroywmiller.com), 创始人兼总裁, The Other Road, LLC 2007 年 1 月 15 日 对于 Java™ 语言开发人员来说&#xff0c;信息过量是一个真正的问题。每个新入行的程序员都要面临一个令人畏缩的挑战&#xff1a;要进入的行业是一个具有海量知…