系统架构设计面试指南(02)-MQ和文件存储

news2024/11/25 9:28:59

点击下方“JavaEdge”,选择“设为星标”

第一时间关注技术干货!

免责声明~

任何文章不要过度深思!

万事万物都经不起审视,因为世上没有同样的成长环境,也没有同样的认知水平,更「没有适用于所有人的解决方案」

不要急着评判文章列出的观点,只需代入其中,适度审视一番自己即可,能「跳脱出来从外人的角度看看现在的自己处在什么样的阶段」才不为俗人

怎么想、怎么做,全在乎自己「不断实践中寻找适合自己的大道」

1.5 冗余性和复制

冗余性是系统中复制关键组件的过程,旨在提高系统的可靠性或整体性能。它通常以备份或故障转移的形式存在。冗余性在系统中消除单点故障并在需要时提供备份时起着关键作用。例如,如果我们在生产中运行两个服务实例,并且其中一个实例失败,系统可以

切换到另一个实例。

复制是分享信息以确保冗余资源之间的一致性的过程。您可以复制软件或硬件组件以提高可靠性、容错性或可访问性。在许多数据库管理系统(DBMS)中使用复制,通常在原始数据和其副本之间存在主从关系。主服务器接收所有更新,这些更新通过副本服务器传递。每个副本服务器在成功接收更新时输出消息。

在 Scalability & System Design for Developers 的 Web 应用程序和软件架构模块中了解更多关于冗余性和复制的信息。

1.6 存储

数据是每个系统的核心。在设计系统时,我们需要考虑如何存储数据。根据系统的需求,我们可以实施各种存储技术。

块存储

块存储是一种数据存储技术,其中数据被分解为相等大小的块,每个单独的块都被分配一个唯一的标识符以便于访问。这些块存储在物理存储中。与固定路径不同,块可以存储在系统中的任何位置,更有效地利用资源。

特定位置中的固定大小块

关注我,了解有关 块存储 的更多信息。

文件存储

文件存储是一种分层存储方法。使用此方法,数据存储在文件中。文件存储在文件夹中,然后存储在目录中。这种存储方法仅适用于有限数量的数据,主要是结构化数据。

随着数据量超过一定点,此数据存储方法可能变得麻烦。

在固定的逻辑顺序中的特定文件夹

关注我,了解有关 文件存储 的更多信息。

对象存储

对象存储 是专门设计用于处理大量非结构化数据的存储大量非结构化数据的存储方法。对象存储是数据归档和数据备份的首选数据存储方法,因为它提供了动态可扩展性。对象存储不直接可在操作系统级别访问。通信通过应用程序级别的 RESTful API 进行。这种存储类型对系统提供了巨大的灵活性和价值,因为备份、非结构化数据和日志文件对于任何系统都很重要。如果您正在设计一个具有大型数据集的系统,对象存储将非常适合您的组织。

由元数据驱动的可扩展存储

冗余磁盘阵列(RAID)

冗余磁盘阵列(RAID)是一种使用多个磁盘构建更快、更大、更可靠的磁盘系统的技术。外部上,RAID 看起来像一个磁盘。在内部,它是一个复杂的工具,由多个磁盘、内存和一个或多个处理器组成以管理系统。硬件 RAID 类似于计算机系统,但专门用于管理一组磁盘。RAID 有不同级别,每个级别提供不同的功能。在设计复杂的系统时,您可能希望实施 RAID 存储技术。

RAID 1 技术:镜像

关注我,了解有关 RAID 的更多信息。

1.7 消息队列

消息队列是一种将消息从源路由到目标,或从发送方路由到接收方的队列。它遵循先进先出(FIFO)原则。首先发送的消息首先传递。消息队列促进异步行为,允许模块在不妨碍主要任务的情况下相互通信。它们还促进跨模块通信,并为消息提供临时存储,直到它们被处理和消耗。

在 Scalability & System Design for Developers 的 Web 应用程序和软件架构模块中了解有关消息队列的更多信息。

Kafka

Apache Kafka 于 2011 年作为 LinkedIn 的消息系统开始,但后来发展成为一种流行的分布式事件流平台。该平台能够处理每天的万亿条记录。Kafka 是一个由服务器和客户端组成的分布式系统,它们通过 TCP 网络协议进行通信。该系统允许我们读取、写入、存储和处理事件。Kafka 主要用于构建数据管道和实现流处理解决方案。

虽然 Kafka 是一种流行的消息队列选项,但还有其他流行的选项。要了解有关使用哪种消息队列的更多信息,我们建议查看以下资源:

  • Kafka vs RabbitMQ

  • Kafka vs Kinesis

  • Kafka vs Flink

2 File Systems

文件系统是处理存储磁盘上数据的位置和方式的进程。它管理存储磁盘的内部操作并说明用户或应用程序如何访问磁盘数据。文件系统管理多个操作,包括:

  • 文件命名

  • 存储管理

  • 目录

  • 文件夹

  • 访问规则

没有文件系统,很难识别文件、检索文件或管理个别文件的授权。

