付費(fèi)下載
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
提綱MTAtlas簡(jiǎn)介MTAtlas整體架構(gòu)MTAtlas主要模塊MTAtlas上線現(xiàn)狀MTAtlas的未來計(jì)劃Q&AMTAtlas簡(jiǎn)介基于MySQL協(xié)議的數(shù)據(jù)庫(kù)中間件來自于360開源的Atlasmysql-‐proxy(2011.8
)開源Atlas(360
2013.6)MTAtlas(2015.5
~
now)MTAtlas簡(jiǎn)介MTAtlas的主要功能讀寫分離負(fù)載均衡結(jié)點(diǎn)上下線控制MTAtlas簡(jiǎn)介Slave1MasterApplicaFonreadwrite:.cnreadonly:readonly:.上線slaveDBA在集群中添加新從庫(kù)RD重新發(fā)布服務(wù)下線slaveRD重新發(fā)布服務(wù)DBA下線slave負(fù)載均衡ApplicaFon
實(shí)現(xiàn)讀寫分離ApplicaFon
實(shí)現(xiàn)MTAtlas上線前數(shù)據(jù)庫(kù)使用場(chǎng)景Slave2MTAtlas簡(jiǎn)介MTAnode1:slave1:port1node2:slave2:port2node3:master:port3MTAtlas上線后數(shù)據(jù)庫(kù)使用場(chǎng)景ApplicaFonSlave1MasterSlave2上線slaveDBA:
add
backend下線slaveDBA:
remove
backend負(fù)載均衡MTAtlas實(shí)現(xiàn)讀寫分離MTAtlas實(shí)現(xiàn)IDC2MTAtlas整體架構(gòu)四層部署架構(gòu)IDC1Atlas
集群Slave1MasterSlave2Atlas
集群DNSMGWMGWMTAtlas整體架構(gòu)模塊MTAtlas的
模塊控制(用戶、IP過濾)SQL
解析
SQL
重寫SQL
執(zhí)行分庫(kù)分表管理負(fù)載均衡
讀寫分離MySQL
連接池DB管理日
監(jiān)志
控管
管理
理連接管理MTAtlas主要模塊-‐連接管理連接管理繼承了開源Atlas版本按照協(xié)議機(jī)制自己處理連接建立,數(shù)據(jù)收發(fā)的功能MTAtlas根據(jù)架構(gòu)鏈路較長(zhǎng)的特點(diǎn),著重添加了對(duì)于連接異常的檢測(cè)與處理MGWMySQLMTAtlas主要模塊-‐連接管理–鏈路模擬圖ClientMTAtlassocket1socket2poolsocket4socket3MTAtlas主要模塊-‐連接管理解決方案:socket2創(chuàng)建時(shí)添加keepaliveOS
keepalive
:
30/5/5OS
tcp_retries2:
5效果:空閑連接,keepalive會(huì)在1min
內(nèi)檢測(cè)到異常,將鏈路關(guān)閉(socket2,socket3)發(fā)送狀態(tài),retry
機(jī)制也會(huì)保證在1min關(guān)閉socket2,同時(shí)socket3也關(guān)閉–MGW到Atlas網(wǎng)絡(luò)異常socket1socket2socket3socket4MGW端socket2失效Atlas端未感知Atlas到MySQL的鏈路還保持著,如果在事務(wù)內(nèi),會(huì)
大事務(wù)MTAtlas主要模塊-‐連接管理解決方案:socket3創(chuàng)建時(shí)添加
keepalivesocket3
添加event事件在其異常
錯(cuò)OS
keepalive
:
30/5/5OS
tcp_retries2:
5效果:空閑連接,keepalive
會(huì)在
1min內(nèi)檢測(cè)到,將鏈路關(guān)閉(socket2,
socket3)發(fā)送狀態(tài),retry
機(jī)制也會(huì)保證在1min關(guān)閉socket2,同時(shí)socket3也關(guān)閉MySQL端主動(dòng)關(guān)閉連接時(shí)(wait_Fmeout),event機(jī)制可以及時(shí)發(fā)現(xiàn)問題將socket3關(guān)閉MGW端socket2失效Atlas端未感知Atlas未感知socket3斷開,分配給socket2,引起client查詢失敗–Atlas到MySQL的鏈路異常socket1socket2socket3socket4MTAtlas主要模塊-‐連接管理解決方案socket4創(chuàng)建時(shí)添加keepalivesocket4
添加event事件在其異常
錯(cuò)OS
keepalive
:
30/5/5OS
tcp_retries2:
5–連接池中連接異常socket1socket2socket3socket4效果空閑連接,keepalive
會(huì)在1min
內(nèi)檢測(cè)到,將鏈路關(guān)閉(socket2,
socket3)MySQL端主動(dòng)關(guān)閉連接時(shí)(wait_Fmeout),event機(jī)制可以及時(shí)發(fā)現(xiàn)問題將socket3關(guān)閉socket4被關(guān)閉后,如果Atlas未感知,分配給socket2會(huì)引起client報(bào)錯(cuò)MTAtlas主要模塊-‐連接管理–
Atlas端的socket2/socket3異常解決方案socket2,socket3,socket4創(chuàng)建時(shí)添加keepalive添加event事件在其異?;虺?/p>
錯(cuò)OS
keepalive
:
30/5/5OS
tcp_retries2:
5效果由于添加了event機(jī)制,可以檢查出Atlas端socket的狀態(tài)變化socket2,socket3中有一方關(guān)閉會(huì)觸發(fā)另一方關(guān)閉,保證鏈路安全socket1socket2socket3socket4MTAtlas主要模塊-‐連接管理解決方案socket2:wait_Fmeout空閑等待時(shí)間socket3,
socket4:db-‐connecFon-‐max-‐age,連接的生命周期socket4:db-‐connecFon-‐idle-‐
Fmeout,連接池內(nèi)空閑等待時(shí)間–添加措施避免空閑連接占用socket1socket2socket3socket4MTAtlas主要模塊-‐SQL處理模塊SQL處理模塊clientSQL解析/重寫SQL
執(zhí)行MySQL連接MySQL
連接…2314連接池client_connserver_connMTAtlas主要模塊-‐SQL處理模塊MTAtlas
添加SESSION變量功能增加客戶端連接與MySQL連接的SESSION參數(shù)在分配到連接時(shí)后,先比較二者的會(huì)話級(jí)參數(shù)值,校正參數(shù)后再執(zhí)行查詢MTAtlas主要模塊-‐SQL處理模塊–為什么要添加SESSION級(jí)變量的支持?client_con1MySQL
連接MySQL
連接Q1:set
SQL_SELECT_LIMIT=1Q3:select
*
from
t2
where
id
=10;(10
rows)Q2:select
*
from
t1
where
id
=10;client_con2連接池SQL處理setSQL_SELECT_LIMIT=1;select
*
from
t1
where
id
=
10;select
*
from
t2
where
id
=10;MTAtlas主要模塊-‐SQL處理模塊client_con1MySQL
連接client_status=>(null)Q3:select
*
from
t2
where
id
=10;(10
rows)client_con2client_status=>(null)Q1:set
SQL_SELECT_LIMIT=1client_status=>(SQL_SELECT_LIMIT=1)Q2:select
*
from
t1
where
id
=10;SQL處理
連接池sever_status=>(null)setSQL_SELECT_LIMIT=1;status=>(SQL_SELECT_LIMIT=1)select
*
from
t1
where
id
=
10;setSQL_SELECT_LIMIT=default;select
*
from
t2
where
id
=10;MTAtlas主要模塊-‐SQL處理模塊下一步思考由支持SESSION變量進(jìn)一步擴(kuò)展到連接的所有上下文信息,例如last_insert_id,a?ected_rows等MTAtlas主要模塊-‐連接池管理連接池管理–將單一的連接池鏈表,修改成用戶為key的hash表,hash值是該用戶所建立的連接poolMySQL連接MySQL連接…poolBucket1:user1MySQL連接(user1)MySQL連接(user1)Bucket2:user2MySQL連接(user2)MySQL連接(user2)……MTAtlas主要模塊-‐連接池管理–為什么要做這樣的修改client_con1(user1)MySQL
連接client_status=>(null)Q3:select
*
from
t2
where
id
=10;(10
rows)client_con2(user2)SQL處理
連接池client_status=>(null)Q1:set
SQL_SELECT_LIMIT=1client_status=>(SQL_SELECT_LIMIT=1)Q2:select
*
from
t1
where
id
=10;sever_status=>(null)setSQL_SELECT_LIMIT=1;status=>(SQL_SELECT_LIMIT=1)select
*
from
t1
where
id
=10;CHANGE_USER-‐>user2:ERRORset
SQL_SELECT_LIMIT=default;
(user1)select
*
from
t2
where
id
=10;
(user1)MTAtlas主要模塊-‐連接池管理client_con1(user1)user1:conn_adclient_status=>(null)Q3:select
*
from
t2
where
id
=10;(10
rows)client_con2(user2)連接池SQL處理user2:conn_adsever_status=>(null)setSQL_SELECT_LIMIT=1;status=>(SQL_SELECT_LIMIT=1)select
*
from
t1
where
id
=
10;sever_status=>(null)select
*
from
t2
where
id
=10;–按用戶分配后的效果client_status=>(null)Q1:set
SQL_SELECT_LIMIT=1client_status=>(SQL_SELECT_LIMIT=1)Q2:select
*
from
t1
where
id
=10;MTAtlas主要模塊控制控制SQL
過濾創(chuàng)建,匹配一類查詢示例1:”select
*
from
tbl
where
col2
=
?”,示例2:“update
tbl
set
col1=?where
pkey=?”根據(jù)執(zhí)行頻率,執(zhí)行時(shí)間自動(dòng)添加提供手動(dòng)添加根據(jù)
Thread
running進(jìn)行負(fù)載均衡用戶IP限制從庫(kù)流量配置MTAtlas主要模塊控制Atlasnode1:mastrenode2:slave1:tag1node3:slave2r:tag2user1:tag1:host1,host2user2:tag2:host1user3:tag1,tag2:%no
user1用戶IP限制與從庫(kù)流量配置示例user1:****
.cn(host1)
user1:****.cn(host3)host3
isforbiddenSlave1MasterSlave2MTAtlas主要模塊-‐日志管理日志管理日志時(shí)間精確到微秒:
解決了時(shí)間精度的問題admin中添加了對(duì)各個(gè)模塊的Trace:
解決了上下文的問題SQL日志增加了用戶登錄/退出,thread
id,慢查詢,長(zhǎng)連接的記錄:
增加對(duì)整個(gè)連接的完整信息SQL日志的自動(dòng)rotate:
減少額外的處理工作下一步想法刷日志模塊仍是同步方式,會(huì)有一定的性能影響MTAtlas主要模塊管理管理MTAtlas新增了
體系:QPS:read/write的查詢個(gè)數(shù)processlist響應(yīng)時(shí)間直方圖方式展示響應(yīng)時(shí)間趨勢(shì)慢查詢數(shù)量將出現(xiàn)的慢查詢計(jì)數(shù)同步等待時(shí)間等待與喚醒event的時(shí)間Atlas到MySQL的連接數(shù)活動(dòng)連接/連接池中連接client到Atlas的連接Atlas的Thread
runningMTAtlas主要模塊管理MTAtlas主要模塊管理MTAtlas主要模塊管理MTAtlas主要模塊-‐性能改進(jìn)性能改進(jìn)測(cè)試工具:sysbench
0.4
(99%rt<10ms)優(yōu)化策略詞法分析器由串行改為并行連接狀態(tài)切換方式改進(jìn)QPS70000210000250000200000150000100000500000優(yōu)化前優(yōu)化后QPSMTAtlas主要模塊-‐其它改進(jìn)其它的改進(jìn)RPM包發(fā)布引入mysql-‐test測(cè)試框架引入sysbench/Ben
arkSQL測(cè)試建立線上 測(cè)試框架代碼覆蓋性測(cè)試分表若干問題(支持int64,NULL類型)MTAtlas主要模塊-‐sharding版本開源版本sharding的架構(gòu)Atlastbl(1000~1999)table=test.tbl;group=0,1group-‐key=column_namegroups=0:0~1000,1:1000~1999group0Slave1MasterSlave2group1Slave1MasterSlave2tbl(0~1000)MTAtlas主要模塊-‐sharding版本開源sharding版本功能說明只支持分庫(kù)支持hash/range的分庫(kù)增加了語(yǔ)法解析器lemon不支持跨庫(kù)的事務(wù)MTAtlas主要模塊-‐sharding版本Atlastbl_0(0~999)tbl_1(1000-‐1999)MTAtlas
sharding版本架構(gòu)table
=
test
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人工智能算法與應(yīng)用案例研究
- 工業(yè)互聯(lián)網(wǎng)技術(shù)在智能制造領(lǐng)域應(yīng)用效果評(píng)估報(bào)告
- 2026年化學(xué)實(shí)驗(yàn)操作試題常見化學(xué)實(shí)驗(yàn)安全操作規(guī)范
- 2026年軟件測(cè)試工程師面試寶典測(cè)試用例答題技巧與評(píng)分標(biāo)準(zhǔn)
- 2026年生物科技前沿知識(shí)模擬試題
- 2026年生物技術(shù)實(shí)驗(yàn)技能考核基因編輯技術(shù)實(shí)驗(yàn)操作題
- 2026年P(guān)MP變更管理與執(zhí)行策略題集
- 2026年制造業(yè)崗候選人庫(kù)存管理與周轉(zhuǎn)率提升策略試題
- 2026年數(shù)據(jù)庫(kù)系統(tǒng)基礎(chǔ)概念與原理測(cè)試題
- 2026年記者心理素質(zhì)提升采訪心理障礙克服與應(yīng)對(duì)題集
- GB/T 46886-2025智能檢測(cè)裝備通用技術(shù)要求
- 護(hù)理護(hù)理科研與論文寫作
- 2025年健康體檢中心服務(wù)與質(zhì)量管理手冊(cè)
- 2025-2030中國(guó)駱駝市場(chǎng)前景規(guī)劃與投資運(yùn)作模式分析研究報(bào)告
- 2026中國(guó)電信四川公用信息產(chǎn)業(yè)有限責(zé)任公司社會(huì)成熟人才招聘?jìng)淇碱}庫(kù)及完整答案詳解一套
- 鋼結(jié)構(gòu)玻璃雨棚安裝施工方案
- 鄂爾多斯輔警考試題型及答案
- 《中華人民共和國(guó)危險(xiǎn)化學(xué)品安全法》全套解讀
- 房建工程電氣安裝施工方案
- 同等學(xué)力申碩公共管理真題及答案
- 2025初三英語(yǔ)中考英語(yǔ)滿分作文
評(píng)論
0/150
提交評(píng)論