版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 MySQL中間件的負(fù)載均衡策略優(yōu)化方案目錄 TOC o 1-3 h z u HYPERLINK l _Toc520817662 一、背景 PAGEREF _Toc520817662 h 3 HYPERLINK l _Toc520817663 二、負(fù)載均衡策略及性能優(yōu)化 PAGEREF _Toc520817663 h 4 HYPERLINK l _Toc520817664 三、總結(jié) PAGEREF _Toc520817664 h 9一、背景隨著業(yè)務(wù)的爆發(fā)式增長,電商系統(tǒng)中的讀寫壓力越來越高,單節(jié)點(diǎn)MySQL實(shí)例壓力越來越大,單純升級服務(wù)器硬件已經(jīng)無法滿足生產(chǎn)環(huán)境的需要。解決讀請求壓力,需要支持
2、從庫擴(kuò)展;解決寫請求壓力,對數(shù)據(jù)分片增加多個(gè)節(jié)點(diǎn),降低單節(jié)點(diǎn)MySQL實(shí)例的壓力成了更優(yōu)的選擇。傳統(tǒng)的分片是通過DAO層進(jìn)行的,但是DAO層對數(shù)據(jù)分片存在諸多問題。從業(yè)務(wù)角度看,配置修改需要重啟服務(wù),代價(jià)巨大;需要對分片結(jié)果集進(jìn)行處理,業(yè)務(wù)邏輯愈加復(fù)雜;功能相對簡單。從數(shù)據(jù)庫運(yùn)維角度看,配置管理的統(tǒng)一化難度較大;DB的升級、遷移等操作復(fù)雜。網(wǎng)易電商同樣面臨著這些問題,為了徹底解決數(shù)據(jù)庫瓶頸,網(wǎng)易樂得團(tuán)隊(duì)在實(shí)際生產(chǎn)中研發(fā)了自己的中間件Cetus。其具有正統(tǒng)基因,基于官方MySQL-Proxy的版本進(jìn)行全面修復(fù)和再創(chuàng)新,已于不久前開源,在各個(gè)產(chǎn)品線上得到廣泛應(yīng)用,性能和穩(wěn)定性均表現(xiàn)良好。Cetus
3、兼容MySQL協(xié)議,前端應(yīng)用不用修改即可通過Cetus訪問數(shù)據(jù)庫,方便DBA運(yùn)維同學(xué)和開發(fā)同學(xué)使用,實(shí)現(xiàn)了數(shù)據(jù)庫層面的橫向擴(kuò)展。目前Cetus有讀寫分離和Sharding兩個(gè)版本,可通過編譯參數(shù)選擇適合的版本。它支持對用戶透明的多項(xiàng)功能,例如分布式事務(wù)、連接池、結(jié)果集壓縮、安全管理、狀態(tài)監(jiān)控、Tcp Stream傳輸?shù)鹊?。二、?fù)載均衡策略及性能優(yōu)化本文所討論的負(fù)載均衡,指的是讀流量的負(fù)載均衡,即讀流量如何分配到后端同一MySQL集群內(nèi)的各個(gè)DB。Cetus的負(fù)載均衡策略,主要分為兩部分:主從庫之間讀流量的負(fù)載策略;從庫之間讀流量的負(fù)載策略。具體實(shí)現(xiàn)時(shí)候,流量的分配單位與Atlas等中間件也略有
4、不同,進(jìn)行了性能優(yōu)化。下面章節(jié)將依次詳細(xì)介紹。1、主從庫之間讀流量的負(fù)載策略默認(rèn)情況下,非事務(wù)中、未通過注釋強(qiáng)制路由主庫或未使用鎖的讀流量會(huì)優(yōu)先路由到從庫,各個(gè)從庫之間負(fù)載均衡。只有當(dāng)從庫都不可用時(shí),讀流量才會(huì)路由到主庫。有些業(yè)務(wù)場景下,主庫可以分擔(dān)部分讀流量,這時(shí)就涉及到讀流量在主庫和從庫上配置負(fù)載策略了。Cetus中,可以通過配置參數(shù)read-master-percentage來指定默認(rèn)的讀流量路由到主庫的百分比,該參數(shù)的取值范圍是0, 100。該值默認(rèn)為0,即所有讀流量會(huì)優(yōu)先路由從庫,所有從庫均不可用時(shí),才會(huì)路由主庫;如果該參數(shù)設(shè)置為100時(shí),則所有讀流量都會(huì)路由到主庫;如果該值設(shè)置為(
5、0, 100)時(shí),則會(huì)按照設(shè)置的比例進(jìn)行路由。需要注意的是,該值表示的是主庫和所有從庫的比例。2、從庫之間的讀流量負(fù)載策略路由到從庫的流量會(huì)在各個(gè)從庫之間進(jìn)行負(fù)載均衡。目前Cetus各個(gè)從庫之間的讀流量負(fù)載策略僅支持輪詢(RR)方式。在流量分配方面,Cetus也進(jìn)行了優(yōu)化。一些MySQL數(shù)據(jù)庫中間件(例如Atlas)是基于SQL的維度做負(fù)載均衡的,不會(huì)考慮SQL是同一個(gè)連接還是不同連接發(fā)送來的,中間件依次將接收到的SQL按照策略發(fā)往后端的數(shù)據(jù)庫。在實(shí)際使用中發(fā)現(xiàn),長連接的場景下,該策略會(huì)造成大量的連接切換,從而導(dǎo)致session級變量的頻繁調(diào)整,影響SQL執(zhí)行效率。因此,Cetus對其進(jìn)行了優(yōu)
6、化,并非完全按照SQL的維度做負(fù)載均衡。Cetus考慮了同一個(gè)連接連續(xù)發(fā)送SQL請求的情況,不會(huì)立即將當(dāng)前SQL使用完的Cetus與MySQL的連接放回連接池復(fù)用,而是持有短暫(256毫秒)時(shí)間,以期后續(xù)仍有SQL執(zhí)行,從而避免了session級變量的調(diào)整,大大增加了SQL執(zhí)行的效率。長連接場景下,對優(yōu)化前后的Cetus進(jìn)行了簡單測試。通過測試發(fā)現(xiàn),通過優(yōu)化后的Cetus針對長連場景下的讀流量的吞吐量有了明顯提升。下圖是在docker環(huán)境下的簡單測試對比:為了防止IO過高,簡單改造了sysbench發(fā)送的SQL,限制了返回的結(jié)果集大小。禁用事務(wù)和prepare的情況下,采用100個(gè)線程每次測試
7、60s,連續(xù)測試5次,結(jié)果如下:由于本機(jī)Docker性能較差,且sysbench模擬測試的語句較為簡單,不涉及session變量的切換,因此對比效果不甚明顯,本次測試性能僅提升30%左右。長連接業(yè)務(wù)場景下,性能優(yōu)化可能會(huì)更加明顯。3、讀流量的路由策略總結(jié)在存在至少1個(gè)可用從庫的情況下,影響查詢語句的路由策略的因素主要有:事務(wù)中的查詢;select.for update或select . lock in share mode;Cetus設(shè)置參數(shù)master-preferred=true所有流量默認(rèn)全部路由主庫;Cetus設(shè)置參數(shù)read-master-percentage控制主從讀流量負(fù)載;使用
8、注釋/*#mode=READWRITE*/或/*#mode=READONLY*/。默認(rèn)情況下,讀流量會(huì)優(yōu)先路由到從庫,從庫之間按照輪詢策略在各個(gè)從庫之間做負(fù)載均衡;一旦所有從庫均不可用,會(huì)路由到主庫上。目前Cetus的各個(gè)從庫暫不支持按照權(quán)重做負(fù)載。對于a、b、c點(diǎn),Cetus會(huì)將查詢語句直接路由主庫;對于d點(diǎn),如果設(shè)置read-master-percentage=100,所有的查詢流量均路由到主庫;如果設(shè)置read-master-percentage=0, 100),Cetus會(huì)將讀流量按照該比例路由到主庫和從庫(注意,這里的從庫指的是全部的從庫,即該比例指的是主庫和全部從庫的比例);對于e點(diǎn),如果使用注釋/*#mode=READWRITE*/,讀流量會(huì)路由到主庫;如果使用注釋/*#mode=READONLY*/讀流量會(huì)路由從庫,如果所有從庫均不可用時(shí)才會(huì)路由到主庫。上面的各個(gè)因素的優(yōu)先級,注釋的優(yōu)先級最高,其次是參數(shù)master-preferred,最后是參數(shù)re
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年裝修材料供應(yīng)商合作協(xié)議3篇
- 2024年門禁系統(tǒng)安全技術(shù)改造與施工合同3篇
- 2024年版培訓(xùn)合作合同標(biāo)準(zhǔn)格式版B版
- 2024年縫紉設(shè)備行業(yè)職業(yè)技能培訓(xùn)與認(rèn)證合同
- 2025版核電站安裝工程安全責(zé)任險(xiǎn)合同3篇
- 《財(cái)產(chǎn)權(quán)知識(shí)產(chǎn)權(quán)》課件
- 2024年租賃合同(商業(yè)用途)
- 2025年度數(shù)據(jù)中心制冷系統(tǒng)安裝與優(yōu)化合同范本3篇
- 2024年貨物搬運(yùn)與裝卸合同6篇
- 虛擬現(xiàn)實(shí)機(jī)械施工合同
- 公司保安員培訓(xùn)內(nèi)容
- 客服人員儀容儀表培訓(xùn)
- 第三方汽車物流運(yùn)輸合同(3篇)
- JJF(京) 3012-2021 觸針式電動(dòng)輪廓儀校準(zhǔn)規(guī)范
- 抗體藥物研發(fā)
- 2024年冀教版小學(xué)六年級上學(xué)期期末英語試卷及解答參考
- 遼寧省大連市2023-2024學(xué)年高三上學(xué)期雙基測試(期末考試) 地理 含答案
- 2024年江蘇省無錫惠山經(jīng)濟(jì)開發(fā)區(qū)招聘14人歷年高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 快件處理員(中級)職業(yè)技能鑒定考試題及答案
- 2024年企業(yè)環(huán)保工作計(jì)劃(三篇)
- 2023-2024公需科目(數(shù)字經(jīng)濟(jì)與驅(qū)動(dòng)發(fā)展)考試題庫及答案
評論
0/150
提交評論