系統架構設計面試指南(02)-MQ和檔案儲存

碼農談IT發表於2024-01-02

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

來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70024924/viewspace-3002309/,如需轉載,請註明出處,否則將追究法律責任。

相關文章