系统容量预估及架构优化
一、系统容量预估
1.1预估步骤:
注册用户数->日均UV量->每日的PV量->每天的并发量;
峰值预估:平常量的2~3倍;
根据并发量(并发,事务数),存储容量计算系统容量。
根据客户需求:3~5年用户数达到1000万注册用户,可以做每秒并发数预估:
每天的UV为200万(二八原则);
每日每天点击浏览30次;
PV量:200万 * 30=6000万;
集中访问量:24小时 * 0.2=4.8小时,会有6000万 * 0.8=4800万(二八原则,20%时间会有80%的访问量);
每分并发量:4.8小时*60=288分钟,每分钟访问4800万/288=16.7万(约等于);
每秒并发量:16.7万/60=2780(约等于);
假设:高峰期为平常值的三倍,则每秒的并发数可以达到8340次。
1毫秒=1.3次访问;
1.2服务器预估:(以tomcat服务器举例)
按一台web服务器,支持每秒300个并发计算。平常需要10台服务器(约等于);[tomcat默认配置是150],高峰期需要30台服务器;
1.3容量预估:70/90原则
系统CPU一般维持在70%左右的水平,高峰期达到90%的水平,是不浪费资源,并比较稳定的。内存,IO类似。
以上预估仅供参考,因为服务器配置,业务逻辑复杂度等都有影响。在此CPU,硬盘,网络等不再进行评估。
二、网站架构优化
根据以上预估,有几个问题:
需要部署大量的服务器,高峰期计算,可能要部署30台Web服务器。并且这三十台服务器,只有秒杀,活动时才会用到,存在大量的浪费。
所有的应用部署在同一台服务器,应用之间耦合严重。需要进行垂直切分和水平切分。
大量应用存在冗余代码
服务器Session同步耗费大量内存和网络带宽
数据需要频繁访问数据库,数据库访问压力巨大。
大型网站一般需要做以下架构优化(优化是架构设计时,就要考虑的,一般从架构/代码级别解决,调优主要是简单参数的调整,比如JVM调优;如果调优涉及大量代码改造,就属于重构):
- 业务拆分
- 应用集群部署(分布式部署,集群部署和负载均衡)
- 多级缓存
- 单点登录(分布式Session、redis统一保存用户信息、JWT等)
- 数据库集群(读写分离,分库分表)
- 服务化
- 消息队列
- 其他技术