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

发布时间:2025-05-18 00:51:29 作者:益华网络 来源:undefined 浏览量(1) 点赞(1)
摘要:来源:JavaEdge 1.5 冗余性和复制 冗余性是系统中复制关键组件的过程,旨在提高系统的可靠性或整体性能。它通常以备份或故障转移的形式存在。冗余性在系统中消除单点故障并在需要时提供备份时起着关键作用。例如,如果我们在生产中运行两个

来源: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。

二维码

扫一扫,关注我们

声明:本文由【益华网络】编辑上传发布,转载此文章须经作者同意,并请附上出处【益华网络】及本页链接。如内容、图片有任何版权问题,请联系我们进行处理。

感兴趣吗?

欢迎联系我们,我们愿意为您解答任何有关网站疑难问题!

您身边的【网站建设专家】

搜索千万次不如咨询1次

主营项目:网站建设,手机网站,响应式网站,SEO优化,小程序开发,公众号系统,软件开发等

立即咨询 15368564009
在线客服
嘿,我来帮您!