千万级用户的大型网站,应该如何设计其高并发架构?(彩蛋)_C18298182575的博客-CSDN博客
千万级用户的大型网站,应该如何设计其高并发架构?(彩蛋)_C18298182575的博客-CSDN博客
三、千万级用户量的压力预估
这个假设这个网站预估的用户数是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万左右的请求。
限制速度要求:1000万人访问,10000人请求CDN ,1000人请求nginx反代(1万兆带宽,10台 1000M带宽机器,阿里需要100台 100M,200G磁盘,保留30天日志)
redis: 3台集群(3主3从)
kafka:3台集群,5个分区 2副本
mysql: 每个4000并发写 3个1主2从集群 分库分表
5000万点击 *1k大小日志=5万M日志=50G大小日志 一天 1个月 1.5个T 3个T
mysql
4万订单 一年 200G存储
10万单一天 1年 600g 1T 存储
切割 集中存储,冷热分离: 10个T
推荐一个博客: