JAVA面试十分钟-高并发项目

时光怂恿深爱的人放手 提交于 2020-02-12 04:35:43

什么是QPS?

每秒的响应请求数,也即是最大吞吐能力
QPS = 总请求数 / ( 进程总数 * 请求时间 )

什么是PV?

page view
即页面浏览量,或点击量;通常是衡量一个媒体频道或网站甚至一条网络文章的主要指标。

什么是UV?

uv的全称是unique view,译为通过互联网访问、浏览这个网页的自然人,访问网站的一台电脑客户端被视为一个访客,在同一天内相同的客户端只被计算一次。

如果网站每天要承受100万次PV,那么它需要多少的QPS?

1000000 * 0.8(峰值QPS,意思是每天80%的访问量集中在20%的时间里)/ 86400(每天的秒数)* 20%(每天的20%时间) = 46 QPS

如果网站单台服务器QPS为10,那么需要几台机器?

46 / 10 = 4.6 ≈ 5
需要5台

QPS是否等于并发数?

不等于,两者没有什么关联
QPS是指这个网站每秒有多少次请求
并发是指这个网站有多少个用户在同时请求
如果一个用户一秒钟请求了20次,那么这个网站的QPS就是20,并发数1。
如果20个用户在一秒钟内同时每人请求了一次,那么这个网站的QPS就是20,并发数也为20。
一个服务器不仅要提高QPS的吞吐量,同时要提高承受的并发数

如何从整体上处理高并发

可以从多个层面上去回答:

  • 数据库方面
    1.优化数据库索引
    2.优化查询语句,尽量避免全表查询以及间隙锁的出现
    3.搭建数据库集群,通过主从复制实现读写分离
    4.可以使用mycat等中间件进行分库分表。

  • 使用nginx进行负载均衡

  • 使用CDN服务器分发请求

  • 架构方面
    1.前后端分离,页面静态化
    2.使用专门的图片服务器
    3.合理使用缓存,搭建如redis集群之类的缓存服务器,既要合理的多加利用缓存服务器,又要合理避免缓存雪崩,缓存穿透之类的危险。

  • 后端代码方面
    压力比较大的接口和业务代码可以采用异步多线程的方式编写,提高效率。在处理可以预见的超大集合时同样可以采用并行流提高遍历的效率。
    优化代码结构。有时合理使用设计模式也能提高代码执行效率。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!