如何设计一个高性能/高并发/高可用/高可靠/可扩展的系统?

news2024/11/24 8:35:44

818469a90154b56ed79727e94754c116.png

作者:阿秀

校招八股文学习网站:https://interviewguide.cn

这是阿秀的第「293」篇原创

小伙伴们大家好,我是阿秀。

面试者和求职者的关系就好像是矛与盾,一个拼命堆自己的防装,反伤刺甲、魔女斗篷都往身上穿;另一个则拼命堆自己的攻装,碎星锤、虚无法杖也招呼上,这一点在面试这一场景下体现的淋漓尽致。

最近这段时间正是校招面试的高峰期,很多人的面试行程的安排都很满,经常是一天几个笔试和面试穿插着交替进行,很多人发现现在不怎么问八股文了,而是开始问一些系统设计或者情景题居多了,比较经典的就是"如何设计一个高并发/高QPS/高存储的系统"或者直接问你在设计一个高并发系统中需要注意哪些问题等。

有位在学习圈里的学弟就总是遇到这种问题,分享一下。

1、学弟的提问

秀哥好!

最近投了一些简历也面了一些企业,得到了一些面试机会,得益于自己准备的早,八股文和手撕算法都OK,都能顺利搞定,问题不大。

除此之外,也会问我一些项目,严重的,甚至几乎每一面的面试官都会问项目,会问我重点亮点让我介绍,这些都可以提前准备准备,我也都能够回答。

但有一点我就很难顶,很多时候他还会问我一些他当时想到的场景应用题/线上遇到的问题,比如他会给我预设一个场景,假如你在你是一个XXX设计师,你会如何设计某个功能?

或者干脆问我面对/高并发高QPS/多集群等场景下会发生怎么样的问题?

这类问题我大多都毫无思路,好几次都只能直接放弃,直言说我不会。

我感觉因为我做的项目其实也是边学习边做,做的过程中也很难遇到面试官说的那些复杂问题,我也当时考虑不到一些边界条件,所以面对这类问题经常束手无策😭难哭了

秀哥有什么建议吗?谢谢秀哥!

2、阿秀的回答

老实说,这个无解。

这种问题一般都很活,灵活的活,面试官可能根据你简历上的一些描述然后就随机问起来了,问的场景或者类型也不定,可能是他工作中遇到了然后又解决的一些难题,也有可能是他看到的一些技术分享中的场景题。

这种题目这种对于校招生来说有点难了,因为很多工作党都没什么机会接触一些高并发/高QPS的场景,更不要提应届生了。

毫不客气的说一句大多数人对于高并发这些概念的印象都是停留在书本上,因为压根没有机会去实践,哪有几十上百万的真实并发场景给你练手用啊。。。

这类问题需要有很深的基本功,我以前也被问到类似的问题,当时自己是看的一个腾讯官方技术公众号的文章,这篇文章讲了很多设计高并发系统会用到技术,很多技术我当时都是第一次听说,当时看了就惊为天人。

下图为这篇文章的大纲图:

31d06aa52aba80e44ab4a254c8337bd4.png

比如序列化无锁化这些技术,当时第一次看到真的觉得惊为天人,因为在当时,自己还停留在缓存异步并发分片等策略上,也没听过和接触过这些技术。

就拿缓存来说,它从缓存分类又逐渐展开,见下图:

372ac6d6bcdcd87317b505897d8b776c.png

以下图的企鹅电竞的一个多级缓存应用,根据我们的现网统计,在第一级缓存的命中率就已经达 94%,穿透到 grocery 的请求量很小。

7c1b4ee8f4d1e5fafa516effbdc8dc40.png

以及缓存的模式,比如旁路缓存

faa1bd956c14728c5355666559cc27eb.jpeg
Cache-Aside结构图

基于缓存的一些回收策略:

  • 基于时间

  • 基于空间

  • 基于容量

  • 基于引用

具体内容见下图

4b7e37bb2aba78c58bc1895dd6e901cc.png

这里我把链接放一下,可以自己去看,我已经收录到自己开发的InterviewGuide网站上了:https://top.interviewguide.cn/issue/736

这道题也已经被考了 6 次了,最近一次考察时间是 2023年 7 月 27 日

29820a9f75f0f38562406bf7a04700f3.png

这里要画个重点,我要告诉你的是,这篇文章中的技术很多都很深,不要说校招生,就连很多工作一两年的都没用过或者了解到,所以如果你在面试中被问到”如何设计一个高性能/高并发/高可用/高可靠/可扩展的系统?“的话,不要把这篇文章中全部的技术都说出去了,建议从并发化、异步化、缓存、存储这几个方面来聊即可

如果追问就再聊聊分片、队列以及零拷贝等技术,其余的就不要说了,你说得越多给自己挖坑的可能性就越大,甚至最后被追问到哑口无言。

