




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于代理方式的分庫分表中間件dbproxy目的地技術(shù)部周文斌目錄 解決的問題 總體架構(gòu) 前端連接管理 路由模塊 SQL執(zhí)行模塊 后端連接管理 負(fù)載均衡 權(quán)限控制2021-10-13Dbproxy是什么? 數(shù)據(jù)庫代理 關(guān)系數(shù)據(jù)庫的路由器 關(guān)系數(shù)據(jù)庫升級(jí)到大數(shù)據(jù)的應(yīng)用中間件 基于開源的mycat實(shí)現(xiàn) 支持?jǐn)?shù)據(jù)的水平拆分2021-10-13解決的問題 數(shù)據(jù)的增長(zhǎng)存儲(chǔ)問題 數(shù)據(jù)庫連接的集中式管理 數(shù)據(jù)庫的透明化擴(kuò)展 數(shù)據(jù)庫的透明化遷移2021-10-13實(shí)現(xiàn)的功能 分庫分表 讀寫分離 負(fù)載均衡 服務(wù)注冊(cè)發(fā)現(xiàn) 權(quán)限控制目錄 解決的問題 總體架構(gòu) 前端連接管理 路由模塊 SQL執(zhí)行模塊 后端連接管理 負(fù)載
2、均衡 權(quán)限控制2021-10-13總體架構(gòu)mysqlmysqlpgBackendConnectionManagerpgDriverFrontendConnectionManager協(xié)議適配(mysql)協(xié)議解析Sql解析規(guī)則路由Sql executor結(jié)果合并響應(yīng)報(bào)文客戶端客戶端MysqlDriverMysql數(shù)據(jù)包目錄 解決的問題 總體架構(gòu) 前端連接管理 路由模塊 SQL執(zhí)行模塊 后端連接管理 負(fù)載均衡 權(quán)限控制2021-10-13前端連接管理客戶端FrontendConnectionManager連接請(qǐng)求acceptFrontendConnection握手報(bào)文發(fā)送握手報(bào)文構(gòu)造握手報(bào)文認(rèn)證信
3、息校驗(yàn)認(rèn)證響應(yīng)報(bào)文響應(yīng)報(bào)文1. 跟客戶端建立連接2. 進(jìn)行權(quán)限認(rèn)證3. 前端連接的創(chuàng)建及銷毀協(xié)議解析模塊MySQLMessage 封裝了Mysql協(xié)議包的操作 方便對(duì)TCP的數(shù)據(jù)進(jìn)行Mysql協(xié)議解析3byte1byten bytes消息長(zhǎng)度報(bào)文數(shù)據(jù)序號(hào)消息頭消息體1byten byte命令參數(shù)mysql報(bào)文請(qǐng)求消息體協(xié)議解析模塊3byte1byten bytes3byte1byten bytes3byte1byten bytes3byte1byten bytes3byte1byten bytesResult Set HeaderFieldEOFRow DataEOFResultSetHead
4、erPacket, FieldPacket,EOFPacket,RowDataPacketMysql響應(yīng)報(bào)文目錄 解決的問題 總體架構(gòu) 前端連接管理 路由模塊 SQL執(zhí)行模塊 后端連接管理 負(fù)載均衡 權(quán)限控制2021-10-13路由模塊 SQL解析 DruidParse 分庫標(biāo)示 路由規(guī)則 路由函數(shù) 讀寫分離特殊路由 事務(wù) 強(qiáng)制讀主庫 無分庫標(biāo)示 qmq路由SQL解析 獲取分庫標(biāo)示,定位分片 參數(shù) 1分片 2分片 解析語句,定位主從 SelectStatement 從庫 UpdateStatement,DeleteStatement,InsertStatement 主庫2021-10-13路由
5、配置2021-10-13select now()數(shù)據(jù)庫節(jié)點(diǎn)對(duì)應(yīng)的dn0, dn1路由配置 每個(gè)表都會(huì)配置分庫規(guī)則 每條規(guī)則對(duì)應(yīng)一個(gè)路由函數(shù)oidafterOneDayByOidyyyy-MM-dd2015-09-24180路由模塊 路由函數(shù)路由算法 RuleAlgorithmRuleAlgorithmAbstractPartitionAlgorithmPartitionByOIDAfterDayPartitionByDateAfterDay路由模塊Sql語句DruidParserRouterWriteReadupdateselectselect * from table where id=1u
6、pdate table set status =2 where id=1SelectStatementselect * from table where id=1UpdateStatementupdate table set status =2 where id=1讀寫分離 事務(wù) begin transaction select sql update sql insert sql commit transaction( rollback transaction) 直接路由到Write庫,直到事務(wù)提交/回滾 強(qiáng)制讀主庫 /*balance*/方式 ReadMaster注解特殊路由2021-10-
7、1319 無分庫標(biāo)示 select語句,會(huì)查詢所有的庫表,將數(shù)據(jù)匯總后,返回給客戶端 insert語句,直接報(bào)錯(cuò) update語句,會(huì)更新所有庫表的數(shù)據(jù) delete語句,會(huì)刪除所有的庫表的數(shù)據(jù) qmq_msg_queue的路由 參照同一事務(wù)內(nèi)其他sql的路由 如果沒有其他sql,則執(zhí)行默認(rèn)的路由特殊路由2021-10-1320目錄 解決的問題 總體架構(gòu) 前端連接管理 路由模塊 SQL執(zhí)行模塊 后端連接管理 負(fù)載均衡 權(quán)限控制2021-10-13SQL執(zhí)行模塊ResponseHandlerSingleNodeHandlerMultiNodeHandlerCommitNodeHandlerRol
8、lbackHandlerSingleNodeHandler.execute() 路由到一個(gè)分片時(shí)被執(zhí)行執(zhí)行MultiNoderHandlerNodeHandler.execute() 路由到多分片時(shí)被執(zhí)行執(zhí)行CommitNodeHmit() 提交事務(wù)執(zhí)行CommitNodeHandler.rollback() 回滾事務(wù)執(zhí)行SQL執(zhí)行模塊 NonBlockSession: 一個(gè)連接的會(huì)話,綁定前端連接跟后端連接 無事務(wù):每個(gè)sql在不同連接執(zhí)行 有事務(wù):所有sql在同一個(gè)連接上執(zhí)行 SQL執(zhí)行模塊NonBlockingSessioncon1con2con3Sql1, sql2, sql3sql1
9、sql2sql3NonBlockingSessioncon1sql1, sql2, sql3,commitSql1,sql2, sql3commitrelease con1release con1release con2release con3無事務(wù)有事務(wù)前端連接后端連接SQL執(zhí)行過程客戶端connectionSql請(qǐng)求路由Mysql報(bào)文postgresqlSQL執(zhí)行器Sql語句報(bào)文轉(zhuǎn)換執(zhí)行結(jié)果Mysql響應(yīng)報(bào)文執(zhí)行結(jié)果Sql解析mysql目錄 解決的問題 總體架構(gòu) 前端連接管理 路由模塊 SQL執(zhí)行模塊 后端連接管理 負(fù)載均衡 權(quán)限控制2021-10-13后端連接管理模塊 管理后端數(shù)據(jù)庫連接
10、 創(chuàng)建新的數(shù)據(jù)庫連接 回收連接 分片主從管理 控制讀寫分離后端連接管理 管理后端真實(shí)數(shù)據(jù)庫的連接DBBackendConnctionMangerSql執(zhí)行請(qǐng)求Connection執(zhí)行結(jié)果目錄 解決的問題 總體架構(gòu) 前端連接管理 路由模塊 SQL執(zhí)行模塊 后端連接管理 負(fù)載均衡 權(quán)限控制2021-10-13負(fù)載均衡 注冊(cè)發(fā)現(xiàn)使用zookeeper實(shí)現(xiàn),dbproxy啟動(dòng)的時(shí)候在zookeeper上注冊(cè)服務(wù)地址,客戶端監(jiān)聽對(duì)應(yīng)節(jié)點(diǎn)的信息,如果有服務(wù)上線,或者下線,動(dòng)態(tài)的獲得dbproxy的服務(wù)列表,然后動(dòng)態(tài)生成數(shù)據(jù)源,供客戶端使用。zookeeperdbproxydbproxydbproxyreg
11、isterclientdatasourcedynamicDataSourcesubscribecreateinjection負(fù)載均衡 負(fù)載均衡,是使用了spring的動(dòng)態(tài)數(shù)據(jù)源AbstractRoutingDataSource,擴(kuò)展了該數(shù)據(jù)源,從動(dòng)態(tài)數(shù)據(jù)源中根據(jù)一定的負(fù)載均衡策略,選出一個(gè)可以使用的數(shù)據(jù)源。(1). 隨機(jī)策略 :隨機(jī)選一個(gè)可用的數(shù)據(jù)源。 com.qunar.des.dbproxy.datasource.balance.RandomStrategy (2). 輪詢策略 :從可用的數(shù)據(jù)源中,按照順序輪詢。com.qunar.des.dbproxy.datasource.balanc
12、e.RoundRobinWeightStrategy 可以通過實(shí)現(xiàn)BalanceStrategy.getNext實(shí)現(xiàn)不同的負(fù)載均衡策略。Dbproxy分組 通過為dbproxy配置不同的組,可以靈活的組裝不同的dbproxy為一個(gè)集群dbproxydbproxydbproxydbproxydbproxydbproxydbproxydbproxydbproxydes.dbproxy.orderdes.dbproxy.voucherdes.dbproxy.task目錄 解決的問題 總體架構(gòu) 前端連接管理 路由模塊 SQL執(zhí)行模塊 后端連接管理 負(fù)載均衡 權(quán)限控制2021-10-13權(quán)限控制 基于appcode進(jìn)行權(quán)限控制 新增應(yīng)用Qconfig動(dòng)態(tài)增加appcode 增加新機(jī)器就已經(jīng)有權(quán)限了2021-10-13 監(jiān)控報(bào)警 慢查詢監(jiān)控 連接數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ù)防計(jì)劃表
- 股份制改革流程操作指南
- 養(yǎng)殖產(chǎn)業(yè)合作與獸醫(yī)服務(wù)協(xié)議
- 專業(yè)寫作培訓(xùn)資源共享協(xié)議
- 公司內(nèi)部人事調(diào)整規(guī)章制度
- 智能交通系統(tǒng)建設(shè)及交通管理優(yōu)化方案設(shè)計(jì)
- 工作流程表格-任務(wù)清單
- 電子會(huì)議系統(tǒng)使用記錄表格
- 數(shù)學(xué)故事征文探索數(shù)學(xué)之美與實(shí)際應(yīng)用價(jià)值
- 歷史古代文明發(fā)展脈絡(luò)閱讀題
- 2025年雙方協(xié)商一致自愿離婚協(xié)議書范本
- 眼科與視功能檢查屈光參差課件
- GB/T 6433-2025飼料中粗脂肪的測(cè)定
- 2025年湖南司法警官職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫學(xué)生專用
- 2025年呼和浩特職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫及參考答案
- 2025山西國(guó)際能源集團(tuán)有限公司所屬企業(yè)社會(huì)招聘258人筆試參考題庫附帶答案詳解
- 四川德陽歷年中考語文文言文閱讀試題12篇(含答案與翻譯)(截至2024年)
- 合唱之美知到智慧樹章節(jié)測(cè)試課后答案2024年秋山東航空學(xué)院
- 中國(guó)卒中學(xué)會(huì)急性缺血性卒中再灌注治療指南+2024解讀
- 中國(guó)心力衰竭診斷和治療指南2024解讀(完整版)
評(píng)論
0/150
提交評(píng)論