[ShardingSphere] sharding

本文章基于最新版5.0.0- 。
伪装这个词比较有意思 。记得看过这么一个电影,电影名称不记得了,但是电影场景大概是讲的男主角为了盗宝,需要潜入一个全副武装的大楼 。这个大楼有着非常先进的门禁系统,通过ID卡和人脸识别才能进入 。男主角偷取到一个工作人员的ID卡,找到黑客帮他造了一张ID卡,完美的骗过门禁系统进入到大楼偷到秘宝 。这里就需要伪装,满足系统的某些协议才能通过验证系统 。
-proxy也做了类似的事情 。和电影不同的是,做一个mysql的“黑客”需要先清楚它工作的原理,好在mysql官网中提供了很多相关资料,在-proxy源码中对于MySQL相关的代码都有注释说明这么实现的原因,例如MySQL请求包类型:

[ShardingSphere] sharding

文章插图
【[ShardingSphere] sharding】接下来这篇文章站在代码的角度分析-proxy是如何进行伪装的 。
一、Netty
因为把更多的时间花在的研读-proxy的内核方面,因此关于这块,我并没有进行详细的研究,只知道netty是一个高性能的客户端/服务器框架,它可以实现各种协议的服务端,而-proxy就是以netty为基础实现网络交互 。
网上搜了一些关于netty的简单的使用,对照-proxy,大致对-proxy的流程有了一个大概的思路 。
[ShardingSphere] sharding

文章插图
开启服务
-Proxy 启动流程最核心的是通过 izer 加载了 (编解码) 和 (业务处理器) 两个处理器 。这两个处理的具体工作都委托给了完成,有 MySQL 和两个实现 。
未完待续…