- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
kingshard数据库中间件设计与实现
kingshard的连接池设计 * kingshard DB1 Conn Pool Conn Pool DB2 conn conn conn ...... pop push 连接取出时: 重置字符集 重置Database kingshard支持预处理的方案 * 作用 防SQL注入,参数不做语义解析,只当做字符串 提升效率,SQL不再需要重复解析 示例 prepare stmt1 from “SELECT * FROM tbl WHERE id = ?”; set @a = 100; execute stmt1 using @a; deallocate prepare stmt1; kingshard支持预处理的方案 * 核心矛盾 prepare状态与会话(连接)绑定 连接池机制要求连接复用 简单的方案 将prepare/deallocate内的所有语句保持在同一个连接上执行 缺点:与事务不同,很多程序不执行deallocate,导致连接被占用不放 kingshard支持预处理的方案 * kingshard支持预处理方案流程图 * * * * * * 用户使用: 简单高效 核心功能: 读写分离、数据分片 可运维性 * * * * * * * * * * 淡化 * * kingshard数据库中间件设计与实现 * 陈 非 github: @flike weibo: @chenfei001 Agenda 业务使用MySQL的痛点 主流MySQL Proxy方案 kingshard的设计与实现 总结 * 业务使用MySQL的痛点 业务实现读写分离 在业务中配置主库、从库的IP和端口 DB宕机或上下线业务受影响 运维协调开发修改业务配置 * client db_master db_slave1 db_slave2 主从同步 主从同步 业务使用MySQL的痛点 * 业务实现分库分表 改写SQL语句 将SQL路由不同的DB 聚合结果集 数据库中间件的目标 * 减轻开发的工作量 支持SQL读写分离 支持数据分片 开发更加专注于业务逻辑,提升效率 降低DB的运维与业务的耦合度 DB的上下线业务无感知 减轻DBA的工作负担 主流MySQL Proxy方案 * 业务已有方案 Atlas 扩展功能较难 基本不维护 Cobar 功能简单 基本不维护 MyCat 易用性较低 开始商业化 kingshard的设计目标 * 核心指导思想 简单有效 核心功能 读写分离 数据分片 提升DB的可运维性,减轻DBA负担 kingshard的架构设计 * 整体架构图 kingshard的SQL Parser * SQL Parser的设计与实现 词法分析器 将SQL切分成token 目的:作为语法分析器的输入 语法分析器 根据token和MySQL规约法则生成AST(abstract syntax tree) 目的:读写分离、数据分片 SQL 词法分析 语法分析 AST 改写/路由 SQL kingshard的sharding方案 * sharding相关概念 分片方式:Hash,Range和Time_Range Shard key类型:整型和MySQL标准时间类型 子表:分表名+序号,最大支持9999张子表。 例如:table_0001,table_1023 落在不同的DB实例,由配置指定 Shard key到实例采用两级映射方案 shard_key sub_table DB config config kingshard的sharding方案 * select * from tab where id = 10 range hash time config select * from tab_0001 where id = 10 calculate table index kingshard的连接池设计 * 目标 复用连接,降低后端DB压力 方式 一个DB实例对应一个连接池 连接池个数上限可配置,无空闲连接则阻塞 效果 前端高并发,MySQL负载不会抖动 限制连接池个数,保护后端DB不至于宕机 * * * * * * 用户使用: 简单高效 核心功能: 读写分离、数据分片 可运维性 * * * * * * * * * * 淡化 * *
您可能关注的文档
- JavaScript-4.ppt
- java中的时间类的处理.doc
- java基本词汇.doc
- Java基础中的那些坑.docx
- java开发工具jcreator.ppt
- java特点.docx
- java简介篇.doc
- IC工艺_10_1new.ppt
- JAVA循环结构.ppt格式.ppt
- IDC_云.pptx
- 新高考生物二轮复习讲练测第6讲 遗传的分子基础(检测) (原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第3讲 酶和ATP(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第8讲 生物的变异、育种与进化(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(检测)(原卷版).docx
文档评论(0)