版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、基于代理方式的分庫分表中間件dbproxy目的地技術(shù)部周文斌目錄 解決的問題 總體架構(gòu) 前端連接管理 路由模塊 SQL執(zhí)行模塊 后端連接管理 負(fù)載均衡 權(quán)限控制2022-6-12Dbproxy是什么? 數(shù)據(jù)庫代理 關(guān)系數(shù)據(jù)庫的路由器 關(guān)系數(shù)據(jù)庫升級(jí)到大數(shù)據(jù)的應(yīng)用中間件 基于開源的mycat實(shí)現(xiàn) 支持?jǐn)?shù)據(jù)的水平拆分2022-6-12解決的問題 數(shù)據(jù)的增長存儲(chǔ)問題 數(shù)據(jù)庫連接的集中式管理 數(shù)據(jù)庫的透明化擴(kuò)展 數(shù)據(jù)庫的透明化遷移2022-6-12實(shí)現(xiàn)的功能 分庫分表 讀寫分離 負(fù)載均衡 服務(wù)注冊發(fā)現(xiàn) 權(quán)限控制目錄 解決的問題 總體架構(gòu) 前端連接管理 路由模塊 SQL執(zhí)行模塊 后端連接管理 負(fù)載均衡
2、權(quán)限控制2022-6-12總體架構(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)限控制2022-6-12前端連接管理客戶端FrontendConnectionManager連接請求acceptFrontendConnection握手報(bào)文發(fā)送握手報(bào)文構(gòu)造握手報(bào)文認(rèn)證信息校驗(yàn)認(rèn)證
3、響應(yīng)報(bào)文響應(yīng)報(bào)文1. 跟客戶端建立連接2. 進(jìn)行權(quán)限認(rèn)證3. 前端連接的創(chuàng)建及銷毀協(xié)議解析模塊MySQLMessage 封裝了Mysql協(xié)議包的操作 方便對TCP的數(shù)據(jù)進(jìn)行Mysql協(xié)議解析3byte1byten bytes消息長度報(bào)文數(shù)據(jù)序號(hào)消息頭消息體1byten byte命令參數(shù)mysql報(bào)文請求消息體協(xié)議解析模塊3byte1byten bytes3byte1byten bytes3byte1byten bytes3byte1byten bytes3byte1byten bytesResult Set HeaderFieldEOFRow DataEOFResultSetHeaderPac
4、ket, FieldPacket,EOFPacket,RowDataPacketMysql響應(yīng)報(bào)文目錄 解決的問題 總體架構(gòu) 前端連接管理 路由模塊 SQL執(zhí)行模塊 后端連接管理 負(fù)載均衡 權(quán)限控制2022-6-12路由模塊 SQL解析 DruidParse 分庫標(biāo)示 路由規(guī)則 路由函數(shù) 讀寫分離特殊路由 事務(wù) 強(qiáng)制讀主庫 無分庫標(biāo)示 qmq路由SQL解析 獲取分庫標(biāo)示,定位分片 參數(shù) 1分片 2分片 解析語句,定位主從 SelectStatement 從庫 UpdateStatement,DeleteStatement,InsertStatement 主庫2022-6-12路由配置2022-
5、6-12select now()數(shù)據(jù)庫節(jié)點(diǎn)對應(yīng)的dn0, dn1路由配置 每個(gè)表都會(huì)配置分庫規(guī)則 每條規(guī)則對應(yīng)一個(gè)路由函數(shù)oidafterOneDayByOidyyyy-MM-dd2015-09-24180路由模塊 路由函數(shù)路由算法 RuleAlgorithmRuleAlgorithmAbstractPartitionAlgorithmPartitionByOIDAfterDayPartitionByDateAfterDay路由模塊Sql語句DruidParserRouterWriteReadupdateselectselect * from table where id=1update ta
6、ble 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注解特殊路由2022-6-1219 無分庫標(biāo)
7、示 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)的路由特殊路由2022-6-1220目錄 解決的問題 總體架構(gòu) 前端連接管理 路由模塊 SQL執(zhí)行模塊 后端連接管理 負(fù)載均衡 權(quán)限控制2022-6-12SQL執(zhí)行模塊ResponseHandlerSingleNodeHandlerMultiNodeHandlerCommitNodeHandlerRollbackHandle
8、rSingleNodeHandler.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, sql3sql1sql2sql3Non
9、BlockingSessioncon1sql1, sql2, sql3,commitSql1,sql2, sql3commitrelease con1release con1release con2release con3無事務(wù)有事務(wù)前端連接后端連接SQL執(zhí)行過程客戶端connectionSql請求路由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)限控制2022-6-12后端連接管理模塊 管理后端數(shù)據(jù)庫連接 創(chuàng)建新的數(shù)據(jù)庫連接 回
10、收連接 分片主從管理 控制讀寫分離后端連接管理 管理后端真實(shí)數(shù)據(jù)庫的連接DBBackendConnctionMangerSql執(zhí)行請求Connection執(zhí)行結(jié)果目錄 解決的問題 總體架構(gòu) 前端連接管理 路由模塊 SQL執(zhí)行模塊 后端連接管理 負(fù)載均衡 權(quán)限控制2022-6-12負(fù)載均衡 注冊發(fā)現(xiàn)使用zookeeper實(shí)現(xiàn),dbproxy啟動(dòng)的時(shí)候在zookeeper上注冊服務(wù)地址,客戶端監(jiān)聽對應(yīng)節(jié)點(diǎn)的信息,如果有服務(wù)上線,或者下線,動(dòng)態(tài)的獲得dbproxy的服務(wù)列表,然后動(dòng)態(tài)生成數(shù)據(jù)源,供客戶端使用。zookeeperdbproxydbproxydbproxyregisterclientda
11、tasourcedynamicDataSourcesubscribecreateinjection負(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.balance.RoundRobinW
12、eightStrategy 可以通過實(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)限控制2022-6-12權(quán)限控制 基于appcode進(jìn)行權(quán)限控制 新增應(yīng)用Qconfig動(dòng)態(tài)增加appcode 增加新機(jī)器就已經(jīng)有權(quán)限了2022-6-12 監(jiān)控報(bào)警 慢查詢監(jiān)控 連接數(shù)監(jiān)控
溫馨提示
- 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年礦產(chǎn)資源開發(fā)與合作合同
- 兼職文案創(chuàng)意撰寫合同
- 交通運(yùn)輸工具融資租賃合同
- 環(huán)保工程樁基機(jī)械施工合同
- 智能電網(wǎng)通信網(wǎng)絡(luò)升級(jí)合同
- 員工餐費(fèi)補(bǔ)貼發(fā)放細(xì)則
- 餐廳浮雕施工協(xié)議
- 環(huán)保設(shè)施電工維護(hù)聘用協(xié)議
- 臨時(shí)搭建物拆除合同
- 學(xué)校出租車租賃合同協(xié)議書
- 第73講:海薩尼轉(zhuǎn)換(HarsanyiTransformation)
- 雙重預(yù)防機(jī)制工作實(shí)施方案
- 用能單位能源計(jì)量器具配備和管理通則GB17167-2006
- 易制毒化學(xué)品購買申請表申請
- 通用機(jī)械設(shè)備管理基礎(chǔ)(共66頁).ppt
- 西方有趣節(jié)日介紹西紅柿節(jié)英文(課堂PPT)
- 綿陽市物業(yè)服務(wù)收費(fèi)管理實(shí)施細(xì)則
- 三年級(jí)作文編寫童話故事(課堂PPT)
- 泵類及液體輸送系統(tǒng)節(jié)能監(jiān)測 泵類及液體輸送系統(tǒng)節(jié)能監(jiān)測計(jì)算表
- 五年級(jí)數(shù)學(xué)上冊《列方程解應(yīng)用題》(課堂PPT)
- 大型商業(yè)綜合體消防安全管理規(guī)則2020年試行
評論
0/150
提交評論