源码研究mycat
基于mycat1.6,旨在揭示mycat内部的实现原理,主要从协议篇,网络篇,内存篇,路由解析,SQL解析等方面。
中间件兴趣圈
《RocketMQ技术内幕》一书作者、RocketMQ开源社区优秀布道师、CSDN2020博客之星TOP2,主打成体系剖析java中间件,已发布RocketMQ、Kafka、Dubbo、Sentinel、Canal、ElasticJob、ElasticSearch等15个专栏。
展开
-
源码研究Mycat1.6目录检索
源码分析MyCAT1.6目录:1、源码研究mycat之mysql通信协议篇之握手认证协议2、源码分析mycat1.6之mysql通信协议篇之COM_QUERY(SELECT语句报文解析)3、源码分析mycat1.6之mysql通信协议篇之存储过程调用4、源码研读Mycat1.6之网络篇---前端线程模型(应用程序与mycat交互篇)上篇5、源码分析mycat1.6之网络篇...原创 2018-01-31 15:02:55 · 7843 阅读 · 0 评论 -
源码研究mycat之mysql通信协议篇之握手认证协议
1、mysql 通信协议使用小端序列进行传输。大端序列与小端序列:小端法(Little-Endian)就是低位字节排放在内存的低地址端即该值的起始地址,高位字节排放在内存的高地址端。 大端法(Big-Endian)就是高位字节排放在内存的低地址端即该值的起始地址,低位字节排放在内存的高地址端。通俗的讲,小端法,接收方先接收到整数的低位部分。大端法,接收方先接收到正式的高位部分。比...原创 2017-04-07 15:05:56 · 5086 阅读 · 1 评论 -
源码分析mycat1.6之mysql通信协议篇之COM_QUERY(SELECT语句报文解析)
本文重点分析 COM_QUERY 命令,关注select命令的发送与结果集响应协议解析。相关协议定义请参考:https://dev.mysql.com/doc/internals/en/com-query.html请求响应报文:https://dev.mysql.com/doc/internals/en/com-query-response.html#packet-COM_QUERY_Re...原创 2017-04-17 09:37:39 · 4694 阅读 · 0 评论 -
源码分析mycat1.6之mysql通信协议篇之存储过程调用
1、环境搭建创建一个测试存储过程,支持入参与出参。DELIMITER&&createPROCEDUREtest_proc(ina_idint,outr_user_namevarchar(50))BEGINSELECTa.user_nameINTOr_user_name...原创 2017-04-18 12:16:53 · 3587 阅读 · 1 评论 -
源码研读Mycat1.6之网络篇---前端线程模型(应用程序与mycat交互篇)上篇
Mycat 使用的线程模型也是基于 Reactor 主从设计模式,其设计类图如下:NIOAcceptor,在Reactor主从模式中扮演Acceptor与主Reactor角色,主要承担客户端的连接事件(accept)。 NIOReactorPool,从Reacotr池,acceptor监听客户端连接后,将从该Reactor池中随机选取一个Reactor进行注册读、写事件。 NioRea...原创 2017-04-10 11:46:07 · 2962 阅读 · 1 评论 -
源码分析mycat1.6之网络篇---前端线程模型下篇(读写事件篇)
1、mycat 前端读事件处理程序的入口处:NIOReactor的run方法:直接调用的方法为AbstractConnection的aysnRead方法。NIOSocketWR,IO处理的核心入口:@Override public void asynRead() throws IOException { ByteBuffer theBuffer =...原创 2017-04-11 12:08:15 · 2833 阅读 · 2 评论 -
源码分析mycat1.6之网络篇----前后端连接交互设计(mycat命令处理流程)
本章将从如下3个方面剖析mycat前后端交互原理:1、mycat握手认证阶段、命令处理阶段切换2、mycat前后端如何交互3、后端连接及IO线程模型。1、mycat握手认证阶段、命令处理阶段切换从上篇mycat前端线程模型可以看到,mycat对应用程序来说将自己伪装成mysql服务器(实现mysql通信协议)接受客户端的命令,比如查询,更新等命令。mycat前端线程模型基于主从...原创 2017-04-20 09:38:52 · 4889 阅读 · 3 评论 -
源码分析MyCat----优化篇之支持ER分片多语句插入(基于1.6)
1、ER分片支持多语句插入优化1.1问题抛出一个经典的使用场景,订单表(t_order)与订单明细(t_order_item),订单明细表ER分片与订单表。代码层次一般有如下实现(OrderDao):voidcreateOrder(Orderorder);voidcreateOrderItem(IntergerorderId,OrderItemitem...原创 2017-05-16 09:47:25 · 2417 阅读 · 0 评论 -
源码分析MyCat之SQL解析篇-----sql解析引擎druid之抽象语法树(mycat1.6)
1、Druid解析引擎概要DruidSQL解析引擎主要分为三个部分,AST抽象语法树,词法解析,语法解析。AST抽象语法树,语法解析的结果,由众多AST语法对象组成一颗树,而词法分析就是解析出一个一个关键字,作为语法解析的输入。Druid SQL解析引擎整体介绍,推荐一篇文章:http://www.tuicool.com/articles/NNJNbmF故本节重点认识一下...原创 2017-05-16 18:14:25 · 12993 阅读 · 2 评论