分布式存儲概述

1. 分布式存儲概念

大規模分布式存儲系統的定義如下:

????????“分布式存儲系統是大量普通PC服務器通過Internet互聯,對外作為一個整體提供存儲服務。”

分布式存儲系統具有如下幾個特性:

  1. 可擴展。分布式存儲系統可以擴展到幾百臺甚至幾千臺的集群規模,而且,隨著集群規模的增長,系統整體性能表現為線性增長。
  2. 低成本。分布式存儲系統的自動容錯、自動負載均衡機制使其可以構建在普通PC機之上。另外,線性擴展能力也使得增加、減少機器非常方便,可以實現自動運維
  3. 高性能。無論是針對整個集群還是單臺服務器,都要求分布式存儲系統具備高性能。
  4. 易用。分布式存儲系統需要能夠提供易用的對外接口,另外,也要求具備完善的監控、運維工具,并能夠方便地與其他系統集成,例如,從Hadoop云計算系統導入數據。

????????分布式存儲系統的挑戰主要在于數據、狀態信息的持久化,要求在自動遷移、自動容錯、并發讀寫的過程中保證數據的一致性。分布式存儲涉及的技術主要來自兩個領域?:?分布式系統以及數據庫,如下所示:

  1. 數據分布:如何將數據分布到多臺服務器才能夠保證數據分布均勻?數據分布到多臺服務器后如何實現跨服務器讀寫操作?
  2. 一致性:如何將數據的多個副本復制到多臺服務器,即使在異常情況下,也能夠保證不同副本之間的數據一致性?
  3. 容錯:如何檢測到服務器故障?如何自動將出現故障的服務器上的數據和服務遷移到集群中其他服務器?
  4. 負載均衡:新增服務器和集群正常運行過程中如何實現自動負載均衡?數據遷移的過程中如何保證不影響已有服務?
  5. 事務與并發控制:如何實現分布式事務?如何實現多版本并發控制?
  6. 易用性:如何設計對外接口使得系統容易使用?如何設計監控系統并將系統的內部狀態以方便的形式暴露給運維人員?
  7. 壓縮/解壓縮:如何根據數據的特點設計合理的壓縮/解壓縮算法?如何平衡壓縮算法節省的存儲空間和消耗的CPU計算資源?

????????分布式存儲系統挑戰大,研發周期長,涉及的知識面廣。一般來講,工程師如果能夠深入理解分布式存儲系統,理解其他互聯網后臺架構不會再有任何困難。

2.?分布式存儲分類

分布式存儲面臨的數據需求比較復雜,大致可以分為三類:

  1. 非結構化數據?: 包括所有格式的辦公文檔、文本、圖片、圖像、音頻和視頻信息等。
  2. 結構化數據?: 一般存儲在關系數據庫中,可以用二維關系表結構來表示。結構化數據的模式(Schema,包括屬性、數據類型以及數據之間的聯系)和內容是分開的,數據的模式需要預先定義
  3. 半結構化數據?: 介于非結構化數據和結構化數據之間,HTML文檔就屬于半結構化數據。它一般是自描述的,與結構化數據最大的區別在于,半結構化數據的模式結構和內容混在一起,沒有明顯的區分,也不需要預先定義數據的模式結構。

????????

????????不同的分布式存儲系統適合處理不同類型的數據,可以將分布式存儲系統分為四類分布式文件系統、分布式鍵值(Key-Value)系統、分布式表格系統和分布式數據庫。

1.分布式文件系統

????????互聯網應用需要存儲大量的圖片、照片、視頻等非結構化數據對象,這類數據以對象的形式組織,對象之間沒有關聯,這樣的數據一般稱為Blob(BinaryLarge Object,二進制大對象)數據。

????????分布式文件系統用于存儲Blob對象,典型的系統有FacebookHaystack以及TaobaoFile System(TFS)。另外,分布式文件系統也常作為分布式表格系統以及分布式數據庫的底層存儲,如谷歌的GFS(GoogleFile System,存儲大文件)可以作為分布式表格系統 Google Bigtable的底層存儲。

