成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

基于MySQL的高可用可擴展架構該如何探討-創(chuàng)新互聯(lián)

基于MySQL的高可用可擴展架構該如何探討,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

成都創(chuàng)新互聯(lián)基于分布式IDC數(shù)據(jù)中心構建的平臺為眾多戶提供成都移動機房 四川大帶寬租用 成都機柜租用 成都服務器租用。

隨著信息量飛漲,信息的存儲成為了這個時代至關重要的一項技術。如何來保證數(shù)據(jù)存儲技術能夠適應信息量的增長速度和我們對信息的高度依賴,成為一個非常重要的課題。本文將從數(shù)據(jù)庫架構的層面,通過以開源的數(shù)據(jù)存儲軟件來構建分布式數(shù)據(jù)層的思路,期望實現(xiàn)一個低成本的高可用可擴展的數(shù)據(jù)層架構。

傳統(tǒng)數(shù)據(jù)庫架構

縱觀各傳統(tǒng)商業(yè)數(shù)據(jù)庫軟件,多以集中式架構為主,鮮有以分布式為設計理念的架構。這些傳統(tǒng)數(shù)據(jù)庫軟件的大特點就是將所有的數(shù)據(jù)都集中在一個數(shù)據(jù)庫中,依靠大型高端設備來提供高處理能力和擴展性。

集中式數(shù)據(jù)庫架構在擴展性方面主要依賴于主機和存放數(shù)據(jù)的存儲設備的擴展能力,也就是說依賴硬件本身的縱向擴展能力,很難做到較好的橫向擴展。而其可靠性也同樣是以硬件設備為依托,主要通過Share Storage的方式來實現(xiàn)。如大家所熟知的傳統(tǒng)商業(yè)數(shù)據(jù)庫代表廠商Oracle的RAC,就是一個非常典型的Share Everything 的集中式架構。

我們可以通過圖1來簡單地描繪一下傳統(tǒng)數(shù)據(jù)庫的典型架構:傳統(tǒng)架構在主機端大多通過兩臺主機共享存儲設備,平時其中一臺主機使用存儲通過數(shù)據(jù)庫軟件來管理。這樣的架構只能有一臺主機(RAC除外)上的數(shù)據(jù)庫能夠提供服務,另一臺主機只能是作為熱備冗余,不能啟動數(shù)據(jù)庫實例提供服務。所以,其處理能力就完全取決于這臺主機的大擴展能力,很難通過增加主機數(shù)量來增加處理能力。而單臺主機的擴展能力畢竟是有限的,即使是某些廠商的大型機,同樣也有其擴展限制。此外,傳統(tǒng)架構對高端設備的依賴,無疑將直接導致系統(tǒng)成本的大幅度增加,甚至可能會導致系統(tǒng)被主機和硬件廠商所“綁架”,不得不持續(xù)增加投入成本。

基于MySQL的可擴展和高可靠

MySQL作為開源數(shù)據(jù)庫的佼佼者,無論是軟件本身的設計思想,還是推崇給廣大使用者們常用的架構思路都和傳統(tǒng)的商業(yè)數(shù)據(jù)庫軟件大相徑庭。MySQL棄用了傳統(tǒng)的Share-Everything的思想,而采用了Share-Nothing的思想。MySQL的Replication實現(xiàn)機制,以及MySQL Cluster的架構設計,都體現(xiàn)了這一思想。也正因如此,給MySQL在可擴展性和高可靠性方面帶來了非常靈活的架構設計思路,也讓我們的數(shù)據(jù)庫可以擺脫對高端設備的依賴,使用上性價比高很多的PC Server。

可擴展性

在提升擴展性方面,最為常用的是通過MySQL自身的Replication功能,將同一份MySQL的數(shù)據(jù)以異步的方式同時復制到另外的一臺或多臺MySQL主機上,并讓這些MySQL主機同時對外提供查詢服務。每增加一個復制的節(jié)點,查詢處理能力也得到相應的增加,新增節(jié)點的處理能力就是整個系統(tǒng)增加的處理能力。由于MySQL Replication主要是邏輯方式,同一個集群中可有多家廠商的硬件,也可以使用不同的OS,所以可以做到完全不受任何軟/硬件平臺限制,擺脫對單一平臺的依賴。

