国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于SQL Server Alwayson技術(shù)的負載均衡研究

2016-10-13 13:57黎其宇
移動信息 2016年4期
關(guān)鍵詞:副本可用性數(shù)據(jù)包

黎其宇

?

基于SQL Server Alwayson技術(shù)的負載均衡研究

黎其宇

民航中南空管局通信網(wǎng)絡(luò)中心,廣東 廣州 510405

在主流關(guān)系型數(shù)據(jù)庫中,Oracle有RAC群集,MySQL有HAProxy等多個負載均衡方案。雖然SQL Server 2012隆重推出了Alwayson高可用性技術(shù),但始終沒有實現(xiàn)真正意義上的負載均衡。因此,從Alwayson技術(shù)出發(fā),基本實現(xiàn)了只讀負載。

Alwayson高可用性;負載均衡;TDS協(xié)議

在這個大數(shù)據(jù)時代,需要處理的內(nèi)容越來越多,我們需要更高性能的讀寫IO來實現(xiàn)我們的業(yè)務(wù)需求。

1 Alwayson技術(shù)介紹

Alwayson是SQL Server新增的一個高可用性和災(zāi)難恢復(fù)解決方案。在Alwayson之前,SQL Server已有的高可用性方案,如數(shù)據(jù)庫鏡像、日志傳送和故障轉(zhuǎn)移群集均有各自的局限性。[1]而Alwayson則是提取了數(shù)據(jù)庫鏡像和故障轉(zhuǎn)移群集的優(yōu)點,并且有更簡化的高可用性部署。

圖1 Windows Server故障轉(zhuǎn)移群集

如圖1所示,Alwayson高可用性組允許將一組數(shù)據(jù)庫同步到最多4個副本節(jié)點,在最新的SQL Server 2014則支持8個副本節(jié)點。每組可用性數(shù)據(jù)庫都由一個“可用性副本”承載。有兩種類型的可用性副本,分別為“主副本”和“輔助副本”。[2]前者用于承載主數(shù)據(jù)庫,后者則承載一組輔助數(shù)據(jù)庫并作為可用性組的潛在故障轉(zhuǎn)移目標。主副本使主數(shù)據(jù)庫可用于客戶端的讀寫連接。此外,它在稱為“數(shù)據(jù)同步”的過程中使用,在數(shù)據(jù)庫級別進行同步。主副本將每個主數(shù)據(jù)庫的事務(wù)日志記錄發(fā)送到每個輔助數(shù)據(jù)庫,然后將它們應(yīng)用到相應(yīng)的輔助數(shù)據(jù)庫。主數(shù)據(jù)庫與每個連接的輔助數(shù)據(jù)庫獨立進行數(shù)據(jù)同步。

2 該技術(shù)的負載均衡分析

Always高可用性組可以支持簡單第一副本的負載均衡,但有較多的限制。

首先要將某“可用性組”的屬性設(shè)置為:可讀輔助副本“僅讀意向”。

圖2 可用性副本

然后通過執(zhí)行sql腳本,建立read指針。在當(dāng)前的primary上為每個sqlserver instance建立[instance name=>instance tcp url]的對應(yīng)關(guān)系。再執(zhí)行相應(yīng)sql腳本,建立primary 與read only db的關(guān)系。在當(dāng)前的primary上為各個primary建立對應(yīng)的read only url 列表(有優(yōu)先級概念)。最終訪問偵聽器IP則可以實現(xiàn)主節(jié)點和第一輔助節(jié)點的讀寫分離,而且不是均衡分配。這個負載是有限制的,要求客戶端請求必須增加“ApplicationIntent=ReadOnly”連接串。為了實現(xiàn)這樣的負載,程序需先判斷出請求是否為只讀,必須修改大量的程序代碼,不利于實際應(yīng)用。

Alwayson可用性組的監(jiān)聽器Listener是可以配置只讀副本的負載,但只連接到可用的第一副本,并沒有把只讀IO均衡地分配到輔助副本上。

3 使用會話代理技術(shù)實現(xiàn)只讀負載

當(dāng) SQL Server 數(shù)據(jù)庫引擎與應(yīng)用程序通信時,它將使用稱為“表格格式數(shù)據(jù)流”(TDS)數(shù)據(jù)包的 Microsoft 通信格式來格式化通信數(shù)據(jù)。服務(wù)器為每個網(wǎng)絡(luò)協(xié)議創(chuàng)建一個稱為“TDS 端點”的 SQL Server 對象。在服務(wù)器中,TDS 端點是在 SQL Server 安裝過程中由 SQL Server 安裝的。

