




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、mysql中間件的負載均衡策略優(yōu)化方案目錄、背景3二. 負載均衡策略及性能優(yōu)化4三. 總結(jié)9.背景隨著業(yè)務的爆發(fā)式增長,電商系統(tǒng)中的讀寫壓力越來越高,單節(jié)點mysql實例壓力越來越大, 單純升級服務器硬件已經(jīng)無法滿足生產(chǎn)環(huán)境的需要。解決讀請求壓力,需要支持從庫擴展;解 決寫請求壓力,對數(shù)據(jù)分片增加多個節(jié)點,降低單節(jié)點mysql實例的壓力成了更優(yōu)的選擇。傳統(tǒng)的分片是通過dao層進行的,但是dao層對數(shù)據(jù)分片存在諸多問題。從業(yè)務角度看,配 置修改需要重啟服務,代價巨大;需要對分片結(jié)果集進行處理,業(yè)務邏輯愈加復雜;功能相對簡單。從數(shù)據(jù)庫運維角度看,配管理的統(tǒng)一化難度較大;db的升級、遷移等操作復雜。
2、網(wǎng)易電商同樣面臨著這些問題,為了徹底解決數(shù)據(jù)庫瓶頸,網(wǎng)易樂得團隊在實際生產(chǎn)中硏發(fā)了 自己的中間件cetuso其具有正統(tǒng)基因,基于官方mysql-proxy的版本進行全面修復和再創(chuàng) 新,已于不久前開源,在各個產(chǎn)品線上得到廣泛應用,性能和穩(wěn)定性均表現(xiàn)良好。cetus兼容mysql協(xié)議,前端應用不用修改即可通過cetus訪問數(shù)據(jù)庫,方便dba運維同學 和開發(fā)同學使用,實現(xiàn)了數(shù)據(jù)庫層面的橫向擴展。目前cetus有讀寫分離和sharding兩個版本,可通過編譯參數(shù)選擇適合的版本。它支持對用戶透明的多項功能,例如分布式事務、連接池、結(jié)果集壓縮、安全管理、狀態(tài)監(jiān)控、tcp stream傳輸?shù)鹊?。二、負載均衡
3、策略及性能優(yōu)化本文所討論的負載均衡,指的是讀流量的負載均衡,即讀流量如何分配到后端同一 mysql集 群內(nèi)的各個db。cetus的負載均衡策略,主要分為兩部分:主從庫之間讀流量的負載策略;從庫之間讀流量的負載策f具體實現(xiàn)時候,流量的分配單位與atlas等中間件也略有不同,進行了性能優(yōu)化。下面章節(jié)將依次詳細介紹。1、主從庫之間讀流量的負載策略默認情況下,非事務中、未通過注釋強制路由主庫或未使用鎖的讀流量會優(yōu)先路由到從庫,各個從庫之間負載均衡。只有當從庫都不可用時,讀流量才會路由到主庫。有些業(yè)務場景下,主庫可以分擔部分讀流量,這時就涉及到讀流量在主庫和從庫上配置負載策略了。cetus中;可以通過配
4、置參數(shù)read-master-percentage來指定默認的讀流量路由到主庫的百 分比,該參數(shù)的取值范圍是0, 100。該值默認為0,即所有讀流量會優(yōu)先路由從庫,所有從庫均不可用時,才會路由主庫;如果該 參數(shù)設置為100時,則所有讀流量都會路由到主庫;如果該值設置為(0, 100)時,則會按照設 置的比例進行路由。需要注意的是,該值表示的是主庫和所有從庫的比例。2、從庫之間的讀流量負載策略路由到從庫的流量會在各個從庫之間進行負載均衡。目前cetus各個從庫之間的讀流量負載策 略僅支持輪詢(rr )方式。在流量分配方面,cetus也進行了優(yōu)化。一些mysql數(shù)據(jù)庫中間件(例如atlas )是基
5、于sql 的維度做負載均衡的,不會考慮sql是同一個連接還是不同連接發(fā)送來的,中間件依次將接收到的sql按照策略發(fā)往后端的數(shù)據(jù)庫。在實際使用中發(fā)現(xiàn),長連接的場景下,該策略會造成大量的連接切換,從而導致session級變 量的頻繁調(diào)整,影響sql執(zhí)行效率。因此,cetus對其進行了優(yōu)化,并非完全按照sql的維 度做負載均衡。cetus考慮了同一個連接連續(xù)發(fā)送sql請求的情況,不會立即將當前sql使用完的cetus與mysql的連接放回連接池復用,而是持有短暫(256毫秒)時間,以期后續(xù)仍有sql執(zhí)行,從而避免了 session級變量的調(diào)整,大大增加了 sql執(zhí)行的效率。長連接場景下,對優(yōu)化前后的
6、cetus進行了簡單測試。通過測試發(fā)現(xiàn),通過優(yōu)化后的cetus針對長連場景下的讀流量的吞吐量有了明顯提升。下圖是在docker環(huán)境下的簡單測試對比:序號節(jié)點角色1docker: 172.17.02cetus-release2docker: 172.17.0.3mysql5.7-master3docker: 172.17.0.4mysql5.7-slave4docker: 172.17.0.5mysql5.7-slave5docker: 172.17.0.6sysbench1.1為了防止10過高;簡單改造了 sysbench發(fā)送的sql,限制了返回的結(jié)果集大小。禁用事務和prepare的情況下,
7、采用100個線程每次測試60s ,連續(xù)測試5次,結(jié)果如下:序號優(yōu)化前qps優(yōu)化后qps1389124300.6123686.944983.4734166.355002.9443674.555219.5553371.535380.14avg3758.1144977.342由于本機docker性能較差,且sysbench模擬測試的語句較為簡單,不涉及session變量的 切換,因此對比效果不甚明顯,本次測試性能僅提升30%左右。長連接業(yè)務場景下z性能優(yōu)化 可能會更加明顯。久讀流量的路由策略總結(jié)a.b.c.在存在至少1個可用從庫的情況下,影響查詢語句的路由策略的因素主要有:事務中的查詢;select
8、.for update 或 select. lock in share mode ;cetus設置參數(shù)master-preferred=true所有流量默認全部路由主庫;d. cetus設置參數(shù)read-master-percentage控制主從讀流量負載;e使用注#mode二readwrite*/或廠#mode二readonly*/。默認情況下,讀流量會優(yōu)先路由到從庫,從庫之間按照輪詢策略在各個從庫之間做負載均衡; 一旦所有從庫均不可用,會路由到主庫上。目前cetus的各個從庫暫不支持按照權重做負載。對于a、b、c點,cetus會將查詢語句直接路由主庫;對于d點,如果設置read-master-percentage=100 ,所有的查詢流量均路由到主庫;如果設 置read-master-percentage=o/ 100) , cetus會將讀流量按照該比例路由到主庫和從庫(注 意,這里的從庫指的是全部的從庫,即該比例指的是主庫和全部從庫的比例);對于e點,如果使用注釋/*#mode = readwrite*/ ,讀流量會路由到主庫;如果使用注釋 /*#mode=readonly*/讀流量會路由從庫,如果所有從庫均不可用時才會路由到主庫。上面的各個因素的優(yōu)先級,注釋的優(yōu)先級最高,其次是參數(shù)master-preferred ,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 麗江2025年云南麗江市第二人民醫(yī)院招聘第一批編外工作人員20人筆試歷年參考題庫附帶答案詳解
- 游戲合作合同范本
- 碼頭租房合同范本
- Thiophene-2-amidoxime-生命科學試劑-MCE
- Ibuprofen-arginine-生命科學試劑-MCE
- 生態(tài)旅游推動環(huán)境保護的綠色力量
- 科技產(chǎn)品如何通過市場定位獲得用戶青睞
- 器材租用合同范本
- 知識版權在提升企業(yè)核心競爭力的作用
- 電子商務平臺的移動端開發(fā)與優(yōu)化
- GB/T 17984-2010麻花鉆技術條件
- 五年級上冊語文閱讀理解附答案
- 小學一年級硬筆書法入門25839教學內(nèi)容
- 心理測量學(全套教學課件)
- 高職英語課程說課稿課件
- T∕CRHA 003-2021 實驗室 人源性干細胞檢測通用要求
- 大班綜合《要是你給老鼠玩手機》課件
- DN900鋼管dn800E管定向鉆穿越京杭大運河施工方案
- 新人美版八年級下冊初中美術全冊課件
- 肺部查體課件
- 冀教版三年級數(shù)學下冊《第二單元第2課時 兩位數(shù)乘兩位數(shù)(進位)的乘法》教學課件PPT小學公開課
評論
0/150
提交評論