人們可能會對MySQL Replication的功能特性不滿意,進而通過第三方開源軟件,甚至是通過解析其開源的通信協(xié)議自行開發(fā)出來的復制軟件來進行數(shù)據(jù)實時(或者異步)復制來達到 Replication完全相同甚至更好的效果。傳統(tǒng)數(shù)據(jù)庫可能也具有某項功能實現(xiàn)數(shù)據(jù)的復制,但與MySQL相比,由于只依靠數(shù)據(jù)庫本身特性來完成,在架構的靈活性和可控性方面存在一些不足。

最后,在提升擴展性方面不得不說的數(shù)據(jù)切分(橫向/縱向)的思想,同樣可以在MySQL數(shù)據(jù)庫上得到靈活的發(fā)揮,無論是以功能模塊的方式進行縱向的切分,還是以某個特定鍵(字段)的類HASH分段的方式進行橫向的切分,抑或是通過數(shù)據(jù)庫本身的Partition功能進行切分,都可以在MySQL上得到很好的實現(xiàn)。當然,無論是切分前的數(shù)據(jù)分散,還是切分后的數(shù)據(jù)路由和合并都離不開應用層的協(xié)作與配合,除非通過MySQL Cluster來實現(xiàn)。對于提升擴展性的架構,通過圖2會有一個更為直觀的展現(xiàn)。

以“Master”為核心,通過不同的方式以三條“路線”將數(shù)據(jù)復制到相應的 MySQL 集群中對外提供服務。實際的架構中,Master就是一個數(shù)據(jù)寫入點,復制出去的集群則可以對外提供相應的查詢請求。常見的Web應用系統(tǒng)中,查詢請求遠遠大于寫入請求,所以非常適合通過MySQL 數(shù)據(jù)庫使用類似的架構思想來解決實際的擴展性問題。

高可靠性

在保證高可靠性方面,同樣可以通過MySQL的 Replication 為基礎,加以應用層架構的簡單配合或一些開源的第三方HA管理軟件來設計出多種非常靈活的高可靠架構。

對于數(shù)據(jù)寫入點,可以通過MySQL的Replication功能,將兩臺MySQL主機設置成雙A的狀態(tài),并通過HA管理軟件,對MySQL的狀態(tài)檢測,來判定MySQL的狀態(tài),并對外提供供單一的服務 IP 地址,以確保在任何時候有一臺MySQL崩潰后馬上切換到另外一臺MySQL上提供服務。這樣自動的方式非常方便地讓我們的寫入點擁有高可靠性。如果我們的應用程序也可以自動判斷當一個點失效后馬上自動切換到另外一個點就更好,基本上可以做到對外部完全透明的切換,對可用性的影響之小,比現(xiàn)在一些知名廠商的專業(yè)HA管理都要好很多。

對于數(shù)據(jù)查詢點,高可靠性的實現(xiàn)就更容易了,可從雙A的兩臺Master端中的任意一臺上通過數(shù)據(jù)復制搭建多個具有完全相同數(shù)據(jù)拷貝的MySQL節(jié)點,來保證任何時刻都可以有多臺MySQL對外提供數(shù)據(jù)查詢服務。當一臺MySQL崩潰,系統(tǒng)馬上將該節(jié)點從可以服務的節(jié)點中剔除出去。通過應用架構的幫助這是非常容易做到的事情。

圖3是高可靠性實例圖。1描繪了基本架構,2、3和4分別描繪了當讀節(jié)點失效以及寫節(jié)點中的任何一個失效后的高可靠性實現(xiàn)。在高可靠性方面,除了自行控制將數(shù)據(jù)復制到多個MySQL主機上的方式之外,MySQL還提供了更為高級的方案——MySQL Cluster,一個完全的分布式數(shù)據(jù)庫集群,而且是一個非常典型的Share-Nothing的分布式數(shù)據(jù)庫架構。數(shù)據(jù)層和SQL層分離,每份數(shù)據(jù)都以兩份或更多份拷貝存放在不同的數(shù)據(jù)節(jié)點上,整個數(shù)據(jù)層的所有節(jié)點以分布式計算的思想共同處理整個數(shù)據(jù)庫的數(shù)據(jù),在保證高并發(fā)的處理能力的同時,以數(shù)據(jù)冗余的方式保證了高可靠性。