TDS是一種協(xié)議,一系列描述兩個計算機間如何傳輸數(shù)據(jù)的規(guī)則。[3]像別的協(xié)議一樣,它定義了傳輸信息的類型和他們傳輸?shù)捻樞?,描述了?shù)據(jù)如何流動。表格數(shù)據(jù)流協(xié)議是建立在TCP/IP Net-Library之上的,包含在TCP數(shù)據(jù)段內(nèi)。TDS用1433端口進行數(shù)據(jù)庫通信。

TDS協(xié)議位于TCP的數(shù)據(jù)段內(nèi),結(jié)構(gòu)為:IP,TCP,TDS頭,TDS的DATA段。在知道了TDS協(xié)議的數(shù)據(jù)結(jié)構(gòu)后,使用中間人會話代理的方式,建立一個中間節(jié)點服務(wù)器(暫稱為Master),捕捉客戶端發(fā)送過來的TDS數(shù)據(jù)包。當(dāng)捕捉到TDS請求數(shù)據(jù)包,截取里面的請求內(nèi)容。如果是只讀請求的話,將該數(shù)據(jù)包的主要內(nèi)容不修改,修改源地址為Master的IP,修改目標地址為只讀副本,實現(xiàn)轉(zhuǎn)發(fā)到Alwayson的只讀副本(暫稱為Slave)。這里面有兩個細節(jié),第一,如果請求內(nèi)容沒有包括Alter、Update、Insert以及Delete等關(guān)鍵字,則認為是只讀請求;第二,如果有多個Slave,則存在Slave選擇的問題,那么我們可以采取遍歷Slave的分配方式,初步平衡各個只讀副本的壓力,這個均衡算法可以進一步優(yōu)化。

Master同時還要監(jiān)聽Slave返回的響應(yīng)數(shù)據(jù)包,用修改源地址和目標地址的方式轉(zhuǎn)發(fā)響應(yīng)數(shù)據(jù)包。至此完成客戶端訪問Slave的只讀請求轉(zhuǎn)發(fā)。

同樣地,客戶端要訪問非只讀請求時,Master則將這個TDS數(shù)據(jù)包轉(zhuǎn)發(fā)到主節(jié)點(暫稱主Slave),以此實現(xiàn)只寫或讀寫請求的路由。

4 結(jié)語

綜上所述,Alwayson技術(shù)主打的亮點是數(shù)據(jù)的高可用性,并沒有實現(xiàn)真正意義的負載均衡。通過Alwayson的監(jiān)聽器,實現(xiàn)了主節(jié)點與第一輔助節(jié)點的讀寫分離,要使用此功能需修改程序,使之適應(yīng)訪問字符串的。

為了讓數(shù)據(jù)庫服務(wù)器實現(xiàn)更好的負載均衡,可以通過中間數(shù)據(jù)包代理的方式,實現(xiàn)只讀請求的負載。中間數(shù)據(jù)包代理的方式要求深入研究TDS的通信機制。

[1]宋沄劍.SQL Server 2012中的AlwaysOn嘗試[EB/OL].[2012-03-20].http://www.cnblogs.com/CareySon/archive/2012/03/20/2407719.html.

[2]McKay.Sql server Always On 讀寫分離配置方法[EB/OL].[2014-04-22].http://www.cnblogs.com/aarond/p/3679915.html.

TP311.13

A

1009-6434(2016)04-0015-01

猜你喜歡
副本可用性數(shù)據(jù)包
核電站DCS可用性測試應(yīng)用研究
二維隱蔽時間信道構(gòu)建的研究*
民用飛機飛行模擬機數(shù)據(jù)包試飛任務(wù)優(yōu)化結(jié)合方法研究
機構(gòu)知識庫網(wǎng)站可用性評價指標的計量學(xué)分析
使用卷影副本保護數(shù)據(jù)
面向流媒體基于蟻群的副本選擇算法①
C#串口高效可靠的接收方案設(shè)計
云科學(xué)工作流中任務(wù)可完成性預(yù)測方法
一種基于可用性的動態(tài)云數(shù)據(jù)副本管理機制
關(guān)于數(shù)字圖書館網(wǎng)站的可用性框架研究
中西区| 靖江市| 红桥区| 高陵县| 常宁市| 长治县| 叶城县| 汝阳县| 巴林左旗| 中方县| 神木县| 阜平县| 枣庄市| 祁东县| 南漳县| 普宁市| 石城县| 沭阳县| 探索| 雅安市| 安乡县| 宜春市| 邮箱| 桂阳县| 土默特右旗| 扬州市| 巴楚县| 钟山县| 敖汉旗| 拜城县| 鸡东县| 尼勒克县| 汝阳县| 琼海市| 台东县| 宁化县| 阳春市| 安康市| 马龙县| 清镇市| 宁远县|