古詩詞大全網 - 成語故事 - 數據庫集群的介紹

數據庫集群的介紹

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

高可用集群( 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://dubbo.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://dubbo.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,如果要修改,請配置<dubbo:parameter key="hash.arguments" value="0,1" />

缺省用160份虛擬節點,如果要修改,請配置<dubbo:parameter key="hash.nodes" value="320" />