構建基于MySQL、Cache 和Search的數(shù)據(jù)層

隨著Web應用系統(tǒng)負載的增速越來越快,常讓系統(tǒng)不堪重壓,數(shù)據(jù)庫系統(tǒng)尤甚。而隨著對用戶體驗關注度的提高,響應速度和使用的便利性則成為不可避免的話題。無論如何優(yōu)化都不可能避免磁盤物理I/O的響應速度與內存中的I/O速度不匹配的問題,所以很自然地想到了通過內存Cache的方式來提高響應速度。

在使用的便利性方面最為典型的就是數(shù)據(jù)搜索。關系型數(shù)據(jù)庫的特性,決定了它很難提供類似于Google那樣的可以全文檢索的搜索系統(tǒng)。我們再次以借助“外力”的方式來完善服務,將數(shù)據(jù)庫中的數(shù)據(jù)通過利用Lucene或者Egothor等類似的搜索引擎系統(tǒng),或者是利用Sphinx之類的軟件和數(shù)據(jù)庫集成,為數(shù)據(jù)庫增加全文檢索的能力。

可以設計出一個以數(shù)據(jù)庫(My-SQL)來完成持久化和常規(guī)的數(shù)據(jù)訪問功能,以分布式內存Cache系統(tǒng)來提供對響應速度和并發(fā)能力極高的數(shù)據(jù)的訪問,以第三方或者自行研發(fā)的分布式全文搜索系統(tǒng)來提供全文檢索服務的全方位的分布式數(shù)據(jù)服務層,中間則通過應用架構的幫助實現(xiàn)一個統(tǒng)一的數(shù)據(jù)訪問層,來控制數(shù)據(jù)的讀取寫入檢索等操作,如圖4所示:讓MySQL中的數(shù)據(jù)同步(或異步)寫入到Cache和Search系統(tǒng)的實現(xiàn)方式很多,如對實時性要求不是很高,也不希望Data Proxy Layer中有太多的控制邏輯,完全可以通過隊列的方式以異步的方式實現(xiàn);如對實時性要求較高,也可以通過 Data Proxy Layer這一層應用來控制Cache和Search中的數(shù)據(jù)更新;甚至還可以通過MySQL的用戶自定義函數(shù),以Trigger的方式將數(shù)據(jù)實時地更新到Cache集群。類似的方式可以想出很多,關鍵是要根據(jù)應用場景,來選擇最合適、最簡單的方式來實現(xiàn)。

架構無所謂最好的,只有最合適的。任何架構都有其適用的場景,也有其相應的生命周期。應用場景或業(yè)務量的變化,都可能導致架構不足以應對的現(xiàn)象。引用一句電影臺詞:“出來混,遲早要還的!”

看完上述內容,你們掌握基于MySQL的高可用可擴展架構該如何探討的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注創(chuàng)新互聯(lián)-成都網站建設公司行業(yè)資訊頻道,感謝各位的閱讀!

新聞標題:基于MySQL的高可用可擴展架構該如何探討-創(chuàng)新互聯(lián)
網站地址:http://jinyejixie.com/article16/dpshgg.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供服務器托管、響應式網站、網站營銷、品牌網站制作虛擬主機、微信公眾號

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都做網站
合山市| 牡丹江市| 公安县| 利津县| 万宁市| 云浮市| 云浮市| 阳泉市| 靖边县| 海阳市| 香河县| 台山市| 武清区| 青岛市| 通渭县| 哈尔滨市| 康乐县| 文成县| 尚义县| 图们市| 盐源县| 西安市| 体育| 五大连池市| 合作市| 呼玛县| 五原县| 鄂尔多斯市| 会昌县| 海林市| 台湾省| 贵定县| 武城县| 缙云县| 乐都县| 县级市| 峡江县| 陇南市| 苍山县| 轮台县| 阳信县|