Moebius for SQL Server
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 的亮點。
轉載于:https://blog.51cto.com/shenlan/310772
總結
以上是生活随笔為你收集整理的Moebius for SQL Server的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 车辆悬架刚度计算方法
- 下一篇: 论文浏览(45) MiCT: Mixed