如何设计10亿用户系统架构?

分布式系统基本指标

  • 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异步
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值