Moebius集群
http://www.grqsh.com/solution.asp
高效可持續發展的架構
???? 伴隨著企業的發展,企業的數據量和訪問量也會迅猛增加(如一些電子商務企業或網站),而這個時候數據庫就會面臨很大的負載和壓力,意味著數據庫會成為提升整個信息系統的瓶頸,這個時候大家常常會有兩種解決的辦法:
???? 向上擴展:向單一節點添加硬件設備或將其升級為一個大型節點。
???? 向外擴展:添加更多節點并將數據及工作負載分布于這些節點當中。
???? ????????????????????
傳統集群擴展的思路
???? 微軟所提供的集群解決方案基本上都是采用向上擴展的思路,在實際使用中表現出如下特性:
?????? 1.升級到綜合性能更強大的硬件,帶來的問題是硬件的浪費,一次性的投資增加。
???? 2.單節點體系結構最終會達到一個瓶頸并無法實現進一步的有效擴展。具體表現為逐漸縮小的回報率或 ????? ?? 者價格驚人的昂貴硬件設備。系統得不到可持續的擴展,不能從根本上解決問題。
???? 微軟以其簡單易用等優點占據了很大一部分客戶,但是同時也不得不面臨這樣尷尬的局面:用戶在實際中遇到這樣的問題時,沒有合適的集群方案解決,好多用戶就面臨著要移植到其他平臺上,如Oracle,采用RAC來解決。大家都知道,這將是一個即費財力、物力、人力,同時還要面臨很大風險的一個艱難過程。但是又不得不走這條路,沒有辦法。
Moebius的解決思路
???? Moebius For SQL Server就是在這樣背景誕生的,集群采用“向外擴展”的思路,它的出現解決了SQL Server數據庫應用中面臨的一個重要問題:高性能、高可伸縮性與低價格之間的矛盾。
???? 很多企業在開始創建的時候往往忽略了企業數據庫的長遠規劃,如果選用傳統的路線一邊走一邊更換性能更高的服務器,淘汰以前的服務器,這樣做不但不能從根本上解決由于訪問用戶增加所導致的數據庫壓力增大的問題,反而會走很多的彎路,給企業帶來極大的損失和浪費。
???? 格瑞趨勢可以為您提供了系統從小發展到大平滑過渡的一整套完整解決方案。使您的數據庫系統達到可持續發展,為您解決了后顧之憂。在需要更高數據庫處理速度的時候,只需簡單增加數據庫服務器就可以了,而且這些服務器的性能可以要求不一致,系統會按照服務器的能力自動分配壓力。
?????????????
???????????????????????????????
http://www.grqsh.com/solution_01.asp
Moebius集群解決方案
???? 在數據庫上采用向外擴展的架構并不是沒有難度的,如何在數據庫上構建負載均衡集群,如何用低消耗保證集群中各節點數據的實時同步?能否解決這一個問題成為集群應用成功的關鍵。
???? Moebius 核心理念和價值恰恰就在此處,核心程序宿主在SQL Server內部,監測數據的變化,同時還要解析引起數據變化的SQL語句的類型及其特點,經智能分析后,以最經濟的方式完成與其他節點的數據同步。
解決方案一:
???? 如果您正在使用或者將要安裝使用SQL Server Cluster 、SQL Server2005 Mirror或第三方的HA集群軟件實現失敗轉移,保證數據庫的可用性。推薦您閱讀解決方案一。
SQL Server Cluster
???? 相對于單點來說Microsoft Cluster Server(MSCS)是一個可以提升可用性的技術,Microsoft稱之為故障轉移集群。
?????
???? 從硬件連接上看,很像Oracle的RAC,兩個節點,通過網絡連接,共享磁盤;事實上SQL Server數據庫只運行在一個節點上,當出現故障時,另一個節點只是作為這個節點的備份:
??? 1. 因為始終只有一個節點在運行,在性能上也得不到提升,系統也就不具備擴展的能力。
????2. 當現有的機器不能滿足應用的負載時只能更換更高配置的機器。
????3. 對于一個小型的應用來說,使用一個共享設備和一個在正常情況下用不到的機器,
???????? 總體成本的浪費還是很嚴重的。
????從細節上講,當一個節點出現故障的時候,另一個節點接管業務又是需要一定的步驟和時間。
SQL Server2005 Mirror
???? 鏡像是SQL Server 2005中的一個主要特點,目的是為了提高可用性。每個數據庫鏡像配置均包含一個主體服務器(包含主體數據庫)、一個鏡像服務器(包含鏡像數據庫)和一個見證服務器(可選)。主體服務器和鏡像服務器要求是獨立的服務器實例。見證服務器監視主體服務器和鏡像服務器,確保在給定的時間內這兩個故障轉移服務器中有且只有一個作為主體服務器,從而支持自動故障轉移。
?????
???? SQL Server2005 Mirror在可用性方面有了一些保證,但仍然是單點工作;在擴展和性能的提升上依舊沒有什么幫助。
Moebius集群解決方案:
???? 采用Moebius For SQL Server 標準版搭建集群,集群中兩個數據庫是同等地位的,中間件駐留在每個機器的數據庫中,監測數據庫內數據的變化并將變化的數據同步到其他數據庫中。數據同步完成后客戶端才會得到響應,同步過程是并發完成的,同步到多個數據庫和同步到一個數據庫的時間基本相等;另外同步的過程是在事務的環境下完成的,保證了多份數據在任何時刻數據的一致性。
?????
???? 該方案能給您帶來以下的益處:
??? 1.在SQL Server Cluster中閑置的那臺機器被利用上了,不僅能失敗轉移還能負載均衡,提高了性能。
??? 2.使用無共享磁盤架構,數據存儲在每臺機器的硬盤中,因此可以節省投資。
??? 3.無共享磁盤架構在日常的維護以及故障時的修復等管理成本比SQL Server Cluster要低。
??? 4.可持續發展的架構,方便擴展,隨著系統壓力的增長只需要添加進新的機器就可以了,不需要升級現
???????有系統的硬件配置,不需要改動應用程序。
解決方案二:
???? 如果您現在使用的是基于 SQL Server復制/訂閱的方案。推薦您閱讀解決方案二。
?? ? 如圖,所有的寫操作都提交到中心數據庫上,然后通過 SQL Server 的復制/訂閱功能把數據復制到其
他幾個只讀的數據庫中,這樣可以做到讀寫的分離,并且讀可以做到負載均衡。
???????
???? SQL Server復制/訂閱對于性能的提升還是很大的,但是在實際應用中存在以下不足:
? ?? 1. 數據同步的實時性得不到保障,中心數據庫在正常的壓力下10秒左右。當訪問負荷很高或者中心數
????????? 據庫在整理數據時,將出現大量DML操作時延遲時間比較長或者出現堵塞的情況;
???? 2. 某些修改操作需要重新建立復制關系并初始化,這期間需要停止數據庫的讀取服務,規模越大的應
????????? 用停止的時間越長,嚴重影響了數據庫的可用性。 另外中心數據庫所采用的結構還是MSCS,只是提
????????? 供了一種故障轉移的機制,當有一個節點出現問題后把負載轉移到另一個節點上;
???? 3. 復制/訂閱的管理維護的成本比較高。
Moebius集群解決方案:
????? 采用Moebius企業版搭建橫向多節點的集群(若數據量大也可采用Moebius高級版搭建網格分布式數據集群), 這種冗余的結構不但保證了數據庫的可用性,而且可以提供高性能,隨著壓力的增加,只需增加節點就可以保證系統的服務。
??? ?1.操作是并發的,整個操作的響應時間和更新一個數據庫的響應時間基本相同;
??? ?2.數據同步是基于SQL語句的,在同步的過程中,中間件會智能的分析,采用數據壓縮等手段來減少
???????? 網絡的消耗。
??? ?3.整個操作是在事務的環境下完成的,是一個同步的過程,保障了多個數據庫中的數據是一致的、
???????? 實時的。
???? Moebius應用程序讀取數據時,可以任意從多個數據庫中的一個中查找,進而很容易實現集群各節點間負載均衡。
?????
該方案能給您帶來以下的益處:
??? 1.解決了數據實時性的問題。
??? 2.在復制/訂閱結構中的中心數據庫Cluster中閑置的一臺機器被利用起來提高了整個系統的使用率。
??? 3.節省了維護復制/訂閱的管理成本。
??? 4.系統支持無共享的架構,數據可以存儲在各自機器自己的硬盤中,因此可以節省下共享的存儲設備。
??? 5.數據庫結構修改時不需要重新初始化復制/訂閱,提高了數據庫的可用性。
??? 6.當系統出現性能問題時,只需簡單增加節點就可以,方便擴展。
解決方案三:
???? 如果您的數據庫規模很大, 正在考慮使用分區表,分區視圖或者自己拆分業務邏輯做一些庫表散列,推薦您閱讀解決方案三。
分區表
???? SQL Server 2005引入的分區表技術,讓用戶能夠把數據分散存放到不同的物理磁盤中,提高這些磁盤的并行處理能力,達到優化查詢性能的目的。但是分區表只能把數據分散到同一機器的不同磁盤中,也就是還是依賴于一個機器,不能從根本上解決問題。理想的解決辦法是把數據分散到不同的機器中,通過多個機器上的CPU,I/O的并行處理來提高性能。
分布式分區視圖
???? 分布式分區視圖允許用戶將大型表中的數據分散到不同機器的數據庫上,用戶不需要知道直接訪問哪個基礎表而是通過視圖訪問數據,在開發上有一定的透明性。但是并沒有簡化分區數據集的管理、設計。用戶使用分區視圖時,必須單獨創建、管理每個基礎表(在其中定義視圖的表),而且必須單獨為每個表管理數據完整性約束,管理工作變得非常復雜。而且還有一些限制,比如不能使用自增列,不能有大數據對象。另外經過實際測試,對于符合分區規則的查詢性能還可以,對于全局查詢并不像我們預期的那樣,是并行計算,有時還不如不分區的響應快。
庫表散列
???? 一些大公司也在自己開發基于庫表散列的數據庫架構,比如My Space經過數次數據庫升級,最終采用按照用戶進行的庫表散列,微軟為MSN/Hotmail和納斯達克開發的數據依賴型路由(Data-Dependent Routing,DDR)。但是這些都是基于自己業務邏輯進行的,沒有一個通用的實現。客戶在實際應用中要投入很大的研發成本,面臨很大的風險。
Moebius集群解決方案:
???? 采用Moebius高級版搭建網格分布式數據庫集群,利用一群廉價的PC服務器,構建綜合性能超強的數據庫集群,集群充分發揮每個機器的CPU、IO等資源。
???????
???????
該方案能給您帶來以下的益處:
??? 1.通過分區把數據放到不同的機器中,每次查詢可以由多個機器上的CPU,I/O來共同負載,通過各節點并
??????? 行處理數據來提高性能。
??? 2.冗余的數據結構(矩陣列)消除了單點故障,任何一個機器出現故障后都不會影響系統的正常
??????? 運行,數據庫集群能提供不中斷的服務。
??? 3.無共享磁盤架構節省了硬件,利用中小型的服務器取代大型服務器大幅降低了硬件的成本。
??? 4.系統中不再有閑置的資源,降低了系統TCO(總體擁有成本)。
??? 5.分區把數據分成更小的部分提高了數據庫的可用性和可管理性。
??? 6.根據業務的需要,訪問層和數據層都可以增加,Moebius集群具有良好的擴展性。
??? 7.中間件宿主在數據庫中的創新使集群變得更透明,數據庫的管理成本,以及面向數據庫的開發成本都
??????? 最小化。
?
http://www.grqsh.com/soft_03.asp
Moebius集群的架構
Moebius集群采用無共享磁盤架構
??? Moebius集群由一組數據庫服務器組成,每個服務器上安裝相同的數據庫,集群支持無共享磁盤架構,各機器可以不連接一個共享設備,數據可以存儲在每個機器自己的存儲介質中。
???????? ??????????? ?
??? 無共享磁盤架構,使得存儲不再是單點,系統可用性提高,同時還可以充分利用集群中每個機器的CPU、I/O等硬件來實現集群的高性能。
??? 無需價格高昂的共享磁盤柜,只要使用2臺服務器即可輕松構筑低成本的集群。
Moebius集群架構的分類
??? 依據數據是否分區,Moebius集群架構分為標準架構和高級架構:
??? 標準架構:每個節點中具有完全相同的數據,每個節點都擁有數據全集。
??? 高級架構:每個節點中數據是不同的,每個節點只擁有數據全集的一部分。
Moebius For SQL Server標準架構
??? Moebius集群是一組相互獨立的服務器,通過相互協作形成一個統一的整體。集群中多個節點相互連接,這樣冗余的硬件架構不但可以避免單點故障而且提供了杰出的故障恢復能力。一旦發生系統失敗,Moebius集群對用戶保證最高的可用性,保障關鍵是業務數據不丟失。
??? ?
???????????????????????????????? Moebius 集群標準架構
??? 一個集群數據庫可以看作是一個被多個應用實例訪問的單一數據庫。在Moebius集群中,每個SQL Server實例在各自的服務器上運行。隨著應用的增加,當需要添加額外的資源時,可以在不停機的情況下很容易地增加節點。
標準架構中間件工作原理
??? 中間件駐留在每個機器的數據庫中,監測數據庫內數據的變化,并將變化的數據同步到其它數據庫中。數據同步完成后客戶端才會得到響應,同步過程是并發完成的,因此同步到多個數據庫和同步到一個數據庫的時間基本相等;另外同步過程是在事務環境下完成的,保證了多份數據的數據一致性。
?????
??? 正因為中間件宿主在數據庫中,所以中間件不但能知道數據的變化,而且知道引起數據變化的SQL語句,根據SQL語句的類型智能地采取不同的數據同步策略以保證數據同步成本的最小化:
??? 1. 數據條數很少,數據內容也不大,則直接同步數據。
??? 2. 數據條數很少,但是里面包含大數據類型,比如文本,二進制數據等, 則先對數據進行壓縮然后再
??????? 同步,從而減少網絡帶寬的占用和傳輸所用的時間。
??? 3. 數據條數很多,此時中間件會獲取造成數據變化的SQL語句, 然后對SQL語句進行解析,分析其
??????? 執行計劃和執行成本,并選擇是同步數據還是同步SQL語句到其他的數據庫中。在對表結構進行調整
??????? 或者批量更改數據的時候,這種同步策略非常有用。
Moebius For SQL Server高級架構
??? 在高級架構中,采用數據分區技術,依據某種規則把數據分散到多個數據庫中。
??????
數據為什么分區?
??? 1.當數據量很大的時候,即使服務器在沒有任何壓力的情況下,某些復雜的查詢操作都會非常緩慢,影
?????? 響最終用戶的體驗。
??? 2.在大數據量下對數據庫的裝載與導出,備份與恢復,結構的調整,索引的調整等都會讓數據庫停止服
?????? 務或者高負荷運轉很長時間,影響數據庫的可用性和易管理性。
??? 3.面對這樣的應用環境,僅僅依靠提升服務器的硬件配置是起不到作用的,比較好的辦法是通過數據分
?????? 區,把數據分成更小的部分來提高數據庫的可用性和易管理性。
??? 4.分區把各部分數據放到不同的機器中,每次查詢可以由多個機器上的CPU、I/O來共同負載,通過
?????? 各節點并行處理數據來提高性能。
系統結構
Moebius For SQL Server高級架構在結構上分訪問層數據庫和數據層數據庫兩部分。
?? 訪問層:訪問層數據庫只有原來數據庫的結構沒有數據,處理提交上來的SQL語句并調度執行。訪問層數
??????????? 據庫可以由多個機器來負載均衡。
?? 數據層:數據層數據庫就是原來的數據庫,但是可以有多個冗余對查詢進行負載均衡,以提高整個系統
??????????? 的性能,Moebius For SQL Server保證多個數據庫的一致性;數據層數據庫不暴露給用戶和業
??????????? 務程序,用戶和業務程序面對的是訪問層數據庫。
???
??? 通過訪問層和數據層構建出一個網格集群來實現集群的高可用性和負載均衡,訪問層和數據層的數據庫是可以擴展的。(每列中各節點的數據是相同的,每行構成數據的全集;圖中數據數據層設計為5×2矩陣,在實際應用中要依據業務的特點來劃分)。
如何分區?
Moebius For SQL Server支持兩種分區方式:Hash分區和線性分區。
Hash分區:是將表按某一字段的值均勻地分布到若干個指定分區中的一種分區方法。
??? 優點:每個分區內分配的數據比較平均,承載的壓力也就比較平均,機器能夠得到充分的利用。
??? 缺點:不易擴展,如果擴展新的分區會涉及到數據的重新分配,因此在設計的時候要提前規劃好。
??? Moebius For SQL Server支持把多個分區數據放在一個機器上然后再根據壓力逐個的拆到新機器中去,這樣既可以保證了分區的規劃又不浪費機器,實現了線性擴展。
線性分區:即范圍分區,將表按某一字段的取值范圍進行分區,如按時間,每個月的數據在一個分區中。
??? 優點:擴展性能比較好,因為數據的增長是有一定規律的。
??? 缺點:每個分區內數據的壓力不是很平均,大部分業務都存在這種現象,越老的數據被訪問的頻率越低,從而導致各機器面臨的壓力也不同,因此使機器的利用率不高。
???? Moebius For SQL Server支持把多個分區數據放在一個機器上,所以可以通過新老分區的交替使用來提高機器的利用率。
???? 分區操作在管理工具中很容易配置,首先設置分區,接下來給每個表選擇分區并設置分區字段。(如下圖)
??????
???? 這樣中間件在解析、處理SQL語句的時候就會根據配置把數據分配到相應分區所在的機器中去或者從相應分區中讀取數據。和其他一些集群不同的是Moebius For SQL Server的分區是經過抽象的,是完全透明的。
?????
高級架構中間件工作原理
????1.中間件解析到查詢的SQL語句后,首先分析該語句要查找的表,根據所要查找表的分區配置和SQL語句的WHERE條件計算出要從一個分區中還是多個分區中去取數據,取完數據后在訪問層合并后再返回給應用程序。這里要重點說明的是中間件通過分析SQL語句,能夠對分區范圍進行動態縮小或者放大。SELECT * FROM dbo.UserInfo WHERE UserID = 1,因為UserID是分區字段,所以中間件只會從一個分區中查找;SELECT * FROM dbo.UserInfo WHERE UserID IN(3, 4)則會從兩個分區中查找;SELECT * FROM dbo.UserInfo WHERE Username = ‘wangzhongtao’,沒有使用分區字段作為查詢的條件,中間件就會從每個分區列數據庫進行查找。對于多個分區列數據進行查詢的操作是并行的從而保證總體響應時間的最小化。
??
????2.中間件解析到更新的SQL語句后,首先分析要更新的表,根據要更新表的分區配置和更新語句的SQL語法來計算出要更新一個或者多個分區中的數據。例如INSERT dbo.UserInfo(UserID, Username) VALUES(1, ‘wangzhongtao’),中間件會解析到UserID = 1,然后根據表的分區配置把數據插入到第一個分區中去。中間件解析到一個更新的SQL語句后,會同時更新同一列中的數據庫。第一:更新操作是并行的,整個操作的響應時間和更新一個數據庫的響應時間基本相同;第二:整個操作是在事務的環境下完成的,保證了多個數據庫中數據是一致的,實現了真正的冗余。
???? 3.中間件解析到一個更新數據庫結構的DDL語句,會把該語句同步到其他訪問層數據庫和所有的數據層數據庫中。這樣用戶就像在使用一個數據庫去維護表、索引、存儲過程等等,大大降低了用戶的管理成本,也降低了出錯的機率。這是Moebius For SQL Server 的亮點。
總結
- 上一篇: Visual Studio C++/C
- 下一篇: Python:50行代码实现下载小说,图