標籤:負載平衡 mysql sql 資料庫 讀寫分離
讀了一些有關資料庫讀寫分離的文章,大多是官方開源的MySQL-Proxy以及其衍生項目,而末尾往往談到在實際部署時的困難重重。首先學習測試和部署的周期較長,同時在資料庫中間多加了一層代理便多了一層故障點,需要專業的營運人員來繼續開發和耐心維護,如出現問題只能把問題交給社區。在業務壓力增大後往往發現這層代理的延遲越來越高形成瓶頸。
因此我來談談NetScaler的DataStream技術。Citrix NetScaler負載平衡業內第一個也是目前唯一一個支援MySQL和MS SQL 等協議內容的產品。如果您接觸瞭解過一些HTTP層面的負載平衡再來看本文,便會驚喜的發現雖然從代碼來說HTTP協議和SQL協議完全不是一回事兒,但NetScaler最終實現了將HTTP的多重優勢技術推進至資料庫層面。
1 串連複用技術
保持每條tcp串連我們都需要消耗一定的系統資源,根據記憶體的大小,每台伺服器可以支撐的並發串連非常有限。串連複用是非常普遍的最佳化技術。
串連複用是NetScaler的核心專利,很多廠商實作類別似的功能都在向NetScaler付著專利費用。,用戶端大量的TCP串連被NetScaler接管然後依據協議內容進行複用壓縮,伺服器減輕了建立的壓力,只需要和NetScaler對話專心處理上層協議的內容響應。NetScaler將此技術擴充到了資料庫協議,對於SQL傳輸來說,複用比通常在50:1以上。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/72/F4/wKiom1XwhtuRzfvlAAJxgMuHoVQ243.jpg" title="Multiplexing1-1024x454.png" width="500" height="221" border="0" hspace="0" vspace="0" style="width:500px;height:221px;" alt="wKiom1XwhtuRzfvlAAJxgMuHoVQ243.jpg" />
http://netscaler.blog.51cto.com
2 內容交換技術(資料庫讀寫分離等)
在HTTP處理時,NetScaler可以識別利用http請求的URL等內容進行分發,而在SQL層面需要理解select,drop,insert,update等等一系列語句進行讀寫分離等操作,最基本的原理
650) this.width=650;" src="http://docs.citrix.com/content/dam/docs/en-us/legacy-edocs/netscaler-traffic-management-11-map1/Master-Slave2.png" width="640" height="480" alt="Master-Slave2.png" />
@Netscaler_Insight
配置和管理非常簡單,這裡舉個最簡單的例子
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/72/F1/wKioL1XwlIKQ_ahhAAFBDSDuRzk205.jpg" title="1.png" width="850" height="309" border="0" hspace="0" vspace="0" style="width:850px;height:309px;" alt="wKioL1XwlIKQ_ahhAAFBDSDuRzk205.jpg" />相信您已經看懂這條策略要做什麼了:mysql請求的命令包含 ”select“ 。 很簡單不是嗎?
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/72/F4/wKiom1XwlGXzcpmTAAD6GCCfKQs066.jpg" title="2.png" width="350" height="407" border="0" hspace="0" vspace="0" style="width:350px;height:407px;" alt="wKiom1XwlGXzcpmTAAD6GCCfKQs066.jpg" />
3 內容交換技術(分區)
原理同上,我們可以根據查詢的庫或表等等,查詢的內容等導向不同的資料庫伺服器
650) this.width=650;" src="http://docs.citrix.com/content/dam/docs/en-us/legacy-edocs/netscaler-traffic-management-11-map1/HowTokenLBMethodWorksWithDataStream.png" width="737" height="342" alt="HowTokenLBMethodWorksWithDataStream.png" />
4 健康探測技術-資料庫
當後端有多台伺服器時,必須判斷後端是否線上正常。對於網站,我們可以檢查網頁的內容。而對於資料庫,我們可以發出任意的SQL語句並且依據傳回值判斷健康情況,如果值和預期的不符,不會把用戶端的請求發送到這台伺服器
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/72/F1/wKioL1XwmgjiKbVSAAEVqUIV_VU535.jpg" title="3.png" alt="wKioL1XwmgjiKbVSAAEVqUIV_VU535.jpg" />
5.安全性
NetScaler可以做多重策略來控制訪問安全並且產生詳細日誌供效能分析和審計。在請求未傳遞給後端伺服器前提前做出響應動作。
查看SQL效能日誌
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/72/F1/wKioL1XwpIqBlvGOAALBLlU4aq8105.jpg" title="20150910051900.png" width="800" height="249" border="0" hspace="0" vspace="0" style="width:800px;height:249px;" alt="wKioL1XwpIqBlvGOAALBLlU4aq8105.jpg" />
同時對於前端來說,NetScaler更是效能超高的Web Application Firewall,可以防禦SQL注入,防止資訊洩漏等等惡意攻擊
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/72/F5/wKiom1XwpuaQNHkpAAEZHmdX2MA167.jpg" title="20150910053823.png" alt="wKiom1XwpuaQNHkpAAEZHmdX2MA167.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/72/F5/wKiom1Xwr7yxoV-xAAFleQwlUM4678.jpg" title="20150910061608.png" alt="wKiom1Xwr7yxoV-xAAFleQwlUM4678.jpg" />
6.穩定性、效能和擴充性
作為應用交付的領導者,NetScaler一直以高穩定低延遲著稱。可以主備部署或者叢集部署,配置後便後顧無憂。隨著業務的增長使用license釋放裝置更高的效能或者添加新裝置橫向擴充!
本文簡述了NetScaler對於資料庫的相關技術,您可關注微博 @Netscaler_Insight 以及本部落格交流探討。 下篇blog再見!
本文出自 “NetScaler_Insight” 部落格,請務必保留此出處http://netscaler.blog.51cto.com/9136680/1693309
穩定高效的MySQL與MSSQL的串連複用/讀寫分離/Sharding-把HTTP的技術推進到資料層