這篇文章為大家帶來了關於mysql的相關知識,其中主要整理了讀寫分離基本原理的相關問題,包括了讀寫分離工作原理,讀寫分離實現方式、讀寫分離常用中間件等等內容,下面一起來看一下,希望對大家有幫助。
推薦學習:mysql影片教學
在一些大型網站在業務場景中,單一資料庫伺服器所能提供的並發量已經無法滿足業務需求,為了滿足這種情況,一般而言是透過主從同步的方式來同步數據,在此基礎上,透過讀寫分離來提升資料庫的並發和負載能力。
一般而言,業務場景下對資料庫的查詢操作遠高於增、刪和改,且讀取操作對資料庫的影響更小。因此,我們一般會設定一台資料庫伺服器作為主伺服器,主要承擔資料的增、刪和改的任務,配置3-4台資料庫伺服器為從伺服器,主要承擔資料的查詢任務。資料庫從伺服器從資料庫主伺服器同步數據,以此實現數據的一致性。
根據讀寫分離實現的層級,讀寫分離一般有兩種方式實現,透過應用程式層實現和透過中間件層實現。
透過應用程式層實作是指在網頁內部實作資料查詢語言和資料操作語言分別指向不同的MySQL主庫和從函式庫。透過應用程式層實現的MySQL讀寫分離圖解如下:
這樣做的優點是減少了部署的難度,部署安裝即用,且效能較好,缺點是當架構拓展時也要修改程式碼,難以實現自動分庫、分錶等進階操作,在一些大型應用程式場景中不是很適用。
透過中間件層實作是指在應用程式層統一將所有的SQL語句指向一個中介軟體設備,由該中介軟體設備將不同的SQL語句指向不同的資料庫伺服器進行操作。透過中間件層實現讀寫分離圖解如下:
這樣做的優點是架構設計更加靈活,對業務代碼影響較小,可移植性好,並且可以實現高級控制,但是這種架構需要專業的維運人員來維護架構。
常用的讀寫分離中間件程式有以下種:
1、cobar
阿里B2B開發的關係型分散式系統,是一款早期的中間件,後來因開發者離職而無人維護。
2、MyCAT
技術愛好者在cobar的基礎上進行了二次開發,解決了cobar的一些問題,並加入了一些新功能,目前MyCAT社群活躍度較高,也有很多公司在使用MyCAT。
3、OneProxy
Oneproxy是一款商業收費的中間件,由支付寶團隊開發,在高並發場景下十分穩定。
4、Vitess
此中間件架構複雜,且使用Vitess需要使用其所提供的API介面。
5、Kingshard
由360團隊開發,支援分庫分錶,但是在高並發情況下穩定性一般。
6、MaxScale和MySQL Route
這兩者皆為MySQL官方中介軟體。 Maxscale是Mariadb研發的,MySQL Route是現在Oracle公司為MySQL資料庫發布的中間件。
推薦學習:mysql影片教學
#以上是MySQL讀寫分離基本原理詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!