ECM
ECM
总版主
总版主
  • 社区居民
  • 忠实会员
  • 原创写手
阅读:931亚博国际平台老虎机官网:0

一步一步编写mysql中间件(学习Cobar和MyCat)----第一篇---初步了解和搭建AIO

楼主#
更多 发布于:2015-12-31 15:52


1 ? ? ? ?第一篇

从今天开始基于MyCat和Cobar的学习,一步一步编写数据库中间件,首先需要了解Cobar和MyCat的定位和作用,可以参考博文:http://blog.csdn.net/crazy_hunter/article/details/40826737
这里不在详细介绍,本文连载主要是为了自身学习,并且让更多的人了解神奇的中间件实现架构和原理,本人才疏学浅,有理解不够深刻的地方,希望能得到大家的指点。本文连载速度不会太快,涉及到的知识还是比较多,有些东西自己也需要一些学习和吸收,相关的学习博文也会在其中记录下来,只是想慢慢的、比较详细的记录下编写一个中间件的过程,和对此有兴趣的同行一起讨论、学习、提高。
话不多说,进入正题,首先还是截取Cobar的逻辑层次图瞅瞅:

图片:20141113105621211.jpg


Cobar和MyCat的使用主要是基于业务的正确设计,主要涉及到两个概念:
水平分库和垂直分库。
所谓水平分库:就是把数据量很大的表水平拆分到多个mysql数据库中
垂直分库:就是不同业务功能的表放在不同的mysql数据库中,例如权限模块的表和业务过程的数据表。(凭自己理解举例,前提是两个模块表没有关联哈)
其他相关的就不在详细说了。文字多了,看得头疼。
接下来就开始工程的搭建、简单结构图的展示和代码的编写。
首先,工程的搭建,直接建立maven的quickstart工程即可。
Maven的相关介绍不再说明。我在github上面建立的工程,后续有兴趣的朋友可以根据提交日志来一步步一起学习哈。路径贴一下:https://github.com/crazyhunter/Gof/tree/master/Gof-server

然后,简单的结构图展示

图片:20141113105628060.jpg


从结构可以看到中间件的大体结构,就是一个伪mysql-server和n个mysql-client组成,当然中间相关的语句解析、路由等没有列出来,后续再考虑,咱是一步步,不是跨步走哇。

最后,就准备开始编码咯。
先一步步实现中间件里面的server模块吧,这部分需要实现的东西主要有以下几个方面:
1、 用java建立一个SocketServer(Cobar是使用nio,MyCat是使用aio),咱还是用新的aio进行实现吧,客户通过mysql–utest –ptest –Ddbtest –P8087 –h127.0.0.1 能够连接到该server,这一步还不考虑协议交互的问题。
2、 需要研究mysql的交互协议,对客户端和server的交互进行补充开发,目标就是mysql命令能够建立长连接,并且随便发送一个命令过来,server能够接受并且成功返回结果,这一步还木有考虑到实际连接mysql的语句处理。这一步东西很多,需要很多篇才能搞定,哎,慢慢来吧。
今天咱就先实现server模块的第一步吧。(所有的代码暂时都先不考虑啥性能哇。No zuo No die)
1、 具体AIO的简单使用介绍。百度搜一搜就有了
2、 咱贴上代码的工程结构:

图片:20141113105633941.jpg


Config:暂时用来管理配置,先不考虑独立的配置文件模块
ServerConnection:前端连接对象
NetAcceptor:客户端请求接收处理器
ResourcePathUtil:资源文件路径工具类
SimpleDateUtil:日期处理工具类
GofServer:中间件核心
GofStartup:启动入口类
Log4jInitializer:log4j的配置加载和监控类
结构比较简单:
启动之后
Cmd下面:mysql -utest-ptest -Ddbtest -P8087
Console里面展示:

图片:20141113105701859.jpg


简单的aio请求接收server就搞定了,大神勿喷。

?

?

?

?

?

?

?

异常中心网是一家专门收集整理程序员编程过程中遇到的常见异常(exception)以及各种异常问答中心的网站。异常中心网旨在,减少程序员在编码遇到异常,处理各种异常时间和痛苦,让程序员能更愉快的、快速的定位异常并查找对应的异常解决方案。异常中心网诚心打造最完美的编程社区为程序员用户服务,努力成为最好的程序员乐园程序员社区程序异常中心程序bug中心异常问答中心

?

喜欢0 评分0
游客

返回顶部