手动实现一个Java异步架构的Mysql驱动

背景

做毕业设计的时候感觉XXX管理系统实在是太烂大街了,所以想找点创新点来做,虽然项目还是个管理系统,但是希望可以做出来一个小组件放到项目上,所以想到了之前想做的一个异步架构的Jdbc,翻了下Mysql官网,就准备开始干了。

工作内容

1、Jdbc(Java-DataBase-Connector)是一套java连接数据库的标准接口,也就是之前常用的java.sql.Connection,java.sql.Statement,java.sql.ResultSet几个标准接口,但是很明显,这几个接口的调用方式都是同步调用,也就是在查询数据库的时候需要线程进入阻塞状态直到返回查询结果,所以打算用NIO的方式修改一下查询调用过程,用回调的方式处理查询结果,这样发送sql的线程就不用阻塞等待了。
2、mysql-connector/J是标准Jdbc连接Mysql最常用的一个连接库,在实现过程中借鉴了很多优秀的设计,首先就是实现Mysql官网的连接协议,协议的内容在Mysql官网可以查到:https://dev.mysql.com/doc/internals/en/client-server-protocol.html,所有的协议包都能在官网找到,而且类型也不算多,但是这个过程还是要花不少时间。
手动实现一个Java异步架构的Mysql驱动_第1张图片

3、实现了Mysql的协议包之后开始重新写协议包的收发逻辑,使得适配异步架构的连接调用过程,Mysql协议是一个基于TCP的协议,在实现异步NIO通信这点上使用了Netty,这部分代码和内容都比较多,那就只放一个和Mysql服务器连接的流程图好了。
手动实现一个Java异步架构的Mysql驱动_第2张图片

4、最后是写一些暴露出来提供调用的接口和方法。

项目地址

https://github.com/17fyang/async-jdbc

你可能感兴趣的:(java,mysql)