还有,即使是这篇文章也只是起了个引子,每个点也都可以再细分为一个大的领域,比如存储就是最典型的例子,很多公司甚至招专门的数据库开发或者性能优化工程师来专攻存储这一个点,比如阿里云和华为云数据库部门等。

所以少年,好好学吧,继续学吧,池子深着呢

81a1cb3ed956eabe8f870600c1d60577.png

阿秀2年来一直在做的一件事

这里也给自己的知识星球,也就是学习圈打个广告,坚持这件事情已经快2 年时间了,目前星球已经满2700人了,再过一段时间会迎来一波大的涨价

前年和去年分享的很多校招上岸经验也都是出自阿秀的学习圈中的往届上岸人,阿秀的学习圈中置顶帖的「知识图谱」和「精华区」(如下图)中有很多计算机大学本科&研究生学习以及校招的内容和问题,多看看这些能够帮你走的更稳、更顺、更平坦。

后续也会在自己组建的阿秀的学习圈中分享一些社招跳槽找工作的经验,都是自己一路走过来的经验。

e537b1a0461c9df79c134d971494b9a3.png星球里的精华区、知识图谱以及资源沉淀

一个人踽踽独行不如结伴而行,以后会继续在星球笔耕不辍,输出一些有价值的内容13049f55f5e9029c08c59f4408498f6a.png

阿秀也是自己开发了一个网站,能够定向查看某些公司的某些岗位面试真题,比如我想查一下行业为互联网,公司为字节跳动,考察岗位为后端,考察时间为最近一年之类的面试题有哪些?

c5b15aa9904c8a1d443198ba3d3a3fff.png
阿秀自己独立完成的全栈项目

InterviewGuide大厂面试真题解析网站:https://top.interviewguide.cn/

后面也会继续开发其余星球成员专属功能,比如模拟面试以及题目收藏、甚至是真题下载打印功能等。

欢迎点击左下角阅读原文详细了解,这可能是你求职路上性价比最高的一次点击!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/857280.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TCP 协议十大相关特性总结

目录 一、TCP特性 二、报文格式 TCP十大核心特性 1. 确认应答 2. 超时重传 3. 连接管理(三次握手,四次挥手) 三次握手 四次挥手 4. 滑动窗口 情况一:接收方的ACK丢失 情况二:发送方的数据包丢失 5. 流量控制 6. 拥塞控制 7. 延迟应答 8. 捎带应答 9. 字节流粘包问题 10. TCP的…

vue3+element-plus点击列表中的图片预览时,图片被表格覆盖

文章目录 问题解决 问题 视觉 点击图片进行预览&#xff0c;但还能继续选中其他的图片进行预览&#xff0c;鼠标放在表格上&#xff0c;那一行表格也会选中&#xff0c;如图所示第一行的效果。 代码 <el-table-column prop"id" label"ID" width"…

花样滑冰选手骨骼点动作识别

2023 CCF BDCI 基于飞桨实现花样滑冰选手骨骼点动作识别 16名方案以及总结 比赛任务 花样滑冰与其他运动项目相比&#xff0c;其动作类型的区分难度更大&#xff0c;这对识别任务来说是极大的挑战。对于花样滑冰动作识别任务&#xff0c;主要难点如下&#xff1a; (1) 花样滑…

10款数据可视化工具,同行公认的好BI

都说内行看门道&#xff0c;一款BI数据可视化工具好不好&#xff0c;同行心里比谁都清楚。那么&#xff0c;能够得到同行一致认可的BI数据可视化工具有哪些&#xff0c;各自又有着怎样的特色优势&#xff1f;接下来就来简单地总结下。 1、Tableau 这是一款普及率很高的数据可…

vscode格式化文档

vscode格式化文档后&#xff0c;换行比较短&#xff0c;看着难受&#xff0c;如下图&#xff1a; 解决方法&#xff1a;在vscode左下角找到设置 并搜索settings.json文件&#xff0c;粘贴如下代码&#xff0c;在格式化文档就会以设置的宽度换行 {// vscode默认启用了根据文…

代码随想录算法训练营day27 | 39. 组合总和,40. 组合总和 II,131. 分割回文串

目录 39. 组合总和 40. 组合总和 II 131. 分割回文串 39. 组合总和 难度&#xff1a;medium 类型&#xff1a;回溯 思路&#xff1a; 这道题的特点是&#xff0c;组合没有元素个数要求&#xff0c;数组无重复元素&#xff0c;每个元素可以无限选取。 组合没有元素个数要求…

linux环形缓冲区kfifo实践1

