点击下方“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),程序员的终身学习网站已上线!
点击阅读原文,即可访问网站!
欢迎长按图片加好友
,我会第一时间和你分享软件行业趋势
,面试资源
,学习途径
等等。
添加好友备注【技术群交流】拉你进群,更多教程资源应有尽有
关注公众号后,在后台私信:
回复【架构师】,获取架构师学习资源教程
回复【面试】,获取最新最全的互联网大厂面试资料
回复【简历】,获取各种样式精美、内容丰富的简历模板
回复 【路线图】,获取直升Java P7技术管理的全网最全学习路线图
回复 【大数据】,获取Java转型大数据研发的全网最全思维导图
微信【ssshflz】私信 【副业】,进副业交流群
点击【阅读原文】,即可访问程序员一站式学习网站
最近在准备面试,为大家准备一份2024最新最全的互联网大厂Java面经总结。
后端职业发展知识星球:
往期推荐
精心整理Java大厂面试必读书籍(强烈推荐)
我是如何一步步让公司的MySQL支撑亿级流量的?
你真的思考过自己写的代码为啥这么垃圾吗?
嘿,你在看吗?