自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

大數(shù)據(jù)時代的數(shù)據(jù)庫集群技術(shù)漫談

大數(shù)據(jù)
本篇文章將對集群的概念、形式以及目前主流的數(shù)據(jù)庫集群技術(shù)進行探討。

簡介

當(dāng)今世界是一個信息化的世界,我們的生活中無論是生活、工作、學(xué)習(xí)都離不開信息系統(tǒng)的支撐。而信息系統(tǒng)的背后用于保存和處理最終結(jié)果的地方就是數(shù)據(jù)庫。因此數(shù)據(jù)庫系統(tǒng)就變得尤為重要,這意味著如果數(shù)據(jù)庫如果面臨問題,則意味著整個應(yīng)用系統(tǒng)也會面臨挑戰(zhàn),從而帶來嚴(yán)重的損失和后果。

如今“大數(shù)據(jù)”這個詞已經(jīng)變得非常流行,雖然這個概念如何落地不得而知。但可以確定的是,隨著物聯(lián)網(wǎng)、移動應(yīng)用的興起,數(shù)據(jù)量相比過去會有幾何級的提升,因此數(shù)據(jù)庫所需要解決的問題不再僅僅是記錄程序正確的處理結(jié)果,還需要解決如下挑戰(zhàn):

  • 當(dāng)數(shù)據(jù)庫性能遇到問題時,是否能夠橫向擴展,通過添加服務(wù)器的方式達到更高的吞吐量,從而充分利用現(xiàn)有的硬件實現(xiàn)更好的投資回報率。

  • 是否擁有實時同步的副本,當(dāng)數(shù)據(jù)庫面臨災(zāi)難時,可以短時間內(nèi)通過故障轉(zhuǎn)移的方式保證數(shù)據(jù)庫的可用性。此外,當(dāng)數(shù)據(jù)丟失或損壞時,能否通過所謂的實時副本(熱備)實現(xiàn)數(shù)據(jù)的零損失。

  • 數(shù)據(jù)庫的橫向擴展是否對應(yīng)用程序透明,如果數(shù)據(jù)庫的橫向擴展需要應(yīng)用程序端進行大量修改,則所帶來的后果不僅僅是高昂的開發(fā)成本,同時也會帶來很多潛在和非潛在的風(fēng)險。

面對上述挑戰(zhàn)一個顯而易見的辦法是將多個服務(wù)器組成一組集群,這樣一來就可以充分利用每一臺服務(wù)器的資源并將客戶端負(fù)載分發(fā)到不同服務(wù)器上,隨著應(yīng)用程序負(fù)載的增加,只需要將新的服務(wù)器添加到集群即可。

本篇文章將對集群的概念、形式以及目前主流的數(shù)據(jù)庫集群技術(shù)進行探討。

 

數(shù)據(jù)庫集群的形式

數(shù)據(jù)庫的集群和擴展不像應(yīng)用程序擴展那樣容易,因為從數(shù)據(jù)庫端來說,一旦涉及到了集群,往往會涉及到數(shù)據(jù)庫層面的同步,因此從是否存在數(shù)據(jù)冗余這個角度來講,我們可以從大面上把數(shù)據(jù)庫集群分為以下兩種形式:

Share-Disk架構(gòu)

Share-Disk架構(gòu)是通過多個服務(wù)器節(jié)點共享一個存儲來實現(xiàn)數(shù)據(jù)庫集群,兩臺機器最簡單的Share-Disk架構(gòu)如圖1所示。

1

圖1.簡單的Share-Disk架構(gòu)

在此基礎(chǔ)之上,Share-Disk架構(gòu)又分為單活和雙活,雙活即為集群中的每一個節(jié)點都可以同時對外提供服務(wù),而單活為集群中只有一個節(jié)點可對外提供服務(wù),集群中的其他服務(wù)器作為冗余在“活”的節(jié)點出現(xiàn)故障時接替該服務(wù)器成為對外提供服務(wù)的節(jié)點。該類架構(gòu)最典型的產(chǎn)品就是SQL Server Failover Cluster(SQL Server故障轉(zhuǎn)移集群)、NEC的EXPRESSCLUSTER、ROSE的ROSE HA。這種方式的弊端也是顯而易見的,如下:

  • 硬件資源的嚴(yán)重浪費,同一時間集群中只有一臺服務(wù)器活著,其他服務(wù)器只能作為冗余服務(wù)器。

  • 集群無法提升性能,因為只有一臺服務(wù)器可用

  • 存儲方面存在單點故障,除非在存儲層級保證高可用,通常需要昂貴的SAN存儲。

