基于代理的分库分表中间件.pptx_第1页
基于代理的分库分表中间件.pptx_第2页
基于代理的分库分表中间件.pptx_第3页
基于代理的分库分表中间件.pptx_第4页
基于代理的分库分表中间件.pptx_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、基于代理方式的分库分表中间件dbproxy,目的地技术部 周文斌,目录,解决的问题 总体架构 前端连接管理 路由模块 SQL执行模块 后端连接管理 负载均衡 权限控制,2020/8/14,Dbproxy是什么?,数据库代理 关系数据库的路由器 关系数据库升级到大数据的应用中间件 基于开源的mycat实现 支持数据的水平拆分,2020/8/14,解决的问题,数据的增长存储问题 数据库连接的集中式管理 数据库的透明化扩展 数据库的透明化迁移,2020/8/14,实现的功能,分库分表 读写分离 负载均衡 服务注册发现 权限控制,目录,解决的问题 总体架构 前端连接管理 路由模块 SQL执行模块 后端

2、连接管理 负载均衡 权限控制,2020/8/14,总体架构,mysql,mysql,pg,BackendConnectionManager,pgDriver,FrontendConnectionManager,协议适配(mysql),协议解析,Sql解析,规则路由,Sql executor,结果合并,响应报文,客户端,客户端,MysqlDriver,Mysql数据包,目录,解决的问题 总体架构 前端连接管理 路由模块 SQL执行模块 后端连接管理 负载均衡 权限控制,2020/8/14,前端连接管理,1. 跟客户端建立连接 2. 进行权限认证 3. 前端连接的创建及销毁,协议解析模块,MySQ

3、LMessage 封装了Mysql协议包的操作 方便对TCP的数据进行Mysql协议解析,3byte,1byte,n bytes,消息长度,报文数据,序号,消息头,消息体,1byte,n byte,命令,参数,mysql报文,请求消息体,协议解析模块,3byte,1byte,n bytes,3byte,1byte,n bytes,3byte,1byte,n bytes,3byte,1byte,n bytes,3byte,1byte,n bytes,Result Set Header,Field,EOF,Row Data,EOF,ResultSetHeaderPacket, FieldPacke

4、t, EOFPacket, RowDataPacket,Mysql响应报文,目录,解决的问题 总体架构 前端连接管理 路由模块 SQL执行模块 后端连接管理 负载均衡 权限控制,2020/8/14,路由模块,SQL解析 DruidParse 分库标示 路由规则 路由函数 读写分离 特殊路由 事务 强制读主库 无分库标示 qmq路由,SQL解析,获取分库标示,定位分片 参数 1分片 2分片 解析语句,定位主从 SelectStatement 从库 UpdateStatement,DeleteStatement,InsertStatement 主库,2020/8/14,路由配置,2020/8/14

5、, select now() ,数据库节点对应的dn0, dn1,路由配置,每个表都会配置分库规则 每条规则对应一个路由函数, oid afterOneDayByOid , yyyy-MM-dd 2015-09-24 180 ,路由模块,路由函数 路由算法 RuleAlgorithm,RuleAlgorithm,AbstractPartitionAlgorithm,PartitionByOIDAfterDay,PartitionByDateAfterDay,路由模块,Sql语句,DruidParser,Router,Write,Read,update,select,select * from

6、table where id=1,update table set status =2 where id=1,SelectStatement,select * from table where id=1,UpdateStatement,update table set status =2 where id=1,读写分离,事务 begin transaction select sql update sql insert sql commit transaction( rollback transaction) 直接路由到Write库,直到事务提交/回滚 强制读主库 /*balance*/方式 R

7、eadMaster注解,特殊路由,2020/8/14,19,无分库标示 select语句,会查询所有的库表,将数据汇总后,返回给客户端 insert语句,直接报错 update语句,会更新所有库表的数据 delete语句,会删除所有的库表的数据 qmq_msg_queue的路由 参照同一事务内其他sql的路由 如果没有其他sql,则执行默认的路由,特殊路由,2020/8/14,20,目录,解决的问题 总体架构 前端连接管理 路由模块 SQL执行模块 后端连接管理 负载均衡 权限控制,2020/8/14,SQL执行模块,ResponseHandler,SingleNodeHandler,Mult

8、iNodeHandler,CommitNodeHandler,RollbackHandler,SingleNodeHandler.execute() 路由到一个分片时被执行执行,MultiNoderHandlerNodeHandler.execute() 路由到多分片时被执行执行,CommitNodeHmit() 提交事务执行,CommitNodeHandler.rollback() 回滚事务执行,SQL执行模块,NonBlockSession: 一个连接的会话,绑定前端连接跟后端连接 无事务:每个sql在不同连接执行 有事务:所有sql在同一个连接上执行,SQL执行模块,NonBlockin

9、gSession,con1,con2,con3,Sql1, sql2, sql3,sql1,sql2,sql3,NonBlockingSession,con1,sql1, sql2, sql3,commit,Sql1,sql2, sql3,commit,release con1,release con1,release con2,release con3,无事务,有事务,前端连接,后端连接,SQL执行过程,客户端,connection,Sql请求,路由,Mysql报文,postgresql,SQL执行器,Sql语句,报文转换,执行结果,Mysql响应报文,执行结果,Sql解析,mysql,目录

10、,解决的问题 总体架构 前端连接管理 路由模块 SQL执行模块 后端连接管理 负载均衡 权限控制,2020/8/14,后端连接管理模块,管理后端数据库连接 创建新的数据库连接 回收连接 分片主从管理 控制读写分离,后端连接管理,管理后端真实数据库的连接,DB,BackendConnctionManger,Sql执行请求,Connection,执行结果,目录,解决的问题 总体架构 前端连接管理 路由模块 SQL执行模块 后端连接管理 负载均衡 权限控制,2020/8/14,负载均衡,注册发现 使用zookeeper实现,dbproxy启动的时候在zookeeper上注册服务地址,客户端监听对应节

11、点的信息,如果有服务上线,或者下线,动态的获得dbproxy的服务列表,然后动态生成数据源,供客户端使用。,zookeeper,dbproxy,dbproxy,dbproxy,register,client,datasource,dynamicDataSource,subscribe,create,injection,负载均衡,负载均衡,是使用了spring的动态数据源AbstractRoutingDataSource,扩展了该数据源,从动态数据源中根据一定的负载均衡策略,选出一个可以使用的数据源。 (1). 随机策略 :随机选一个可用的数据源。 com.qunar.des.dbproxy.d

12、atasource.balance.RandomStrategy (2). 轮询策略 :从可用的数据源中,按照顺序轮询。 com.qunar.des.dbproxy.datasource.balance.RoundRobinWeightStrategy 可以通过实现BalanceStrategy.getNext实现不同的负载均衡策略。,Dbproxy分组,通过为dbproxy配置不同的组,可以灵活的组装不同的dbproxy为一个集群,dbproxy,dbproxy,dbproxy,dbproxy,dbproxy,dbproxy,dbproxy,dbproxy,dbproxy,des.dbproxy.order,des.dbproxy.voucher,des.dbproxy.task,目录,解决的问题 总体架构 前端连接管理 路由模块 SQL执行模块 后端连接管理 负载均衡 权限控制,2020/8/14,权限控制,基于appcode进行权限控制 新增应用Qconfig动态增加appcode 增加新机器就已经有权限了,2020/8/14,监控报警

温馨提示

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

评论

0/150

提交评论