加入收藏 | 设为首页 | 会员中心 | 我要投稿 鹰潭站长网 (https://www.0701zz.cn/)- 图像处理、低代码、云通信、数据工具、物联设备!
当前位置: 首页 > 站长资讯 > 动态 > 正文

系统设计面试题

发布时间:2020-11-06 13:45:48 所属栏目:动态 来源:互联网
导读:常见软件的 QPS 这里给出的 QPS 仅供参考,实际项目需要进行压测来计算。 Nginx :一般情况下,系统的性能瓶颈基本不会是 Nginx。单机 Nginx 可以达到 30w +。 Redis: Redis 官方的性能测试报告:https://redis.io/topics/benchmarks 。从报告中,我们可以得

常见软件的 QPS

这里给出的 QPS 仅供参考,实际项目需要进行压测来计算。

  • Nginx :一般情况下,系统的性能瓶颈基本不会是 Nginx。单机 Nginx 可以达到 30w +。
  • Redis: Redis 官方的性能测试报告:https://redis.io/topics/benchmarks 。从报告中,我们可以得出 Redis 的单机 QPS 可以达到 8w+(CPU 性能有关系,也和执行的命令也有关系比如执行 SET 命令甚至可以达到 10w+QPS)。
  • MySQL: MySQL 单机的 QPS 为 大概在 4k 左右。
  • Tomcat :单机 Tomcat 的 QPS 在 2w 左右。这个和你的 Tomcat 配置有很大关系,举个例子 Tomcat 支持的连接器有 NIO、NIO.2 和 APR。AprEndpoint 是通过 JNI 调用 APR 本地库而实现非阻塞 I/O 的,性能更好,Tomcat 配置 APR 为 连接器的话,QPS 可以达到 3w 左右。更多相关内容可以自行搜索 Tomcat 性能优化。
  • 独立访客,统计 1 天内访问某站点的用户数。1 天内相同访客多次访问网站,只计算为 1 个独立访客。UV 是从用户个体的角度来统计的。

    DAU(Daily Active User)

    日活跃用户数量。

    MAU(monthly active users)

    月活跃用户人数。

    举例:某网站 DAU 为 1200w, 用户日均使用时长 1 小时,RT 为 0.5s,求并发量和 QPS。

    平均并发量 = DAU(1200w)* 日均使用时长(1 小时,3600 秒) /一天的秒数(86400)=1200w/24 = 50w

    真实并发量(考虑到某些时间段使用人数比较少) = DAU(1200w)* 日均使用时长(1 小时,3600 秒) /一天的秒数-访问量比较小的时间段假设为 8 小时(57600)=1200w/16 = 75w

    峰值并发量 = 平均并发量 * 6 = 300w

    QPS = 真实并发量/RT = 75W/0.5=100w/s

    知识储备

    系统设计面试非常考察你的知识储备,系统设计能力的提高需要大量的理论知识储备。比如说你要知道大型网站架构设计必备的三板斧:

    1. 高性能架构设计:熟悉系统常见性能优化手段比如引入 读写分离、缓存、负载均衡、异步等等。
    2. 高可用架构设计 :CAP 理论和 BASE 理论、通过集群来提高系统整体稳定性、超时和重试机制、应对接口级故障:降级、熔断、限流、排队。
    3. 高扩展架构设计 :说白了就是懂得如何拆分系统。你按照不同的思路来拆分软件系统,就会得到不同的架构。

    实战

    虽然懂得了理论,但是自己没有进行实践的话,很多东西是无法体会到的!

    因此,你还要 不断通过实战项目锻炼自己的系统设计能力。

    保持好奇心

    多思考自己经常浏览的网站是怎么做的。比如:

    1. 你刷微博的时候可以思考一下微博是如何记录点赞数量的?
    2. 你看哔哩哔哩的时候可以思考一下消息提醒系统是如何做的?
    3. 你使用短链系统的时候可以考虑一下短链系统是如何做的?
    4. ......

    技术选型

    实现同样的功能,一般会有多种技术选择方案,比如缓存用Redis 还是 Memcached、网关用 Spring Cloud Gateway 还是Netflix Zuul2 。很多时候,面试官在系统设计面过程中会具体到技术的选型,因而,你需要区分不同技术的优缺点。

    系统设计面试必知系统设计的时候必然离不开描述性能相关的指标比如 QPS。

    性能相关的指标

    响应时间

    响应时间 RT(Response-time)就是用户发出请求到用户收到系统处理结果所需要的时间。

    RT 是一个非常重要且直观的指标,RT 数值大小直接反应了系统处理用户请求速度的快慢。

    并发数

    并发数可以简单理解为系统能够同时供多少人访问使用也就是说系统同时能处理的请求数量。

    并发数反应了系统的负载能力。

    QPS 和 TPS

    • QPS(Query Per Second) :服务器每秒可以执行的查询次数;
    • TPS(Transaction Per Second) :服务器每秒处理的事务数(这里的一个事务可以理解为客户发出请求到收到服务器的过程);

    书中是这样描述 QPS 和 TPS 的区别的。

    QPS vs TPS:QPS 基本类似于 TPS,但是不同的是,对于一个页面的一次访问,形成一个 TPS;但一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就可计入“QPS”之中。如,访问一个页面会请求服务器 2 次,一次访问,产生一个“T”,产生 2 个“Q”。

    系统设计在面试中一定是最让面试者头疼的事情之一。 因为系统设计相关的问题通常是开放式的,所以没有标准答案。你在和面试官思想的交流碰撞中会慢慢优化自己的系统设计方案。理论上来说,系统设计面试也是和面试官一起一步一步改进原有系统设计方案的过程。

    系统设计题往往也非常能考察出面试者的综合能力,回答好的话,很容易就能在面试中脱颖而出。不论是对于参加社招还是校招的小伙伴,都很有必要重视起来。

    接下来,我会带着小伙伴们从我的角度出发来谈谈:如何准备面试中的系统设计部分。

    由于文章篇幅有限,就不列举实际例子了,可能会在后面的文章中单独提一些具体的例子。

    个人能力有限。如果文章有任何需要改善和完善的地方,欢迎在评论区指出,共同进步!

    系统设计面试一般怎么问?

    我简单总结了一下系统设计面试相关问题的问法:

    1. 设计一个某某系统比如秒杀系统、微博系统、抢红包系统、短网址系统。
    2. 设计某某系统中的一个功能比如哔哩哔哩的点赞功能。
    3. 设计一个框架比如 RPC 框架、消息队列、缓存框架、分布式文件系统等等。
    4. 某某系统的技术选型比如缓存用Redis 还是 Memcached、网关用 Spring Cloud Gateway 还是Netflix Zuul2 。

(编辑:鹰潭站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读