- 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不至于宕机 * * * * * * 用户使用: 简单高效 核心功能: 读写分离、数据分片 可运维性 * * * * * * * * * * 淡化 * *
您可能关注的文档
最近下载
- 建筑垃圾清运投标方案(技术方案).docx
- python351入门指南中文版打印版.docx VIP
- PEP五年级英语下册Unit 4 Part A .pptx VIP
- 神经病学(人卫九版)3-颅内压增高.pptx
- 2023—2024学年山东省济南市市中区八年级上学期期中考试英语试卷(含听力).doc VIP
- 颅脑损伤-参考PPT.ppt
- 天津市河东区第一0二中学2022-2023学年七年级上学期数学期中测试卷【含答案】.pdf VIP
- 四年级语文走月亮课件.pptx VIP
- 浙江省宁波市2023-2024学年高二上学期期中地理试题含解析.pdf VIP
- 人教版五年级上册科学《根和茎》课件图文.ppt
文档评论(0)