




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
kingshard數(shù)據(jù)庫中間件設計與實現(xiàn)1陳非github:@flikeweibo:@chenfei001Agenda業(yè)務使用MySQL的痛點主流MySQLProxy方案kingshard的設計與實現(xiàn)總結(jié)2業(yè)務使用MySQL的痛點業(yè)務實現(xiàn)讀寫分離在業(yè)務中配置主庫、從庫的IP和端口DB宕機或上下線業(yè)務受影響運維協(xié)調(diào)開發(fā)修改業(yè)務配置3clientdb_masterdb_slave1db_slave2主從同步主從同步業(yè)務使用MySQL的痛點4業(yè)務實現(xiàn)分庫分表改寫SQL語句將SQL路由不同的DB聚合結(jié)果集數(shù)據(jù)庫中間件的目標5減輕開發(fā)的工作量支持SQL讀寫分離支持數(shù)據(jù)分片開發(fā)更加專注于業(yè)務邏輯,提升效率降低DB的運維與業(yè)務的耦合度DB的上下線業(yè)務無感知減輕DBA的工作負擔主流MySQLProxy方案6業(yè)務已有方案Atlas擴展功能較難基本不維護Cobar功能簡單基本不維護MyCat易用性較低開始商業(yè)化kingshard的設計目標7核心指導思想簡單有效核心功能讀寫分離數(shù)據(jù)分片提升DB的可運維性,減輕DBA負擔kingshard的架構(gòu)設計8整體架構(gòu)圖kingshard的SQLParser9SQL
Parser的設計與實現(xiàn)詞法分析器將SQL切分成token目的:作為語法分析器的輸入語法分析器根據(jù)token和MySQL規(guī)約法則生成AST(abstractsyntaxtree)目的:讀寫分離、數(shù)據(jù)分片SQL詞法分析語法分析AST改寫/路由SQLkingshard的sharding方案10sharding相關(guān)概念分片方式:Hash,Range和Time_RangeShardkey類型:整型和MySQL標準時間類型子表:分表名+序號,最大支持9999張子表。例如:table_0001,table_1023落在不同的DB實例,由配置指定Shard
key到實例采用兩級映射方案shard_keysub_tableDBconfigconfigkingshard的sharding方案11select*fromtabwhereid=10rangehashtimeconfigselect*fromtab_0001whereid=10calculatetableindexkingshard的連接池設計12目標復用連接,降低后端DB壓力方式一個DB實例對應一個連接池連接池個數(shù)上限可配置,無空閑連接則阻塞效果前端高并發(fā),MySQL負載不會抖動限制連接池個數(shù),保護后端DB不至于宕機kingshard的連接池設計13kingshardDB1ConnPoolConnPoolDB2connconnconn......poppush連接取出時:重置字符集重置Databasekingshard支持預處理的方案14作用防SQL注入,參數(shù)不做語義解析,只當做字符串提升效率,SQL不再需要重復解析示例preparestmt1from“SELECT*FROMtblWHEREid=?”;set@a=100;executestmt1using@a;deallocatepreparestmt1;kingshard支持預處理的方案15核心矛盾prepare狀態(tài)與會話(連接)綁定連接池機制要求連接復用簡單的方案將prepare/deallocate內(nèi)的所有語句保持在同一個連接上執(zhí)行缺點:與事務不同,很多程序不執(zhí)行deallocate,導致連接被占用不放kingshard支持預處理的方案16kingshard支持預處理方案流程圖kingshard的后端DB的高可用17方式使用獨立goroutine檢測DB狀態(tài)定期檢測每臺DB是否正常,周期和重試次數(shù)均可配置效果自動摘除宕機或網(wǎng)絡中斷的DB自動掛載恢復正常的DBkingshardDB_MasterDB_Slave1DB_Slave2pingpingpingnode業(yè)務使用kingshard的高可用方案18kingshard對安全與審計的支持19客戶端IP限制用戶自定義IP白名單列表SQL黑名單用戶定義黑名單SQL列表正則匹配方式,例如:deletefrommytable,selectcount(*)frommytablewhereid<?慢SQL記錄用戶自定義慢日志耗時大小kingshard的演進計劃20重構(gòu)SQL
Parser支持復雜SQL的解析管理端改造以API的方式支持管理命令Web界面操作與展示總結(jié)21為什么用Golang開發(fā)開發(fā)效率非常高性能并不差,相當于C語言的70%-80%便捷的并發(fā)編程部署簡單關(guān)注度開源一周年左右Github
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江省杭州市江干區(qū)重點達標名校2026屆畢業(yè)升學考試模擬卷物理卷含解析
- 集成電路科學與工程導論 第2版 課件 第十章 集成電路EDA技術(shù)
- 2026屆北京市部分區(qū)重點中學中考四模數(shù)學試題含解析
- 2026屆內(nèi)蒙古通遼市科爾沁右翼中學旗縣重點名校十校聯(lián)考最后物理試題含解析
- 2026屆山東省費縣達標名校初中物理畢業(yè)考試模擬沖刺卷含解析
- 山東省東營地區(qū)2026屆畢業(yè)升學考試模擬卷語文卷含解析
- 江蘇省鹽城響水縣聯(lián)考2026屆中考英語適應性模擬試題含答案
- 湖南省郴州市名校2026屆初中物理畢業(yè)考試模擬沖刺卷含解析
- 安徽省合肥肥西縣聯(lián)考2026屆中考數(shù)學模擬預測題含解析
- 山東省泰安市高新區(qū)良莊二中學2026屆中考五模物理試題含解析2
- 《小初銜接講座》課件
- 老年慢性心力衰竭合并肌少癥的篩查及相關(guān)性研究演示稿件
- PTA及PTA副品收集利用-008
- 腦梗塞后遺癥臨床路徑
- 載人航天精神課件
- 默頓的中層理論對高校雙學位教育的分析框架,教育社會學論文
- Aruba企業(yè)解決方案
- GB/T 8152.1-2006鉛精礦化學分析方法鉛量的測定酸溶解-EDTA滴定法
- GB/T 17587.3-2017滾珠絲杠副第3部分:驗收條件和驗收檢驗
- CCC認證講解課件
- 聽潮魯彥閱讀答案
評論
0/150
提交評論