让网站运营更简单

让搜索引擎更喜欢的网站

立即咨询

专注于高端网站服务

潜心,笃志!

立即咨询

企业全场景门户

网站建设解决方案

立即咨询

大网站设计,干货】千万级用户的大型网站,应该如何设计其高并发架构?一看就会

发布时间:2023-03-31 21:41:27 作者:网络 来源:undefined 浏览量(19) 点赞(52)
摘要123:__biz=MzU2Njg3OTU1Mg==&mid=2247483877&idx=1&sn=aab24cdbe42e2

1.大型网站设计

1a9d9b90657f&utm_source=tuicool&utm_medium=referral 作者简介: 原子弹大侠,阿里 P8 高级技术专家

2.高大上网站设计

目录(1)单块架构(2)初步的高可用架构(3)千万级用户量的压力预估(4)服务器压力预估(5)业务垂直拆分(6)用分布式缓存抗下读请求(7)基于数据库主从架构做读写分离(8)总结本文将会从一个大型的网站发展历程出发,一步一步的探索这个网站的架构是如何从单体架构,演化到分布式架构,然后演化到高并发架构的。

3.优秀的网站设计网站

(1)单块架构一般一个网站刚开始建立的时候,用户量是很少的,大概可能就几万或者几十万的用户量,每天活跃的用户可能就几百或者几千个这个时候一般网站架构都是采用单体架构来设计的,总共就部署3台服务器,1台应用服务器,1台数据库服务器,1台图片服务器。

4.大型网页设计

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

5.网站设计网页

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

6.网站设计作品欣赏

(2)初步的高可用架构但是这种纯单块系统架构下,有高可用问题存在,最大的问题就是应用服务器可能会故障,或者是数据库可能会故障所以在这个时期,一般稍微预算充足一点的公司,都会做一个初步的高可用架构出来对于应用服务器而言,一般会集群化部署。

7.比较好的网站设计

当然所谓的集群化部署,在初期用户量很少的情况下,其实一般也就是部署两台应用服务器而已,然后前面会放一台服务器部署负载均衡设备,比如说LVS,均匀的把用户请求打到两台应用服务器上去如果此时某台应用服务器故障了,还有另外一台应用服务器是可以使用的,这样就避免了单点故障问题。

8.网站设计模板

如下图所示:

9.网站设计图

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

10.网站设计教程视频

(3)千万级用户量的压力预估这个假设这个网站预估的用户数是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左右的请求(4)服务器压力预估大概知道了高峰期每秒钟可能会有1万左右的请求量之后,来看一下系统中各个服务器的压力预估一般来说一台虚拟机部署的应用服务器,上面放一个Tomcat,也就支撑最多每秒几百的请求。

按每秒支撑500的请求来计算,那么支撑高峰期的每秒1万访问量,需要部署20台应用服务而且应用服务器对数据库的访问量又是要翻几倍的,因为假设一秒钟应用服务器接收到1万个请求,但是应用服务器为了处理每个请求可能要涉及到平均3~5次数据库的访问。

按照3次数据库访问来算,那么每秒会对数据库形成3万次的请求按照一台数据库服务器最高支撑每秒5000左右的请求量,此时需要通过6台数据库服务器才能支撑每秒3万左右的请求图片服务器的压力同样会很大,因为需要大量的读取图片展示页面,这个不太好估算,但是大致可以推算出来每秒至少也会有几千次请求,因此也需要多台图片服务器来支撑图片访问的请求。

(5)业务垂直拆分一般来说在这个阶段要做的第一件事儿就是 业务的垂直拆分因为如果所有业务代码都混合在一起部署,会导致多人协作开发时难以维护在网站到了千万级用户的时候,研发团队一般都有几十人甚至上百人所以这时如果还是在一个单块系统里做开发,是一件非常痛苦的事情,此时需要做的就是进行业务的垂直拆分,把一个单块系统拆分为多个业务系统,然后一个小团队10个人左右就专门负责维护一个业务系统。

如下图

(6)分布式缓存扛下读请求这个时候应用服务器层面一般没什么大问题,因为无非就是加机器就可以抗住更高的并发请求现在估算出来每秒钟是1万左右的请求,部署个二三十台机器就没问题了但是目前上述系统架构中压力最大的,其实是 。

数据库层面 ,因为估算出来可能高峰期对数据库的读写并发会有3万左右的请求此时就需要引入 分布式缓存 来抗下对数据库的读请求压力了,也就是引入Redis集群一般来说对数据库的读写请求也大致遵循28法则,所以每秒3万的读写请求中,大概有2.4万左右是读请求。

这些读请求基本上90%都可以通过分布式缓存集群来抗下来,也就是大概2万左右的读请求可以通过 Redis集群来抗住我们完全可以把热点的、常见的数据都在Redis集群里放一份作为缓存,然后对外提供缓存服务在读数据的时候优先从缓存里读,如果缓存里没有,再从数据库里读取。

这样2万读请求就落到Redis上了,1万读写请求继续落在数据库上Redis一般单台服务器抗每秒几万请求是没问题的,所以Redis集群一般就部署3台机器,抗下每秒2万读请求是绝对没问题的。如下图所示:

(7)基于数据库主从架构做读写分离此时数据库服务器还是存在每秒1万的请求,对于单台服务器来说压力还是过大但是数据库一般都支持主从架构,也就是有一个从库一直从主库同步数据过去此时可以基于主从架构做 读写分离

也就是说,每秒大概6000写请求是进入主库,大概还有4000个读请求是在从库上去读,这样就可以把1万读写请求压力分摊到两台服务器上去这么分摊过后,主库每秒最多6000写请求,从库每秒最多4000读请求,基本上可以勉强把压力给抗住。

如下图:

(8)总结本文主要是探讨在千万级用户场景下的大型网站的高并发架构设计,也就是预估出了千万级用户的访问压力以及对应的后台系统为了要抗住高并发,在业务系统、缓存、数据库几个层面的架构设计以及抗高并发的分析但是要记住,大型网站架构中共涉及的技术远远不止这些,还包括了MQ、CDN、静态化、分库分表、NoSQL、搜索、分布式文件系统、反向代理,等等很多话题,但是本文不能一一涉及,主要是在

高并发 这个角度分析一下系统如何抗下每秒上万的请求感谢你耐心看完了文章...关注作者,我会不定期在微头条分享Java,Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构,BATJ面试 等资料...。

本文图文来源于网络,版权属于原作者或网站,内容为作者观点,内容版权归原作者所有、本站不对文章中的任何观点负责,内容只用于提供信息阅读,无任何商业用途。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站(文章、图片、音频、视频)有涉嫌抄袭侵权/违法违规的内容,请联系管理员,一经查实,将立刻删除、维护您的正当权益。

二维码

扫一扫,关注我们

相关新闻

X

截屏,微信识别二维码

微信号:zeroretrd

(点击微信号复制,添加好友)

  打开微信

微信号已复制,请打开微信添加咨询详情!
热线咨询
400-660-9550
180-4219-6648
免费热线
网站建设
小程序开发
网站SEO优化