當前位置:首頁 » 數據倉庫 » 分布式並行資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

分布式並行資料庫

發布時間: 2022-04-24 18:40:32

Ⅰ 分布式資料庫的工作原理是什麼

分布式數據有不同的理論支撐,TiDB 官方社區(AskTUG)


目前國產數據排名靠前的可以了解下 TiDB

  • 水平彈性擴展

    通過簡單地增加新節點即可實現 TiDB 的水平擴展,按需擴展吞吐或存儲,輕松應對高並發、海量數據場景。

  • 分布式事務

    TiDB 100% 支持標準的 ACID 事務。

  • 真正金融級高可用

    相比於傳統主從 (M-S) 復制方案,基於 Raft 的多數派選舉協議可以提供金融級的 100% 數據強一致性保證,且在不丟失大多數副本的前提下,可以實現故障的自動恢復 (auto-failover),無需人工介入。

Ⅱ 分布式資料庫有什麼特點

1.數據獨立性與位置透明性
數據獨立性是資料庫方法追求的主要目標之一,分布透明性指用戶不必關心數據的邏輯分區,不必關心數據物理位置分布的細節,也不必關心重復副本(冗餘數據)的一致性問題,同時也不必關心局部場地上資料庫支持哪種數據模型。分布透明性的優點是很明顯的。有了分布透明性,用戶的應用程序書寫起來就如同數據沒有分布一樣。當數據從一個場地移到另一個場地時不必改寫應用程序。當增加某些數據的重復副本時也不必改寫應用程序。數據分布的信息由系統存儲在數據字典中。用戶對非本地數據的訪問請求由系統根據數據字典予以解釋、轉換、傳送。

2.集中和節點自治相結合
在分布式資料庫中,數據的共享有兩個層次:一是局部共享,即在局部資料庫中存儲局部場地上各用戶的共享數據.這些數據是本場地用戶常用的。二是全局共享,即在分布式資料庫的各個場地也存儲可供網中其它場地的用戶共享的數據,支持系統中的全局應用。因此,相應的控制結構也具有兩個層次:集中和自治。分布式資料庫系統常常採用集中和自治相結合的控制結構,各局部的DBMS可以獨立地管理局部資料庫,具有自治的功能。同時,系統又設有集中控制機制,協調各局部DBMS的工作,執行全局應用。另外,在不同的系統集中和自治的程度不盡相同。
3.支持全局資料庫的一致性和和可恢復性
分布式資料庫中各局部資料庫即滿足集中式資料庫的一致性、可串列性和可恢復性,還保證了資料庫的全局一致性、並行操作的可串列性和系統的全局可恢復性。這是因為全局應用要涉及兩個以上結點的數據。因此在分布式資料庫系統中一個業務可能由不同場地上的多個操作組成。這樣,當其中某一個結點出現故障操作失敗後如何使全局業務滾回呢?如何使另一個結點撤銷已執行的操作(若操作已完成或完成一部分)或者不必再執行業務的其它操作(若操作尚沒執行)?這些技術要比集中式資料庫復雜和困難得多,分布式資料庫系統必須解決這些問題。
4.復制透明性
用戶不用關心資料庫在網路中各個節點的復制情況,被復制的數據的更新都由系統自動完成。在分布式資料庫系統中,可以把一個場地的數據復制到其他場地存放,應用程序可以使用復制到本地的數據在本地完成分布式操作,避免通過網路傳輸數據,提高了系統的運行和查詢效率。但是對於復制數據的更新操作,就要涉及到對所有復制數據的更新。
5.易於擴展性
在大多數網路環境中,單個資料庫伺服器最終會不滿足使用。如果伺服器軟體支持透明的水平擴展,那麼就可以增加多個伺服器來進一步分布數據和分擔處理任務。

Ⅲ 軟體系統可分為哪幾類

軟體系統分為兩大類:系統軟體、應用軟體。

1、系統軟體:擔負控制和協調計算機及其外部設備、支持應用軟體的開發和運行的一類計算機軟體。系統軟體般包括操作系統、語言處理程序、資料庫系統和網路管理系統。