本次实验使用的kfifo相关宏 struct __kfifo {unsigned int in;unsigned int out;unsigned int mask;unsigned int esize;void *data;}; /** define compatibility "struct kfifo" for dynamic allocated fifos*/ struct kfifo __STRUCT_KFIFO_PTR(unsigned char, …

5.Eclipse的Ctrl+F快捷键搜索面板全功能详解

Eclipse的CtrlF快捷键详解 1.搜索/替换方向 Forward&#xff1a;向前 Backward&#xff1a;向后 2.范围&#xff1a;Scope All&#xff1a;全部&#xff08;当前文件&#xff09; Selected lines&#xff1a;选中的几行 3.选项&#xff1a;Options Case sensiti…

护眼灯作用大吗?2023这样的护眼台灯对孩子眼睛好

可以肯定的是&#xff0c;护眼灯一般可以达到护眼的效果。 看书和写字时&#xff0c;光线应适度&#xff0c;不宜过强或过暗&#xff0c;护眼灯光线较柔和&#xff0c;通常并不刺眼&#xff0c;眼球容易适应&#xff0c;可以防止光线过强或过暗导致的用眼疲劳。如果平时生活中…

嵌入式Linux驱动开发系列六:Makefile

Makefile是什么? gcc hello.c -o hello gcc aa.c bb.c cc.c dd.c ... make工具和Makefile make和Makefile是什么关系&#xff1f; make工具:找出修改过的文件&#xff0c;根据依赖关系&#xff0c;找出受影响的相关文件&#xff0c;最后按照规则单独编译这些文件。 Make…

SpringBoot + Vue 简单前后端分离项目的增删改查

SpringBoot 是提供一种快速整合的方式 文章目录 前期准备新建数据库新建项目config 配置包application.yml 后端业务开发po 类mapper 接口service 接口service 实现类controller 类 测试增加数据测试删除数据测试修改数据测试查新数据测试 前端页面开发查询页面删除功能添加页面…

2023年国内低代码平台盘点:TOP 10活跃领军者,助力企业智能应用快速构建

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

实战实例 | 郑航无人驾驶航空器系统工程专业综合实验平台建设项目

郑州航空工业管理学院 无人驾驶航空器系统工程专业综合实验平台建设项目 关键词&#xff1a;飞控开发、仿真训练、组装调试、无人机集群 解决方案&#xff1a;多智能体协同创新实验室解决方案 | 项目背景 无人机行业是当前发展迅速、技术综合性强和应用前景好的朝阳行业。基…

CCLINK IE FIELD BASIC转MODBUS-TCP网关cclink与以太网的区别

协议的不同&#xff0c;数据读取困难&#xff0c;这是很多生产管理系统的难题。但是现在&#xff0c;捷米JM-CCLKIE-TCP通讯网关&#xff0c;让这个问题变得非常简单。这款通讯网关可以将各种MODBUS-TCP设备接入到CCLINK IE FIELD BASIC网络中&#xff0c;连接到MODBUS-TCP总线…

echo用法、linxu课堂练习题、作业题

一、课堂练习 练习一&#xff1a; 4、普通用户修改密码&#xff1a; root修改密码&#xff1a; 5、修改主机名&#xff1a;hostnamectl hostname 主机名 查看&#xff1a;hostnamectl或者cat etc/hostname 练习二&#xff1a; 1、 mkdir /root/html touch /root/html/index.…

基于摄影测量的数字孪生建设

在这篇博文中&#xff0c;我们将了解如何使用无人机拍摄的照片在数字孪生中创建现实世界环境的 3D 模型。 数字孪生是物理系统的虚拟表示&#xff0c;定期更新数据以模仿其所表示的资产的结构、状态和行为。 数字孪生可以通过在单一管理平台中连接多个数据源并提供可行的见解来…

十一、结合数字孪生与时间技术进行多维分析设计与实施

大数据可视化中心以主题为分析对象,选择业务分类下的某个主题,可以在数据面板中展示其二维图表,在地图中标记其空间分布,并叠加其相应的二维或三维图层。 1、界面设计 其主界面设计详上图,各部分功能介绍如下: 1.1、主题与图层面板,从上到下,从左到右分别是: ①折…

Linux--core dump打开的情况下,运行下面的代码,会发生什么?

代码&#xff1a; #include <iostream> #include <signal.h> #include <unistd.h>using namespace std;void catchSig(int signum) {cout<< "进程捕捉到了一个信号&#xff0c;正在处理中&#xff1a; "<< signum << " p…

基于Spring Boot的招聘网站的设计与实现(Java+spring boot+MySQL)

获取源码或者论文请私信博主 演示视频&#xff1a; 基于Spring Boot的招聘网站的设计与实现&#xff08;Javaspring bootMySQL&#xff09; 使用技术&#xff1a; 前端&#xff1a;html css javascript jQuery ajax thymeleaf 微信小程序 后端&#xff1a;Java springboot框…

Linux 进程间通信, 管道

文章目录 前言一、常见的进程间通信方式二、如何实现管道通信三、示例代码解析四、管道的读写行为总结 前言 在多进程编程中&#xff0c;进程间通信&#xff08;Inter-Process Communication&#xff0c;IPC&#xff09;是一种重要的技术手段&#xff0c;它使得不同进程可以安…