因此該類方案僅僅可以做到服務(wù)器層面的高可用,無法帶來性能的提升,也無法解決存儲單點故障的問題。因此如果不搭配其他高可用或負(fù)載均衡的技術(shù),存在的意義并不是很大。

另一類技術(shù)是Share-Disk中的雙活的技術(shù),與單活技術(shù)不同的是,雙活的技術(shù)雖然也是共享磁盤,但集群中的所有節(jié)點都可以對外提供服務(wù),典型的產(chǎn)品就是Oracle的RAC。RAC的技術(shù)性非常的高,因此需要水平比較高的人來運維系統(tǒng)。RAC設(shè)計的初衷并不是為了性能,而是為了高可用和可擴展性,如果應(yīng)用程序不是針對RAC架構(gòu)設(shè)計和開發(fā)的,則將應(yīng)用程序遷移到RAC上由于block contention (block busy waits)可能會導(dǎo)致性能的急劇下降,并且節(jié)點越多性能下降越明顯。

Share-Nothing架構(gòu)

Share-Nothing架構(gòu)又分為兩種,首先是分布式架構(gòu)。將數(shù)據(jù)庫中的數(shù)據(jù)按照某一標(biāo)準(zhǔn)分布到多臺機器中,查詢或插入時按照條件查詢或插入對應(yīng)的分區(qū)。

另一種是每一個節(jié)點完全獨立,節(jié)點之間通過網(wǎng)絡(luò)連接,通常是通過光釬等專用網(wǎng)絡(luò)。如圖2所示。

2

圖2.Share-Nothing冗余架構(gòu)

在Share-Nothing架構(gòu)中,每一個節(jié)點都擁有自己的內(nèi)存和存儲,都保留數(shù)據(jù)的完整副本。通常來說,又可以分為兩種,可以負(fù)載均衡和不可以負(fù)載均衡。

首先談?wù)劜豢韶?fù)載均衡的集群,在不可負(fù)載均衡的技術(shù)中,集群中的節(jié)點會被分為主節(jié)點和輔助節(jié)點,主節(jié)點向外提供服務(wù),輔助節(jié)點作為熱備(二階段事務(wù)提交)或暖備(不需要保證事務(wù)同步),同時有可能使得輔助節(jié)點提供只讀的服務(wù)。使用這個架構(gòu)的技術(shù)包括:SQL Server AlwaysOn,SQL Server Mirror,Oracle Data Guard這種架構(gòu)帶來的好處包括:

  • 輔助節(jié)點數(shù)據(jù)和主節(jié)點保持同步或準(zhǔn)同步,當(dāng)搭配第三方仲裁后,可以實現(xiàn)自動的故障轉(zhuǎn)移,從而實現(xiàn)了高可用

  • 輔助節(jié)點由于和主節(jié)點完全獨立且數(shù)據(jù)同步或準(zhǔn)同步,因此主節(jié)點出現(xiàn)數(shù)據(jù)損壞后,可以從輔助節(jié)點恢復(fù)數(shù)據(jù)(自動或手動)

  • 由于Share-Nothing架構(gòu)使用了本地存儲(或SAN),相較于Share-Disk架構(gòu)在慢速網(wǎng)絡(luò)時有非常大的性能優(yōu)勢

當(dāng)然,弊端也顯而易見,因為輔助節(jié)點無法對外提供服務(wù)或只能提供只讀服務(wù),因此該類集群的弊端包括:

  • 擴展能力非常有限

  • 對性能沒有提升,因為涉及到各節(jié)點的數(shù)據(jù)同步,甚至帶來性能的下降

  • 輔助節(jié)點如果可讀,雖然提升性能,但需要修改前端應(yīng)用程序,對應(yīng)用程序不透明

