前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >系统架构设计面试指南(02)-MQ和文件存储

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

作者头像
JavaEdge
发布2024-01-03 10:22:10
1380
发布2024-01-03 10:22:10
举报
文章被收录于专栏:JavaEdgeJavaEdge

第一时间关注技术干货!

免责声明~ 任何文章不要过度深思! 万事万物都经不起审视,因为世上没有同样的成长环境,也没有同样的认知水平,更「没有适用于所有人的解决方案」; 不要急着评判文章列出的观点,只需代入其中,适度审视一番自己即可,能「跳脱出来从外人的角度看看现在的自己处在什么样的阶段」才不为俗人。 怎么想、怎么做,全在乎自己「不断实践中寻找适合自己的大道」

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。

未完待续。。。

参考:

  • 编程严选网

db53f14054b243ffc37527a1cc9689e2.png
db53f14054b243ffc37527a1cc9689e2.png
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-01-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.5 冗余性和复制
  • 1.6 存储
    • 块存储
      • 文件存储
        • 对象存储
          • 冗余磁盘阵列(RAID)
          • 1.7 消息队列
            • Kafka
            • 2 File Systems
              • Google File System (GFS)
                • Hadoop Distributed File System (HDFS)
                相关产品与服务
                文件存储
                文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                http://www.vxiaotou.com