kingshard数据库中间件设计与实现PPT课件_第1页
kingshard数据库中间件设计与实现PPT课件_第2页
kingshard数据库中间件设计与实现PPT课件_第3页
kingshard数据库中间件设计与实现PPT课件_第4页
kingshard数据库中间件设计与实现PPT课件_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 kingshard数据库中间件设计与实现 陈非github flikeweibo chenfei001 2 Agenda 业务使用MySQL的痛点主流MySQLProxy方案kingshard的设计与实现总结 3 业务使用MySQL的痛点 业务实现读写分离在业务中配置主库 从库的IP和端口DB宕机或上下线业务受影响运维协调开发修改业务配置 client db master db slave1 db slave2 主从同步 主从同步 4 业务使用MySQL的痛点 4 业务实现分库分表改写SQL语句将SQL路由不同的DB聚合结果集 5 数据库中间件的目标 5 减轻开发的工作量支持SQL读写分离支持数据分片开发更加专注于业务逻辑 提升效率降低DB的运维与业务的耦合度DB的上下线业务无感知减轻DBA的工作负担 6 主流MySQLProxy方案 6 业务已有方案Atlas扩展功能较难基本不维护Cobar功能简单基本不维护MyCat易用性较低开始商业化 7 kingshard的设计目标 7 核心指导思想简单有效核心功能读写分离数据分片提升DB的可运维性 减轻DBA负担 8 kingshard的架构设计 8 整体架构图 9 kingshard的SQLParser 9 SQLParser的设计与实现词法分析器将SQL切分成token目的 作为语法分析器的输入语法分析器根据token和MySQL规约法则生成AST abstractsyntaxtree 目的 读写分离 数据分片 SQL 词法分析 语法分析 AST 改写 路由SQL 10 kingshard的sharding方案 10 sharding相关概念分片方式 Hash Range和Time RangeShardkey类型 整型和MySQL标准时间类型子表 分表名 序号 最大支持9999张子表 例如 table 0001 table 1023落在不同的DB实例 由配置指定Shardkey到实例采用两级映射方案 shard key sub table DB config config 11 kingshard的sharding方案 11 select fromtabwhereid 10 range hash time config select fromtab 0001whereid 10 calculatetableindex 12 kingshard的连接池设计 12 目标复用连接 降低后端DB压力方式一个DB实例对应一个连接池连接池个数上限可配置 无空闲连接则阻塞效果前端高并发 MySQL负载不会抖动限制连接池个数 保护后端DB不至于宕机 13 kingshard的连接池设计 13 kingshard DB1 ConnPool ConnPool DB2 conn conn conn pop push 连接取出时 重置字符集重置Database 14 kingshard支持预处理的方案 14 作用防SQL注入 参数不做语义解析 只当做字符串提升效率 SQL不再需要重复解析示例preparestmt1from SELECT FROMtblWHEREid set a 100 executestmt1using a deallocatepreparestmt1 15 kingshard支持预处理的方案 15 核心矛盾prepare状态与会话 连接 绑定连接池机制要求连接复用简单的方案将prepare deallocate内的所有语句保持在同一个连接上执行缺点 与事务不同 很多程序不执行deallocate 导致连接被占用不放 16 kingshard支持预处理的方案 16 kingshard支持预处理方案流程图 17 kingshard的后端DB的高可用 17 方式使用独立goroutine检测DB状态定期检测每台DB是否正常 周期和重试次数均可配置效果自动摘除宕机或网络中断的DB自动挂载恢复正常的DB kingshard DB Master DB Slave1 DB Slave2 ping ping ping node 18 业务使用kingshard的高可用方案 18 19 kingshard对安全与审计的支持 19 客户端IP限制用户自定义IP白名单列表SQL黑名单用户定义黑名单SQL列表正则匹配方式 例如 deletefrommytable selectcount frommytablewhereid 慢SQL记录用户自定义慢日志耗时大小 20 kingshard的演进计划 20 重构SQLParser支持复杂SQL的解析管理端改造以API的方式支持管理命令Web界面操作与展示 21 总结 21 为什么用Golang开发开发效率非常高性能并不差 相当于C语言的70 80 便捷的并发编程部

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论