分布式系统基本指标
- TPS:每秒请求数量
原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间。
公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS) - QPS:每秒查询数量,一个TPS可能会有多个QPS
- RT:系统对请求作出响应的平均时间
- DAU:日活跃用户数量
- MAU:月活跃用户数量
分布式系统高并发设计
假如系统有10亿用户
10亿用户,参照2/8定律(在任何一组东西中,最重要的只占其中一小部分,约20%,其余80%尽管是多数,却是次要的),每天大约有20%的用户会访问,即DAU=2亿用户访问,每个用户大约50次点击,辣么PV(Page View)就是100亿。
一天有24小时,大部分用户只有20%集中访问,即10亿用户每天大部分会集中在5个小时左右访问。也就是100亿*80%=80亿的PV会在五个小时集中访问,一个小时3600秒,也就是 80亿/5/3600= 45W,这是一个平均值,架构师需要考虑峰值时候的TPS,一般会在当前平均值上乘以 3 或 4,也就是45W * 4 = 180W个请求每秒(峰值预估值)。
如果180W个请求每秒,并发数量是多少呢???
如果每个请求RT时间为3秒,也就是服务端需要支持180W(一般会在系统上线进行监控,然后持续迭代系统)并发数量。
180W并发数量,辣么有哪些因素会影响到并发数量呢??
- JVM
GC算法、内存空间(空间不足的时候,会频繁GC,最后导致内存溢出)… - Tomcat
针对Tomcat进行优化,如:增加tomcat最大线程个数,采用多路复用机制(NIO)增加连接数量… - 系统服务个数
比如一台服务器能支持每秒1W个请求,180W并发就需要180台服务器 - 数据库
针对数据库查询进行优化,如:增加缓存,读写分离… - 网络通信
采用长连接、连接池化、局域网通信、数据报文序列化算法… - 异步编程
多线程编程、MQ异步 - …