kingshard數據庫中間件設計與實現_第1頁
kingshard數據庫中間件設計與實現_第2頁
kingshard數據庫中間件設計與實現_第3頁
kingshard數據庫中間件設計與實現_第4頁
kingshard數據庫中間件設計與實現_第5頁
已閱讀5頁,還剩17頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

kingshard數據庫中間件設計與實現1陳非github:@flikeweibo:@chenfei001Agenda業務使用MySQL的痛點主流MySQLProxy方案kingshard的設計與實現總結2業務使用MySQL的痛點業務實現讀寫分離在業務中配置主庫、從庫的IP和端口DB宕機或上下線業務受影響運維協調開發修改業務配置3clientdb_masterdb_slave1db_slave2主從同步主從同步業務使用MySQL的痛點4業務實現分庫分表改寫SQL語句將SQL路由不同的DB聚合結果集數據庫中間件的目標5減輕開發的工作量支持SQL讀寫分離支持數據分片開發更加專注于業務邏輯,提升效率降低DB的運維與業務的耦合度DB的上下線業務無感知減輕DBA的工作負擔主流MySQLProxy方案6業務已有方案Atlas擴展功能較難基本不維護Cobar功能簡單基本不維護MyCat易用性較低開始商業化kingshard的設計目標7核心指導思想簡單有效核心功能讀寫分離數據分片提升DB的可運維性,減輕DBA負擔kingshard的架構設計8整體架構圖kingshard的SQLParser9SQL

Parser的設計與實現詞法分析器將SQL切分成token目的:作為語法分析器的輸入語法分析器根據token和MySQL規約法則生成AST(abstractsyntaxtree)目的:讀寫分離、數據分片SQL詞法分析語法分析AST改寫/路由SQLkingshard的sharding方案10sharding相關概念分片方式: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實例對應一個連接池連接池個數上限可配置,無空閑連接則阻塞效果前端高并發,MySQL負載不會抖動限制連接池個數,保護后端DB不至于宕機kingshard的連接池設計13kingshardDB1ConnPoolConnPoolDB2connconnconn......poppush連接取出時:重置字符集重置Databasekingshard支持預處理的方案14作用防SQL注入,參數不做語義解析,只當做字符串提升效率,SQL不再需要重復解析示例preparestmt1from“SELECT*FROMtblWHEREid=?”;set@a=100;executestmt1using@a;deallocatepreparestmt1;kingshard支持預處理的方案15核心矛盾prepare狀態與會話(連接)綁定連接池機制要求連接復用簡單的方案將prepare/deallocate內的所有語句保持在同一個連接上執行缺點:與事務不同,很多程序不執行deallocate,導致連接被占用不放kingshard支持預處理的方案16kingshard支持預處理方案流程圖kingshard的后端DB的高可用17方式使用獨立goroutine檢測DB狀態定期檢測每臺DB是否正常,周期和重試次數均可配置效果自動摘除宕機或網絡中斷的DB自動掛載恢復正常的DBkingshardDB_MasterDB_Slave1DB_Slave2pingpingpingnode業務使用kingshard的高可用方案18kingshard對安全與審計的支持19客戶端IP限制用戶自定義IP白名單列表SQL黑名單用戶定義黑名單SQL列表正則匹配方式,例如:deletefrommytable,selectcount(*)frommytablewhereid<?慢SQL記錄用戶自定義慢日志耗時大小kingshard的演進計劃20重構SQL

Parser支持復雜SQL的解析管理端改造以API的方式支持管理命令Web界面操作與展示總結21為什么用Golang開發開發效率非常高性能并不差,相當于C語言的70%-80%便捷的并發編程部署簡單關注度開源一周年左右Github

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論