Google File System (GFS)

Google文件系统(GFS)是为大型数据密集型应用(如Gmail或YouTube)设计的可扩展分布式文件系统。它构建用于处理大数据集的批处理。GFS设计用于系统间交互,而不是用户间交互。它是可扩展且容错的。架构包括GFS集群,其中包含一个主服务器和多个Chunk服务器,可以由多个客户端访问。

在系统设计面试中,常常会被要求设计分布式文件系统,如GFS。为了准备这个问题,查看Grokking Modern System Design for Engineers & Managers中的系统设计面试资源。

Hadoop Distributed File System (HDFS)

Hadoop分布式文件系统(HDFS)是处理大型数据集并运行在商用硬件上的分布式文件系统。它构建用于存储非结构化数据。HDFS是GFS的更简化版本,其架构决策受到GFS设计的启发。HDFS建立在“写一次,多次读取”的数据处理模式的理念周围。

在系统设计面试中,常常会被要求设计分布式文件存储系统,如HDFS。为了准备这个系统设计面试问题,查看Grokking Modern System Design for Engineers and Managers。

未完待续。。。

参考:

  • 编程严选网

写在最后

编程严选网(www.javaedge.cn),程序员的终身学习网站已上线!

点击阅读原文,即可访问网站!

欢迎长按图片加好友,我会第一时间和你分享软件行业趋势面试资源学习途径等等。

aeaddea79a6ab51cae4abfc73cfa9daa.jpeg添加好友备注【技术群交流】拉你进群,更多教程资源应有尽有

关注公众号后,在后台私信:

  • 回复【架构师】,获取架构师学习资源教程

  • 回复【面试】,获取最新最全的互联网大厂面试资料

  • 回复【简历】,获取各种样式精美、内容丰富的简历模板

  • 回复 路线图,获取直升Java P7技术管理的全网最全学习路线图

  • 回复 大数据,获取Java转型大数据研发的全网最全思维导图

  • 微信【ssshflz】私信 【副业】,进副业交流群

  • 点击阅读原文,即可访问程序员一站式学习网站

 
 

db53f14054b243ffc37527a1cc9689e2.png

最近在准备面试,为大家准备一份2024最新最全的互联网大厂Java面经总结。
后端职业发展知识星球:

往期推荐


精心整理Java大厂面试必读书籍(强烈推荐)
我是如何一步步让公司的MySQL支撑亿级流量的?
你真的思考过自己写的代码为啥这么垃圾吗?
 
 
 
 
 
 
嘿,你在看吗?

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

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

相关文章

Go语言module,依赖管理方法

Go语言module,依赖管理方法 1.为什么需要依赖管理2.module管理配置流程打开go module配置一个国内的代理创建go.modGo Modules下的go get行为 3.GO env的其他配置GOSUMDBGONOPROXY/GONOSUMDB/GOPRIVATE 4.go.mod和go.sum概述5.Go Modules的语义化版本控制6.Go Modul…

Vue3-27-路由-路径参数的简单使用

什么是路径参数 在路由配置中,可以将【参数】放在【路由路径】中, 从而实现,同一个 路由,同一个组件,因路径参数不同,可以渲染出不同的内容。特点 : 1、当携带不同路径参数的路由相互跳转时&am…

Jupyter Notebook的10个常用扩展介绍

Jupyter Notebook(前身为IPython Notebook)是一种开源的交互式计算和数据可视化的工具,广泛用于数据科学、机器学习、科学研究和教育等领域。它提供了一个基于Web的界面,允许用户创建和共享文档,这些文档包含实时代码、…

关于解决引用第三方依赖突然失效的问题解决办法

目录 背景回顾解决办法结果 背景 出现该问题的背景是这样的。在项目中需要支持加载pdf文档的功能。所以采取了使用第三方PDF库的方法来实现加载pdf文档。集成完后,功能是正常的。后来过了一段时间,发现加载pdf的功能不能正常使用了,加载不出…

2023年的年度总结:不设边界、积极探索

23年的年度总结用一句话来说: 不设边界、积极探索 工作 从阿里来字节工作快3年了,这是一家年轻且充满活力的公司,伙食很棒,(跟刚毕业去网易那会伙食不相上下)。 作为一名应用层开发更多的时间都是和业务在…

Single-Image Crowd Counting via Multi-Column Convolutional Neural Network

Single-Image Crowd Counting via Multi-Column Convolutional Neural Network 论文背景人群密度方法过去的发展历史早期方法基于轨迹聚类的方法基于特征回归的方法基于图像的方法 Multi-column CNN用于人群计数基于密度图的人群计数通过几何自适应核生成密度图密度图估计的多列…

回溯法解决01背包问题

输入(共n1行):物品数量、背包体积 下面n行依次输入物品价值和体积 需要注意的点: ①输入的顺序 ②存储价值和体积的数组下标从1开始 ③每一轮符合条件时,及时更新VALUE(价值总和) 从前面做的回溯法可以总结出一些…