2、應用軟體:為特定領域開發、並為特定目的服務的一類軟體。應用軟體是直接面向用戶需要的,它們可以直接幫助用戶提高工作質量和效率,甚至可以幫助用戶解決某些難題。



(3)分布式並行資料庫擴展閱讀

軟體系統作用:管理軟硬體資源、控製程序執行,改善人機界面,合理組織計算機工作流程和為用戶使用計算機提供良好運行環境的一種系統軟體。軟體系統為位於硬體層之上,所有軟體層之下的一個必不可少的、最基本又是最重要的一種系統軟體。它對計算機系統的全部軟、硬體和數據資源進行統一控制、調度和管理。

從用戶的角度看,它是用戶與計算機硬體系統的介面;從資源管理的角度看,它是計算機系統資源的管理者。其主要作用及目的就是提高系統資源的利用率;提供友好的用戶界面;創造良好的工作環境,從而使用戶能夠靈活、方便地使用計算機,使整個計算機系統能高效地運行。

任務為管理好計算機的全部軟硬體資源,提高計算機的利用率;擔任用戶與計算機之間的介面,使用戶通過操作系統提供的命令或菜單方便地使用計算機。

Ⅳ 哪些資料庫支持分布式

什麼是分布式計算?所謂分布式計算是一門計算機科學,它研究如何把一個需要非常巨大的計算能力才能解決的問題分成許多小的部分,然後把這些部分分配給許多計算機進行處理,最後把這些計算結果綜合起來得到最終的結果。最近的分布式計算項目已經被用於使用世界各地成千上萬位志願者的計算機的閑置計算能力,通過網際網路,您可以分析來自外太空的電訊號,尋找隱蔽的黑洞,並探索可能存在的外星智慧生命;您可以尋找超過1000萬位數字的梅森質數;您也可以尋找並發現對抗艾滋病病毒的更為有效的葯物。這些項目都很龐大,需要驚人的計算量,僅僅由單個的電腦或是個人在一個能讓人接受的時間內計算完成是決不可能的。 分布式計算是利用互聯網上的計算機的 CPU 的閑置處理能力來解決大型計算問題的一種計算科學。下面,我們看看它是怎麼工作的: 首先, 要發現一個需要非常巨大的計算能力才能解決的問題。這類問題一般是跨學科的、極富挑戰性的、人類急待解決的科研課題。其中較為著名的是: 1.解決較為復雜的數學問題,例如:GIMPS(尋找最大的梅森素數)。 2.研究尋找最為安全的密碼系統,例如:RC-72(密碼破解)。 3.生物病理研究,例如:Folding@home(研究蛋白質折疊,誤解,聚合及由此引起的相關疾病)。 4.各種各樣疾病的葯物研究,例如:United Devices(尋找對抗癌症的有效的葯物)。 5.信號處理,例如:SETI@Home(在家尋找地外文明)。 從這些實際的例子可以看出,這些項目都很龐大,需要驚人的計算量,僅僅由單個的電腦或是個人在一個能讓人接受的時間內計算完成是決不可能的。在以前,這些問題都應該由超級計算機來解決。但是, 超級計算機的造價和維護非常的昂貴,這不是一個普通的科研組織所能承受的。隨著科學的發展,一種廉價的、高效的、維護方便的計算方法應運而生——分布式計算! 隨著計算機的普及,個人電腦開始進入千家萬戶。與之伴隨產生的是電腦的利用問題。越來越多的電腦處於閑置狀態,即使在開機狀態下CPU的潛力也遠遠不能被完全利用。我們可以想像,一台家用的計算機將大多數的時間花費在「等待」上面。即便是使用者實際使用他們的計算機時,處理器依然是寂靜的消費,依然是不計其數的等待(等待輸入,但實際上並沒有做什麼)。互聯網的出現, 使得連接調用所有這些擁有限制計算資源的計算機系統成為了現實。 那麼,一些本身非常復雜的但是卻很適合於劃分為大量的更小的計算片斷的問題被提出來,然後由某個研究機構通過大量艱辛的工作開發出計算用服務端和客戶端。服務端負責將計算問題分成許多小的計算部分,然後把這些部分分配給許多聯網參與計算的計算機進行並行處理,最後將這些計算結果綜合起來得到最終的結果。 當然,這看起來也似乎很原始、很困難,但是隨著參與者和參與計算的計算機的數量的不斷增加, 計算計劃變得非常迅速,而且被實踐證明是的確可行的。目前一些較大的分布式計算項目的處理能力已經可以達到甚而超過目前世界上速度最快的巨型計算機。 您也可以選擇參加某些項目以捐贈的 Cpu 內核處理時間,您將發現您所提供的 CPU 內核處理時間將出現在項目的貢獻統計中。您可以和其他的參與者競爭貢獻時間的排名,您也可以加入一個已經存在的計算團體或者自己組建一個計算小組。這種方法很利於調動參與者的熱情。 隨著民間的組隊逐漸增多, 許多大型組織(例如公司、學校和各種各樣的網站)也開始了組建自己的戰隊。同時,也形成了大量的以分布式計算技術和項目討論為主題的社區,這些社區多數是翻譯製作分布式計算項目的使用教程及發布相關技術性文章,並提供必要的技術支持。 那麼誰可能加入到這些項目中來呢? 當然是任何人都可以! 如果您已經加入了某個項目,而且曾經考慮加入計算小組, 您將在中國分布式計算總站及論壇里找到您的家。任何人都能加入任何由我站的組建的分布式計算小組。希望您在中國分布式總站及論壇里發現樂趣。 參與分布式計算——一種能充分發揮您的個人電腦的利用價值的最有意義的選擇——只需要下載有關程序,然後這個程序會以最低的優先度在計算機上運行,這對平時正常使用計算機幾乎沒有影響。如果你想利用計算機的空餘時間做點有益的事情,還猶豫什麼?馬上行動起來吧,你的微不足道的付出或許就能使你在人類科學的發展史上留下不小的一筆呢! 專業定義 (中國科學技術信息研究所對分布式計算的定義) 分布式計算是近年提出的一種新的計算方式。所謂分布式計算就是在兩個或多個軟體互相共享信息,這些軟體既可以在同一台計算機上運行,也可以在通過網路連接起來的多台計算機上運行。分布式計算比起其它演算法具有以下幾個優點: 1、稀有資源可以共享, 2、通過分布式計算可以在多台計算機上平衡計算負載, 3、可以把程序放在最適合運行它的計算機上, 其中,共享稀有資源和平衡負載是計算機分布式計算的核心思想之一。 實際上,網格計算就是分布式計算的一種。如果我們說某項工作是分布式的,那麼,參與這項工作的一定不只是一台計算機,而是一個計算機網路,顯然這種「螞蟻搬山」的方式將具有很強的數據處理能力。網格計算的實質就是組合與共享資源並確保系統安全。 ENGLISH: What is Distributed Computing? ( http://www.distributedcomputing.info ) Distributed computing is a science which solves a large problem by giving small parts of the problem to many computers to solve and then combining the solutions for the parts into a solution for the problem. Recent distributed computing projects have been designed to use the computers of hundreds of thousands of volunteers all over the world, via the Internet, to look for extra-terrestrial radio signals, to look for prime numbers so large that they have more than ten million digits, and to find more effective drugs to fight the AIDS virus. These projects are so large, and require so much computing power to solve, that they would be impossible for any one computer or person to solve in a reasonable amount of time. 所謂分布式就是指數據和程序可以不位於一個伺服器上,而是分散到多個伺服器,以網路上分散分布的地理信息數據及受其影響的資料庫操作為研究對象的一種理論計算模型。分布式有利於任務在整個計算機系統上進行分配與優化,克服了傳統集中式系統會導致中心主機資源緊張與響應瓶頸的缺陷,解決了網路GIS 中存在的數據異構、數據共享、運算復雜等問題,是地理信息系統技術的一大進步。 傳統的集中式GIS 起碼對兩大類地理信息系統難以適用,需用分布式計算模型。第一類是大范圍的專業地理信息系統、專題地理信息系統或區域地理信息系統。這些信息系統的時空數據來源、類型、結構多種多樣,只有靠分布式才能實現數據資源共享和數據處理的分工合作。比如綜合市政地下管網系統,自來水、燃氣、污水的數據都分布在各自的管理機構,要對這些數據進行採集、編輯、入庫、提取、分析等計算處理就必須採用分布式,讓這些工作都在各自機構中進行,並建立各自的管理系統作為綜合系統的子系統去完成管理工作。而傳統的集中式提供不了這種工作上的必要性的分工。第二類是在一個范圍內的綜合信息管理系統。城市地理信息系統就是這種系統中一個很有代表性的例子。世界各國管理工作城市市政管理占很大比例,城市信息的分布特性及城市信息管理部門在地域上的分散性決定了多層次、多成份、多內容的城市信息必須採用分布式的處理模式。 很明顯,傳統的集中式地理信息系統不能滿足分工明確的現代社會的需求,分布式地理信息系統的進一步發展具有不可阻擋的勢頭。而且,分布式GIS 與網路GIS 、客戶/伺服器GIS計算模型、WWW計算模型的關系都很密切。分布式GIS 是實現網路GIS 的途徑,是實現NGIS的一種重要計算模型;CIS模型實際上是分布式GIS 可供採用的一種具體化計算模型;WWW模型實際上也是分布式GIS模型可採用的一種具體化模型,而且也是具有相當發展前途的分布式GIS模型。分布式 GIS 與當今主導地理信息系統發展方向的技術的緊密聯系使分布式GIS相應地成為地理信息系統的主要發展趨勢。

Ⅳ 分布式資料庫相比自建資料庫具備哪些優勢

自建資料庫:

  • 容易產生容量與性能瓶頸

    當前的硬體條件下,主流資料庫可以支持單表千萬級數據量的存儲,但是難以支撐密集的並發讀寫,存在性能瓶頸。

  • 分區分表或分庫方案限制太多

    採用分區表方案,數據不能跨實例存儲,擴展性和維護性較差。

    採用分庫方案,客戶端需要自行管理各庫連接,資料庫連接管理和升級復雜,擴容遷移困難。

  • 伺服器成本高昂

    普通X86伺服器支撐能力有限,品牌廠商的伺服器價格高昂,通過增加硬體規格來提升並發性能的成本太高,且能到達的性能高度有限。

在分布式資料庫面前,上面這些都不是問題,有很長廠商都已經把分布式資料庫做的不錯了,如阿里雲,華為雲等。

如下以我熟悉的華為雲分布式資料庫中間件DDM為例為你介紹下,如果感興趣可以去官網了解一下,現在好像還有試用活動:華為雲分布式資料庫中間件DDM

分布式資料庫:

  • 數據分布存儲

    DDM採用水平拆分方式,將數據記錄數龐大的單表,按指定的拆分規則,分布式存儲到各個分片中。同時DDM提供路由分發功能,應用服務無需考慮數據該寫入哪個分片,該從哪個分片讀取。

  • 讀寫分離

    用戶可以根據數據讀取壓力負載情況,為每個RDS實例配置一個或者多個只讀實例,提高查詢並發性能。

  • 高性能

    在實際業務訪問中,SQL主要的性能瓶頸集中在物理資料庫節點上。

    DDM實例關聯多個RDS節點,減少單個RDS存儲的數據量,同時實現並行計算,支持PB級數據量訪問,以及百萬級高並發。

  • 在線平滑擴容

    DDM在不中斷業務的情況下,支持新增RDS實例,水平擴容存儲空間。一鍵式擴容,輕松解決單機資料庫的容量瓶頸。

Ⅵ GreenPlum和Hadoop什麼關系

GreenPlum採取的是PostgreSql框架,是PostgreSql系的重要應用。從這個角度上可以知道GreenPlum是關系型資料庫。
Hadoop框架是一種分布式的平台設計理念。它本身不是資料庫。其中Impala可以認為是一種非關系型的資料庫,
Hive相當於SQL。
分布式,是多個方面的,最主要是存儲方面。GreenPlum的分布式主要體現在多個機器文件存儲,授權等方面。而Hadoop的文件管理方面,也是分布式的,因為只有分布式的部署才能最大效力的發回Hadoop的功能。
因此可以認為GreenPlum和Hadoop沒有直接關系。

Ⅶ 使用分布式資料庫有什麼優勢

華為雲、阿里雲、騰訊雲都推出了分布式資料庫服務。

  • 無限擴容

    自動水平拆分。

    支持字元串、數字、日期等多種拆緯度。

    業務不中斷平滑擴容。

  • 性能卓越

    性能通過水平擴展可線性提升。

  • 簡單易用

    兼容MYSQL 協議、語法、客戶端。

    輕松數據導入,資料庫上雲。

    一鍵實現資料庫擴容。

    業務零代碼改動,實現讀寫分離。

  • 快速部署

    可在線快速部署實例,節省采購、部署、配置等自建資料庫工作,縮短項目周期,幫助業務快速上線。

  • 低成本

    穩定的產品,完善的運維和技術支持,相比開源產品總體性價比更高;多種實例規格配置覆蓋不同業務規模場景,按需購買。

  • 單機資料庫的現狀與困境

    隨著互聯網飛速發展,企業數據越來越龐大,應用對性能要求也越來越高。單機資料庫對大批量數據的處理存在一定的局限性:

  • 單機資料庫容易產生容量與性能瓶頸

    當前的硬體條件下,主流資料庫可以支持單表千萬級數據量的存儲,但是難以支撐密集的並發讀寫,存在性能瓶頸。

  • 傳統的分區分表或分庫方案限制太多

    採用分區表方案,數據不能跨實例存儲,擴展性和維護性較差。

    採用分庫方案,客戶端需要自行管理各庫連接,資料庫連接管理和升級復雜,擴容遷移困難。

  • 單機資料庫伺服器成本高昂

    普通X86伺服器支撐能力有限,品牌廠商的伺服器價格高昂,通過增加硬體規格來提升並發性能的成本太高,且能到達的性能高度有限。

  • DDM輕松應對海量數據與高並發

    DDM解決了單機關系型資料庫對硬體依賴性強、擴展能力有限、數據量增大後擴容困難、資料庫響應變慢等難題,通過分布式集群架構方案實現了「平滑擴容」,擴容過程中保持業務不中斷。

  • 數據分布存儲

    DDM採用水平拆分方式,將數據記錄數龐大的單表,按指定的拆分規則,分布式存儲到各個分片中。同時DDM提供路由分發功能,應用服務無需考慮數據該寫入哪個分片,該從哪個分片讀取。

  • 讀寫分離

    用戶可以根據數據讀取壓力負載情況,為每個RDS實例配置一個或者多個只讀實例,提高查詢並發性能。

  • 高性能

    在實際業務訪問中,SQL主要的性能瓶頸集中在物理資料庫節點上。

    DDM實例關聯多個RDS節點,減少單個RDS存儲的數據量,同時實現並行計算,支持PB級數據量訪問,以及百萬級高並發。

  • 在線平滑擴容

    DDM在不中斷業務的情況下,支持新增RDS實例,水平擴容存儲空間。一鍵式擴容,輕松解決單機資料庫的容量瓶頸。

Ⅷ 分布式資料庫與資料庫集群的區別到底是什麼哪位高手幫忙解惑下~~~~~~~~~~跪求

(1)另外一位博主的觀點(http://blog.csdn.net/bluishglc/article/details/5483162)

博主有對他的表述有作一點修改補充,方便各位猿友明了他的意思。

簡單說,分布式是以縮短單個任務的執行時間來提升效率的,而集群則是通過提高單位時間內執行的任務數來提升效率。

例如:

如果一個任務由10個子任務組成,每個子任務單獨執行需1小時,則在一台伺服器上執行改任務需10小時。

採用分布式方案,提供10台伺服器,每台伺服器只負責處理一個子任務,不考慮子任務間的依賴關系,執行完這個任務只需一個小時。(這種工作模式的一個典型代表就是Hadoop的Map/Rece分布式計算模型)

而採用集群方案,同樣提供10台伺服器,每台伺服器都能獨立處理這個任務。假設有10個任務同時到達,10個伺服器將同時工作,10小後,10個任務同時完成,這樣,整身來看,還是平均1小時完成一個任務!(注意這里的任務和子任務的區別)

(2)知乎(https://www.hu.com/question/20004877)

這個猿友描述得很簡單明了:

分布式:一個業務分拆多個子業務,部署在不同的伺服器上
集群:同一個業務,部署在多個伺服器上

另外一位猿友從另外一個角度去表述:

集群是個物理形態,分布式是個工作方式。

這位猿友的描述也很簡潔,但是比較抽象:

按照我的理解,集群是解決高可用的,而分布式是解決高性能、高並發的

(3)網路(http://ke..com/view/4804677.htm、http://ke..com/view/3022776.htm)

集群:

集群是一組相互獨立的、通過高速網路互聯的計算機,它們構成了一個組,並以單一系統的模式加以管理。一個客戶與集群相互作用時,集群像是一個獨立的伺服器。集群配置是用於提高可用性和可縮放性。

分布式:

一種基於網路的計算機處理技術,與集中式相對應。由於個人計算機的性能得到極大的提高及其使用的普及,使處理能力分布到網路上的所有計算機成為可能。分布式計算是和集中式計算相對立的概念,分布式計算的數據可以分布在很大區域。

看完這些是不是有種似懂非懂的感覺?博主也是一樣!所以我們接下來繼續了解。

上面博主有說過自己有接觸過分布式服務框架Dubbo,那麼我們看看它為什麼說自己是分布式服務架構?(http://bbo.io/User+Guide-zh.htm#UserGuide-zh-%E8%83%8C%E6%99%AF)

分布式服務架構

當垂直應用越來越多,應用之間交互不可避免,將核心業務抽取出來,作為獨立的服務,逐漸形成穩定的服務中心,使前端應用能更快速的響應多變的市場需求。
此時,用於提高業務復用及整合的 分布式服務框架(RPC) 是關鍵。

偶然之間,有發現據說「Git就是分布式版本控制系統」,為什麼它是分布式的呢?

Git就是分布式版本控制系統,對應的是集中式的版本控制如SVN。簡單的說,分布式的版本控制就是每個人都可以創建一個獨立的代碼倉庫用於管理,各種版本控制的操作都可以在本地完成。每個人修改的代碼都可以推送合並到另外一個代碼倉庫中。而像SVN這樣,只有一個中央控制,所有的開發人員都必須依賴於這個代碼倉庫。每次版本控制的操作也必須鏈接到伺服器才能完成。很多公司喜歡用集中式的版本控制是為了更好的控制代碼。如果個人開發,就可以選擇Git這種分布式的。

從一般開發者的角度來看,git有以下功能:

1、從伺服器上克隆完整的Git倉庫(包括代碼和版本信息)到單機上。
2、在自己的機器上根據不同的開發目的,創建分支,修改代碼。
3、在單機上自己創建的分支上提交代碼。
4、在單機上合並分支。
5、把伺服器上最新版的代碼fetch下來,然後跟自己的主分支合並。
6、生成補丁(patch),把補丁發送給主開發者。
7、看主開發者的反饋,如果主開發者發現兩個一般開發者之間有沖突(他們之間可以合作解決的沖突),就會要求他們先解決沖突,然後再由其中一個人提交。如果主開發者可以自己解決,或者沒有沖突,就通過。
8、一般開發者之間解決沖突的方法,開發者之間可以使用pull 命令解決沖突,解決完沖突之後再向主開發者提交補丁。

看了分布式服務框架Dubbo和分布式版本控制系統Git的這些描述後,細想一下,似乎和上面的「分布式:一個業務分拆多個子業務,部署在不同的伺服器上,集群:同一個業務,部署在多個伺服器上」的觀點些相似。

Dubbo將核心業務抽取出來,作為獨立的服務模塊,各個模塊之間只需要依賴介面,介面實現分離,那麼開發人員可以各自完成自己負責的服務模塊,最後完成一個完整的系統。他們的目標是完成一個系統,而各個子服務模塊相當於子業務。Git也類似。

事實上,分布式很多時候都開不了集群的,在Dubbo、Hadoop、Elasticsearch都有體現。

現在分布式概念可能我們相對比較清晰了,集群概念可能還比較模糊。另外,集群是如何跟分布式配合的呢,接下來我們繼續了解集群。

集群主要分成三大類 (高可用集群, 負載均衡集群,科學計算集群)

高可用集群( High Availability Cluster)
負載均衡集群(Load Balance Cluster)
科學計算集群(High Performance Computing Cluster)

1、高可用集群(High Availability Cluster)

常見的就是2個節點做成的HA集群,有很多通俗的不科學的名稱,比如」雙機熱備」, 「雙機互備」, 「雙機」。

高可用集群解決的是保障用戶的應用程序持續對外提供服務的能力。 (請注意高可用集群既不是用來保護業務數據的,保護的是用戶的業務程序對外不間斷提供服務,把因軟體/硬體/人為造成的故障對業務的影響降低到最小程度)。

2、負載均衡集群(Load Balance Cluster)

負載均衡系統:集群中所有的節點都處於活動狀態,它們分攤系統的工作負載。一般Web伺服器集群、資料庫集群和應用伺服器集群都屬於這種類型。

負載均衡集群一般用於相應網路請求的網頁伺服器,資料庫伺服器。這種集群可以在接到請求時,檢查接受請求較少,不繁忙的伺服器,並把請求轉到這些伺服器上。從檢查其他伺服器狀態這一點上看,負載均衡和容錯集群很接近,不同之處是數量上更多。

3、科學計算集群(High Performance Computing Cluster)

高性能計算(High Perfermance Computing)集群,簡稱HPC集群。這類集群致力於提供單個計算機所不能提供的強大的計算能力。

高性能計算分類:

3.1、高吞吐計算(High-throughput Computing)

有一類高性能計算,可以把它分成若干可以並行的子任務,而且各個子任務彼此間沒有什麼關聯。象在家搜尋外星人( SETI@HOME – Search for Extraterrestrial Intelligence at Home )就是這一類型應用。

這一項目是利用Internet上的閑置的計算資源來搜尋外星人。SETI項目的伺服器將一組數據和數據模式發給Internet上參加SETI的計算節點,計算節點在給定的數據上用給定的模式進行搜索,然後將搜索的結果發給伺服器。伺服器負責將從各個計算節點返回的數據匯集成完整的 數據。因為這種類型應用的一個共同特徵是在海量數據上搜索某些模式,所以把這類計算稱為高吞吐計算。

所謂的Internet計算都屬於這一類。按照 Flynn的分類,高吞吐計算屬於SIMD(Single Instruction/Multiple Data)的范疇。

3.2、分布計算(Distributed Computing)

另一類計算剛好和高吞吐計算相反,它們雖然可以給分成若干並行的子任務,但是子任務間聯系很緊密,需要大量的數據交換。按照Flynn的分類,分布式的高性能計算屬於MIMD(Multiple Instruction/Multiple Data)的范疇。

下面說說這幾種集群的應用場景:

高可用集群這里不多作說明。

想Dubbo是比較偏向於負載均衡集群,用過的猿友應該知道(不知道的可以自行了解一下),Dubbo同一個服務是可以有多個提供者的,當一個消費者過來,它要消費那個提供者,這里是有負載均衡機制在裡面的。

搜索引擎Elasticsearch比較偏向於科學計算集群的分布計算。

而到這里,可能不少猿友都知道,集群的一些術語:集群容錯、負載均衡。

我們以Dubbo為例:

集群容錯(http://bbo.io/User+Guide-zh.htm#UserGuide-zh-%E9%9B%86%E7%BE%A4%E5%AE%B9%E9%94%99)

Dubbo提供了這些容錯策略:

集群容錯模式:
可以自行擴展集群容錯策略,參見:集群擴展

Failover Cluster
失敗自動切換,當出現失敗,重試其它伺服器。(預設)
通常用於讀操作,但重試會帶來更長延遲。
可通過retries="2"來設置重試次數(不含第一次)。

Failfast Cluster
快速失敗,只發起一次調用,失敗立即報錯。
通常用於非冪等性的寫操作,比如新增記錄。

Failsafe Cluster
失敗安全,出現異常時,直接忽略。
通常用於寫入審計日誌等操作。

Failback Cluster
失敗自動恢復,後台記錄失敗請求,定時重發。
通常用於消息通知操作。

Forking Cluster
並行調用多個伺服器,只要一個成功即返回。
通常用於實時性要求較高的讀操作,但需要浪費更多服務資源。
可通過forks="2"來設置最大並行數。

Broadcast Cluster
廣播調用所有提供者,逐個調用,任意一台報錯則報錯。(2.1.0開始支持)
通常用於通知所有提供者更新緩存或日誌等本地資源信息。

負載均衡(http://bbo.io/User+Guide-zh.htm#UserGuide-zh-%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1)

Dubbo提供了這些負載均衡策略:

Random LoadBalance
隨機,按權重設置隨機概率。
在一個截面上碰撞的概率高,但調用量越大分布越均勻,而且按概率使用權重後也比較均勻,有利於動態調整提供者權重。

RoundRobin LoadBalance
輪循,按公約後的權重設置輪循比率。
存在慢的提供者累積請求問題,比如:第二台機器很慢,但沒掛,當請求調到第二台時就卡在那,久而久之,所有請求都卡在調到第二台上。

LeastActive LoadBalance
最少活躍調用數,相同活躍數的隨機,活躍數指調用前後計數差。
使慢的提供者收到更少請求,因為越慢的提供者的調用前後計數差會越大。

ConsistentHash LoadBalance
一致性Hash,相同參數的請求總是發到同一提供者。
當某一台提供者掛時,原本發往該提供者的請求,基於虛擬節點,平攤到其它提供者,不會引起劇烈變動。
演算法參見:http://en.wikipedia.org/wiki/Consistent_hashing。
預設只對第一個參數Hash,如果要修改,請配置<bbo:parameter key="hash.arguments" value="0,1" />
預設用160份虛擬節點,如果要修改,請配置<bbo:parameter key="hash.nodes" value="320" />

還有比較好奇它們是怎麼通信的?

像早期版本的Elasticsearch的話,自動發現節點機制,ES是一個基於p2p的系統,它先通過廣播尋找存在的節點,再通過多播協議來進行節點之間的通信,同時也支持點對點的交互。

而Dubbo是有個注冊中心,它支持多個注冊中心,但是推薦使用ZooKeeper。關於ZooKeeper可以自行了解,很多集群相關的框架都有使用到它。當然像Elasticsearch是自己有相應的機制實現的。

Ⅸ 分布式資料庫與並行資料庫有什麼區別

(1) 應用目標不同。並行資料庫系統的目標是充分發揮並行計算機的優勢,利用系統中的各個處理機結點並行完成資料庫任務,提高資料庫系統的整體性能。分布式資料庫系統主要目的在於實現場地自治和數據的全局透明共享,而不要求利用網路中的各個結點來提高系統處理性能。
(2) 實現方式不同。在具體實現方法上,並行資料庫系統與分布式資料庫系統也有著較大的不同。在並行資料庫系統中,為了充分利用各個結點的處理能力,各結點間可以採用高速網路連接。結點鍵的數據傳輸代價相對較低,當某些結點處於空閑狀態時,可以將工作負載過大的結點上的部分任務通過高速網傳送給空閑結點處理,從而實現系統的負載平衡。
但是在分布式資料庫系統中,為了適應應用的需要,滿足部門分布特點的需要,各結點間一般採用區域網或廣域網相連,網路帶寬較低,顛倒點的通信開銷較大。因此,在查詢處理時一般應盡量減少結點間的數據傳輸量。
(3) 各結點的地位不同。在並行資料庫系統中,各結點是完全非獨立的,不存在全局應用和局部應用的概念,在數據處理中只能發揮協同作用,而不能有局部應用。在分布式資料庫系統中,各結點除了能通過網路協同完成全局事務外,各結點具有場地自治性,每個場地使獨立的資料庫系統。每個場地有自己的資料庫、客戶、CPU等資源,運行自己的DBMS,執行局部應用,具有高度的自治性。