總體上看,分布式文件系統存儲三種類型的數據 :?Blob對象、定長塊以及大文件。在系統實現層面,分布式文件系統內部按照數據塊(chunk)來組織數據,每個數據塊的大小大致相同,每個數據塊可以包含多個Blob對象或者定長塊,一個大文件也可以拆分為多個數據塊,如圖1-1所示。分布式文件系統將這些數據塊分散到存儲集群,處理數據復制、一致性、負載均衡、容錯等分布式系統難題,并將用戶對 Blob 對象、定長塊以及大文件的操作映射為對底層數據塊的操作。

2.分布式鍵值系統

????????分布式鍵值系統用于存儲關系簡單的半結構化數據,它只提供基于主鍵的CRUD(Create/Read/Update/Delete)功能,即根據主鍵創建、讀取、更新或者刪除一條鍵值記錄

????????典型的系統有 Amazon Dynamo以及 Taobao Tair。從數據結構的角度看,分布式鍵值系統與傳統的哈希表比較類似,不同的是,分布式鍵值系統支持將數據分布到集群中的多個存儲節點。分布式鍵值系統是分布式表格系統的一種簡化實現,一般用作緩存比如淘寶 Tair 以及 Memcache。一致性哈希分布式鍵值系統中常用的數據分布技術因其被 Amazon DynamoDB系統使用而變得相當有名。

????????分布式鍵值系統是一種存儲和檢索鍵值對數據的分布式系統。它們通常用于需要高性能、可伸縮性和低延遲的應用程序。以下是分布式鍵值系統的一些優點、缺點和使用場景:

優點:

  1. 高性能:?分布式鍵值系統通常設計用于快速的數據訪問。由于數據存儲在內存中或者分布式存儲系統中,因此可以實現高速的讀寫操作
  2. 可伸縮性:?分布式鍵值系統可以水平擴展,即通過增加更多的節點來處理更多的請求負載。這種可伸縮性使得系統能夠應對持續增長的數據量和用戶請求。
  3. 簡單的數據模型:?鍵值對是一種簡單的數據模型,易于理解和使用。這種簡單性使得開發人員能夠快速構建和維護應用程序。
  4. 靈活性:?鍵值對數據模型的靈活性使得它適用于多種用途,包括緩存、會話存儲、配置管理等。

缺點:

  1. 一致性和可用性權衡:?一些分布式鍵值系統在保證一致性的同時會犧牲一定程度的可用性,而一些系統則相反。這種一致性和可用性之間的權衡需要根據應用程序的需求進行選擇。
  2. 數據一致性:?在分布式環境中,確保數據的一致性是一個挑戰。一些系統可能會選擇犧牲一致性以獲得更高的性能【Redis】,而另一些系統則可能采用一致性協議來確保數據的一致性【Zookeeper】。
  3. 維護復雜性:?分布式系統的維護和管理比單機系統更加復雜。需要考慮到節點的故障處理、負載均衡、數據分區等問題
  4. 網絡延遲和故障:?分布式系統通常依賴于網絡通信,在網絡延遲或者故障發生時,可能會影響系統的性能和可用性。

使用場景:

分布式鍵值系統在許多領域都有廣泛的應用,以下是一些常見的應用場景

  1. 緩存:?分布式鍵值系統常用作緩存存儲,例如使用Redis或Memcached。它們能夠快速地存儲和檢索數據,從而提高應用程序的性能和響應速度。
  2. 會話存儲:?在分布式應用程序中,需要跨多個請求或服務之間共享會話信息。分布式鍵值系統可以用來存儲會話數據,確保用戶的會話狀態在整個應用程序集群中是一致的。【ZooKeeper等】
  3. 配置管理:?將應用程序的配置信息存儲在分布式鍵值系統中,可以實現配置的集中管理和動態更新。這樣可以簡化配置的部署和維護,同時保證配置的一致性。【ZooKeeper等】
  4. 元數據存儲:?許多分布式系統需要存儲元數據信息,例如文件系統、數據庫等。分布式鍵值系統可以用來存儲這些元數據,提供高性能和可伸縮的元數據訪問服務。【ZooKeeper等】
  5. 分布式鎖:?在分布式系統中,可能需要實現分布式鎖以確保對共享資源的并發訪問是安全的。分布式鍵值系統可以提供基于鎖的機制,用來實現分布式鎖。【ZooKeeper和Redis都可】
  6. 消息隊列:?一些分布式鍵值系統具有隊列功能,可以用作簡單的消息隊列。這樣可以實現消息的異步傳遞和處理,從而解耦應用程序的不同組件。【Redis和kafka等】
  7. 分布式計算:?在分布式計算任務中,需要對中間結果進行存儲和共享。分布式鍵值系統可以用來存儲這些中間結果數據,以便后續的計算任務使用。【Hive和Spark、Flink等】

????????總的來說,分布式鍵值系統具有高性能、可伸縮性和簡單的數據模型,適用于許多分布式應用場景。它們可以幫助提高應用程序的性能、可靠性和擴展性,從而滿足不同應用的需求。

3.分布式表格系統

分布式表格系統用于存儲關系較為復雜的半結構化數據,與分布式鍵值系統相比,分布式表格系統不僅僅支持簡單的CRUD操作,而且支持掃描某個主鍵范圍。分布式表格系統以表格為單位組織數據每個表格包括很多行,通過主鍵標識一行,支持根據主鍵的 CRUD 功能以及范圍查找功能。

分布式表格系統借鑒了很多關系數據庫的技術,例如支持某種程度上的事務,比如單行事務,某個實體組(Entity Group,一個用戶下的所有數據往往構成一個實體組)下的多行事務。典型的系統包括GoogleBigtable以及Megastore,Microsoft Azure TableStorage,Amazon DynamoDB等。與分布式數據庫相比,分布式表格系統主要支持針對單張表格的操作,不支持一些特別復雜的操作,比如多表關聯,多表聯接,嵌套子查詢;另外,在分布式表格系統中,同一個表格的多個數據行也不要求包含相同類型的列,適合半結構化數據。分布式表格系統是一種很好的權衡,這類系統可以做到超大規模而且支持較多的功能,但實現往往比較復雜,而且有一定的使用門檻。

4.分布式數據庫

????????分布式數據庫一般是從單機關系數據庫擴展而來,用于存儲結構化數據。分布式數據庫采用二維表格組織數據,提供SQL關系查詢語言,支持多表關聯,嵌套子查詢等復雜操作,并提供數據庫事務以及并發控制

????????典型的系統包括MYSQL數據庫分片(MYSQLSharding)集群,AmazonRDS以及Microsoft SQL Azure。分布式數據庫支持的功能最為豐富,符合用戶使用習慣,但可擴展性往往受到限制。當然,這一點并不是絕對的。GoogleSpanner系統是一個支持多數據中心的分布式數據庫,它不僅支持豐富的關系數據庫功能,還能擴展到多個數據中心的成千上萬臺機器。除此之外,阿里巴巴OceanBase系統也是一個支持自動擴展的分布式關系數據庫。

????????關系數據庫是目前為止最為成熟的存儲技術,它的功能極其豐富。然而,關系數據庫在可擴展性上面臨著巨大的挑戰。

????????傳統關系數據庫的事務以及二維關系模型很難高效地擴展到多個存儲節點上,另外,關系數據庫對于要求高并發的應用在性能上優化空間較大。

????????為了解決關系數據庫面臨的可擴展性、高并發以及性能方面的問題,各種各樣的非關系數據庫噴涌而現,這類系統成為NoSQL 系統,可以理解為“Not Only SQL”系統。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/46326.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/46326.shtml
英文地址,請注明出處:http://en.pswp.cn/web/46326.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

24暑假算法刷題 | Day15 | LeetCode 110. 平衡二叉樹,257. 二叉樹的所有路徑,404. 左葉子之和,222. 完全二叉樹的節點個數

