主-主數據庫系統架構


常常有人問咱們,如何創建分離式網絡系統,將一組服務器放置在中國,供中國用戶使用;另外一組服務器放置在國外,供國際用戶使用。數據庫

從根本上來說,這是一個很困難的問題,沒有最佳選擇方案。有不少選擇方案,如採用Mongo數據庫或使用主-主複製(即主機-主機複製),表面看起來很管用,可是會遇到不少幾乎沒法解決的實際問題,其實,這些方案根本就不能採用。服務器

現今,咱們尚未最鐘意的解決方案,不少時候,咱們惟一的選擇就是將一套獨立的系統放置在中間地理位置,如香港或東京的AWS,咱們的用意在於,能夠確保到中國大陸及港澳臺地區以及到世界的其它國家和地區的鏈接基本可靠,固然,在中國,鏈接性能因地理位置不一樣而有所差別。網絡

一個新的選擇方案即是採用Tungsten Replicator, 它是一種數據庫複製管理系統,最近,人們正在努力地開發此係統。它是開源的/商業性的,由Continuent研製的,可經過www.continuent.com, 獲取詳細信息。咱們還未採用該系統,可是也許很快將會採用。ide

最近,咱們也在考慮採用雙重數據庫,雙重主-從系統(即主機-從機系統)在某些狀況下很是實用,尤爲適用於兩個分離式的系統或在地理位置上是分離式的系統。例如,在電子商務或是交易類系統中,一方是上傳產品和庫存信息,而另外一方是發出採購需求。關鍵是可以在兩方實現完全的讀/寫分離,或至少在兩個數據庫之間實現完全的讀/寫分離。性能

基本理念就是:採用兩組服務器,一組在中國大陸,另外一組在香港,即一組服務器稱做SA,另外一組稱做SB。在每臺服務器上,安裝兩組徹底獨立的MySQL實例(嗯,都採用相同的二進制,可是採用兩組不一樣的配置、不一樣的數據目錄結構及不一樣的init腳本)。咱們將這些實例稱做IA 和IB, 有各自的獨立的生產數據庫,稱做DBA 和DBB。 這一構想就是:大陸服務器SA 將成爲DBA主機及DBB從機,而香港服務器將成爲DBA從機及DBB主機。儘管兩組服務器偵聽端口號等各不相同,可是卻進行正常的互相複製工做。spa

而後,在大陸,應用程序的不少工做在DBA上實現,僅在DBB上進行讀操做。而在香港,服務器的不少工做將經過DBB實現,在DBA上僅實現讀操做。blog

由於複製工做是服務器層面上的事情,沒必要在每一個數據庫上進行,因此,爲確保進行合理的分離式控制及數據庫複製,您將須要採用兩個實例。開發

這事並不簡單,可是若是您可以實現讀/寫分離,即分別在本地主機上實現寫操做,在本地從機上實現讀操做,那麼您的系統會很健壯。若是您可以作到這些,您還須要謹慎的一點是:在全球範圍內在兩個地理位置創建雙重系統,這些系統必須具備良好的性能且實現可靠的數據傳輸。get


(Authored by Steve Mushero / ChinaNetCloud CEO & CTO  本博客英文原文請點此查看
博客

相關文章
相關標籤/搜索