bootstrap5开发房地产代理公司Hamilton前端页面

一、需求分析 房地产代理网站是指专门为房地产行业提供服务的在线平台。这些网站的主要功能是连接房地产中介机构、房产开发商和潜在的买家或租户,以促成买卖或租赁房产的交易。以下是一些常见的房地产代理网站的功能: 房源发布:房地产代理网…

009、引用

1. 引用与借用 下面的示例重新定义了一个新的 calculate_length 函数。与之前不同的是,新的函数签名使用了 String 的引用作为参数而没有直接转移值的所有权: fn main() { let s1 String::from("hello"); let len calculate_length(&s1…

病情聊天机器人,利用Neo4j图数据库和Elasticsearch全文搜索引擎相结合

项目设计目的: 本项目旨在开发一个病情聊天机器人,利用Neo4j图数据库和Elasticsearch全文搜索引擎相结合,实现对病情相关数据的存储、查询和自动回答。通过与用户的交互,机器人可以根据用户提供的症状描述,给出初步的可…

【C++杂货铺】C++11新特性——可变参数模板

文章目录 一、可变模板参数相关概念的引入二、获取参数包中参数的个数三、递归函数方式展开参数包四、逗号表达式展开参数包五、可变模板参数的实际应用——emplace相关接口5.1 回顾一下 push_back 的三种用法5.2 emplace_back 使用方法介绍5.3 听说 emplace_back 可以提高效率…

SCT2601,可替代LMR16006X/MP2459/MP2456;4.5V-60V Vin,0.6A,高效降压DCDC转换器

•宽输入范围:4.5V-60V •高达0.6A的连续输出电流 •0.765V2.5%反馈参考电压 •集成500mΩ高压侧MOSFET •低静态电流为80uA •轻负载下的脉冲跳过模式(PSM) •最小接通时间80ns •内置6ms软启动时间 •开关频率为700KHz •可编程输入电压欠压…

探秘AI数字人克隆系统OEM源码:实现24小时无人值守直播间的奥秘

随着人工智能技术的不断发展,AI数字人克隆系统OEM源码正在引起广泛的关注。其中,实现24小时无人值守直播间成为了许多企业和机构的追求。本文将深入探讨如何利用AI数字人克隆系统OEM源码实现24小时无人值守直播间,并揭示其背后的奥秘。 一、…

Acrel-2000MG工商业储能站能量管理系统-光伏储能一体化解决方案

安科瑞 崔丽洁 Acrel-2000MG储能能量管理系统是安科瑞专门针对工商业储能电站研制的本地化能量管理系统,可实现了储能电站的数据采集、数据处理、数据存储、数据查询与分析、可视化监控、报警管理、统计报表、策略管理、历史曲线等功能。其中策略管理,支…

【活动回顾】ABeam 德硕 | 企业座谈及宣讲会--石河子大学专场

ABeam 石河子大学校招之旅 沙漠绿洲,戈壁明珠 近日,ABeam大中华区董事长兼总经理中野洋辅先生带领西安招聘团队来到新疆维吾尔自治区石河子市——石河子大学,与信息科学与技术学院领导就校企合作事宜进行了深入的座谈交流,并在随…

【Unity入门】UGUI之Slider(滑动条)

目录 一、什么是Slider?二、Slider属性与功能 一、什么是Slider? Slider控件允许用户可以通过鼠标来在预先确定的范围调节数值 我们可以在Hierarchy视图右键 -> UI ->Slider来创建滑动条 通过上图可以发现Unity内置的Slider主要有3部分&#x…

【web】vue 播放后端(flask)发送的 mp3 文件

文章目录 演示后端(flask)前端(vue3)重要说明 演示 后端(flask) 后端返回的是 mp3 文件的 url,是可以直接在浏览器上打开后播放的处理跨域请求pip install flask-cors后端代码from flask impor…

一场高规格品鉴会,窥探剑南春冲击高端的“野心”

执笔 | 洪大大 编辑 | 扬 灵 12月27日,以“锦绣巴蜀品味东方”为主题的剑南春东方红致敬中国时代品鉴会在有云鹿洄天府1911中国川菜体验中心举办,数十位媒体代表和嘉宾汇聚一堂,共同品味剑南春东方红的品质魅力,感知高端白酒品…

什么是缓存、为什么要用缓存、缓存分类、缓存测试、缓存更新、缓存设计考虑点、缓存测试点

一、缓存 缓存是一种将数据存储在高速缓存中的技术,它可以提高应用程序的性能和响应速度。 二、 为什么要用缓存 1. 高性能(主要目的) 查询耗时,但变化少,又有很多读请求情况下,可以将查询结果放到缓存中。减少对数据库的压力&…

光伏、储能一体化监控及运维解决方案 安科瑞 许敏

前言:今年以来,在政策利好推动下光伏、风力发电、电化学储能及抽水蓄能等新能源行业发展迅速,装机容量均大幅度增长,新能源发电已经成为新型电力系统重要的组成部分,同时这也导致新型电力系统比传统的电力系统更为复杂…