目錄 110. 平衡二叉樹題目描述題解 257. 二叉樹的所有路徑題目描述題解 404. 左葉子之和題目描述題解 222. 完全二叉樹的節點個數題目描述題解 110. 平衡二叉樹 點此跳轉題目鏈接 題目描述 給定一個二叉樹,判斷它是否是平衡二叉樹 平衡二叉樹 是指該樹所有節點的…

Redis-布隆過濾器(Bloom Filter)詳解

文章目錄 什么是布隆過濾器 布隆過濾器的優點:布隆過濾器的缺點:其他問題 布隆過濾器適合的場景布隆過濾器原理 數據結構增加元素查詢元素刪除元素 如何使用布隆過濾器 Google開源的Guava自帶布隆過濾器Redis實現布隆過濾器 Redis中配置布隆過濾器Redis…

【echarts】tooltip 增加單位

單個柱子 const data [{value: 1,per: 2},{value: 22,per: 2},{value: 222,per: 3} ];tooltip: {trigger: axis,show: true,axisPointer: {type: line,lineStyle: {color: rgba(0, 0, 0, 0.03),type: solid,width: 60,},},formatter(params) {return ${params[0].name}: ${par…

歐鵬 數據庫第一次作業

第一次作業題目 1,windows中選擇一種方式安裝mysql 2,新建產品庫(名字自擬)db_mysql_3 3,使用產品庫新建三張表 如下: 表1:employees 列1:id,整型,主鍵 列2:name,字符串,最大長度50,不能為空 列3:age,整型 列4:gender,字符串,最大長度10,不能為空,默認值"…

數據結構歷年考研真題對應知識點(樹、森林)

目錄 5.4.2樹、森林與二叉樹的轉換 1.樹轉換為二叉樹 【樹和二叉樹的轉換及相關性質的推理(2009、2011)】 2.森林轉換為二叉樹 【森林和二叉樹的轉換及相關性質的推理(2014)】 3.二叉樹轉換為森林 【由遍歷序列構造一棵二叉樹并轉換為對應的森林(2020、2021)】 5.4.3樹和…

C# 各版本語法新功能匯總

C# 8.0 以后 官網 C# 7.3 》》in C# 7.2 》》 命名參數、具名參數 》》》 條件 ref 表達式 C# 7.1 》》 default 運算符 default 在C#7.1中得到了改進,不再需要default(T)了 //變量賦值C#7.0 var s "字符串"; s default(s…

LeetCode 算法:電話號碼的字母組合 c++

原題鏈接🔗:電話號碼的字母組合 難度:中等???? 題目 給定一個僅包含數字 2-9 的字符串,返回所有它能表示的字母組合。答案可以按 任意順序 返回。 給出數字到字母的映射如下(與電話按鍵相同)。注意 …

SpringCloud教程 | 第九篇: 使用API Gateway

1、參考資料 SpringCloud基礎篇-10-服務網關-Gateway_springcloud gateway-CSDN博客 2、先學習路由,參考了5.1 2.1、建了一個cloudGatewayDemo,這是用來配置網關的工程,配置如下: http://localhost:18080/aaa/name 該接口代碼如…

git clone命令, 克隆遠程倉庫

這個應該是最簡單的命令,當別人扔給你一個*****.git鏈接,你要知道怎么用,但是還需要注意以下幾點: 1. 你在該網站上是否有賬號 2. 你在該網站上的賬號是否是該項目的成員,如果不是,那可能clone不了 3. 本機…

WSL-Ubuntu20.04部署環境配置

1.更換Ubuntu軟件倉庫鏡像源 為了在WSL上使用TensorRT進行推理加速,需要安裝以下環境,下面將按以下順序分別介紹安裝、驗證以及刪除環境: #1.C環境配置 gcc、gdb、g #2.gpu環境 cuda、cudnn #3.Cmake環境 CMake #4.OpenCV環境 OpenCV #5.Ten…

vxe-grid 實現配置式form搜索條件 form搜索條件框可折疊 配置式table

文章目錄 效果圖代碼 效果圖 代碼 <template><div class"app-container"><vxe-grid refxGrid v-bind"gridOptions" v-if"tableHeight" :height"tableHeight"><template #billDate"{ data }"><e…

Zoom視頻會議軟件使用

Zoom是一款廣受歡迎的視頻會議軟件&#xff0c;使用它可以輕松地進行遠程會議、在線培訓和團隊協作等。要充分利用Zoom軟件的功能&#xff0c;以下是詳細具體的使用方法和步驟&#xff1a; 下載安裝 下載&#xff1a;訪問Zoom官方網站&#xff0c;根據使用的操作系統下載相應的…

ttkefu在線客服系統 機器人+人工客服 全渠道接入客戶咨詢

ttkefu在線客服系統是一種集成了機器人客服與人工客服&#xff0c;并支持全渠道接入客戶咨詢的綜合解決方案。這種系統能夠顯著提升客戶服務效率&#xff0c;優化客戶體驗&#xff0c;同時幫助企業降低運營成本 1. 智能機器人客服 自動回復&#xff1a;機器人客服能夠自…

Java集合框架的內部揭秘:List、Set與Map的深潛之旅

Java集合框架是一套強大的工具&#xff0c;為開發者提供了靈活的數據管理方式。本文將深入剖析List、Set和Map的內部機制&#xff0c;通過詳細的示例和擴展討論&#xff0c;帶你領略這些數據容器的真諦。 一、List&#xff1a;有序序列的深度剖析 List接口是一個可以包含重復…

自制連點器

B站使用教程&#xff1a;https://www.bilibili.com/video/BV1SR85e4EKw/?vd_source47eba1800d831e86d4778a128740fe73 下載鏈接&#xff1a;鏈接&#xff1a;https://pan.baidu.com/s/1Spv_yVPFB3zoS__VL-nhaQ?pwdyxo1 提取碼&#xff1a;yxo1

20.x86游戲實戰-遠線程注入的實現

免責聲明&#xff1a;內容僅供學習參考&#xff0c;請合法利用知識&#xff0c;禁止進行違法犯罪活動&#xff01; 本次游戲沒法給 內容參考于&#xff1a;微塵網絡安全 工具下載&#xff1a; 鏈接&#xff1a;https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

Spring Boot 中,監聽應用程序啟動的生命周期事件的4種方法

文章目錄 前言在 Spring Boot 中&#xff0c;監聽應用程序啟動的生命周期事件有多種方法。你可以使用以下幾種方式來實現&#xff1a; 一、使用 ApplicationListener二、使用 EventListener三、實現 CommandLineRunner 或 ApplicationRunner四、使用 SmartLifecycle總結 前言 …

Spring AI 應用開發中設置訪問 Ollama 的超時時間

使用 Spring AI 開發 AI 應用時&#xff0c;Ollama 通常在本地開發和測試時使用&#xff0c;用來在本地運行大模型。由于本地開發機器的資源限制&#xff0c;當使用 Ollama 運行較大的模型時&#xff0c;大模型給出響應的時間會比較長。Spring AI 提供的 OllamaChatModel 與 Ol…

在Mac上免費恢復誤刪除的Word文檔

Microsoft Word for Mac是一個有用的文字處理應用程序&#xff0c;它與Microsoft Office套件捆綁在一起。該軟件的穩定版本包括 Word 2019、2016、2011 等。 Word for Mac 與 Apple Pages 兼容;這允許在不同的操作系統版本中使用Word文檔&#xff0c;而不會遇到任何麻煩。 與…

【數據結構】非線性表----樹詳解

樹是一種非線性結構&#xff0c;它是由**n&#xff08;n>0&#xff09;**個有限結點組成一個具有層次關系的集合。具有層次關系則說明它的結構不再是線性表那樣一對一&#xff0c;而是一對多的關系&#xff1b;隨著層數的增加&#xff0c;每一層的元素個數也在不斷變化&…