另一類Share-Nothing架構(gòu)中,是允許負(fù)載均衡的。所謂負(fù)載均衡就是就是將對數(shù)據(jù)庫的負(fù)載分布到集群中的多個節(jié)點上,在集群中的每一個節(jié)點都可以對外提供服務(wù),從而達到更高的吞吐量,更好的資源利用率和更低的響應(yīng)時間。前端通過代理進行調(diào)度。使用該類架構(gòu)的技術(shù)包括:MySQL上的Amoeba(架構(gòu)如圖3,摘自MySQL大師陳暢亮的博客:http://www.cnblogs.com/gaizai/archive/2012/06/12/2546755.html),MySQL上的HA Proxy(如圖4所示),格瑞趨勢在SQL Server上的Moebius集群(如圖5所示)。

3

圖3.Amoeba

5

圖4.HA Proxy

4

圖5.Moebius集群

可負(fù)載均衡的Share-Nothing架構(gòu)的好處是每臺服務(wù)器都能提供服務(wù),能充分利用現(xiàn)有資源,達到更高的吞吐量。其中Amoeba中可能會涉及到數(shù)據(jù)分片,數(shù)據(jù)分片的好處是對于海量數(shù)據(jù)的處理更加高效,但同時也引入了其他問題,比如說需要應(yīng)用程序端對應(yīng)數(shù)據(jù)分片進行調(diào)整、跨分片節(jié)點查詢的處理問題、每一個數(shù)據(jù)分片節(jié)點是否能夠承受各自業(yè)務(wù)負(fù)載的高峰問題等。該類架構(gòu)需要實施的人員水平比較高,且需要應(yīng)用層面做調(diào)整,因此更適合于互聯(lián)網(wǎng)企業(yè)。

另一類不涉及到數(shù)據(jù)分片的架構(gòu),比如一類可以使用組合方案,比如說Oracle RAC+F5。另一類是使用單個廠商提供的方案,比如說SQL Server上的Moebius。這類方案集群中的每個節(jié)點都會對外提供服務(wù),因此有如下好處:

  • 由于每一個節(jié)點都可以對外提供服務(wù),因此可以提升性能

  • 擴展性得到提升,可以通過向集群添加節(jié)點直接進行Scale-Out擴充

  • 由于前端應(yīng)用通過代理連接到集群,而集群中的每一個節(jié)點都保持完整的數(shù)據(jù)集,因此不存在分片不到位反而造成性能下降的問題,因此對應(yīng)用程序端完全透明

但相比較于MySQL的數(shù)據(jù)分片,該類方案的弊端也顯而易見,因為每一個節(jié)點都需要完整的數(shù)據(jù)集,因此需要占用更多的存儲空間。

小結(jié)

本文從一個比較高的層面談到了數(shù)據(jù)庫集群技術(shù)。從數(shù)據(jù)庫應(yīng)用層面的Share-Disk集群直到集群的***形式-能夠提供負(fù)載均衡的集群,并列舉了一些主流的商用產(chǎn)品。集群的存在意義是為了保證高可用、數(shù)據(jù)安全、擴展性以及負(fù)載均衡。如果現(xiàn)在的集群產(chǎn)品不能包含這幾個特性,而業(yè)務(wù)場景也需要,也可以將和一些現(xiàn)有的技術(shù)結(jié)合來實現(xiàn),但畢竟不是每一個人都是數(shù)據(jù)庫專家,即使給你一堆工具和材料你也做不出來iPhone,因此在系統(tǒng)設(shè)計之初就對數(shù)據(jù)庫方面的方案有所考慮會免去很多麻煩。

原文鏈接:http://www.cnblogs.com/CareySon/p/3627594.html

責(zé)任編輯:林師授 來源: 博客園
相關(guān)推薦

2014-04-23 09:54:52

大數(shù)據(jù)國產(chǎn)數(shù)據(jù)庫

2024-03-27 12:14:56

數(shù)據(jù)庫高可用GDS

2011-03-23 14:25:54

2012-05-31 15:56:23

Hadoop大數(shù)據(jù)

2013-11-18 20:35:03

南大通用數(shù)據(jù)庫大數(shù)據(jù)

2016-11-17 11:24:32

數(shù)據(jù)庫大數(shù)據(jù)

2022-12-05 11:29:14

2011-03-29 16:00:57

數(shù)據(jù)庫集群技術(shù)

2009-01-16 16:36:18

集群數(shù)據(jù)庫Oracle

2023-10-06 13:52:40

數(shù)據(jù)庫模型

2012-03-19 16:34:19

數(shù)據(jù)庫遷移

2017-10-30 11:11:03

2020-10-15 08:34:32

數(shù)據(jù)庫中間件漫談

2011-08-10 15:46:29

數(shù)據(jù)庫

2018-09-21 15:26:45

大數(shù)據(jù)管理系統(tǒng)

2015-11-18 17:00:15

醫(yī)療大數(shù)據(jù)醫(yī)療信息化

2017-02-23 10:27:59

2018-09-13 14:34:12

大數(shù)據(jù)BIG DATAVolume

2010-06-07 15:09:44

訪問MySQL數(shù)據(jù)庫

2020-04-25 21:04:09

NoSQL數(shù)據(jù)庫大數(shù)據(jù)
點贊
收藏

51CTO技術(shù)棧公眾號