基于amoeba的mysql分布式数据库学习(二)
?
?
三、启动过程解析
?
?
1.?加载Log4j配置文件,配置日志信息
2.?初始化ProxyRuntimeContext? ,比如加载配置文件,做一些初始化操作,设置一些上下文信息
3.?注册Reporter 功能
4.?创建Mysql客户端代理的连接管理器(该管理器管理客户端到代理服务器和代理服务器到服务端的连接,并调度分配连接)。
5.?读取IP权限表,并注册到Mysql连接管理器中
6.?最后启动服务。启动服务以后,Mysql 连接管理将监听指定的端口,开始提供服务。
?
?
?四、MysqlClientConnectionManager机制
?
???????MysqlClientConnectionManager 的类的继承关系如下:
?
??????
????? 其中Looping在run方法中做两件事情:
- 执行方法 willStart(),做端口监听的相关信息初始化操作,详细可见: ServerableConnectionManager.willStart() 方法
- iterate() : 轮询监听端口,以处理响应的网络事件(包括从客户端<--->Mysql代理服务器 和 Mysql代理服务器<-->mysql目标服务器之间的交互事件)
????? MysqlClientConnectionManager 在收到网络事件以后,调用 MySqlCommandDispatcher 对网络事件进行分发处理(详细的分发方法后续详细分析)。
?
?
?
?
?
这个产品的部分想法很不错,但是我感觉这个产品非常脱离现实.?
首先,一个企业里的应用,大部分都是以下情况:?
1.数据源使用的是应用服务器上配置的数据源.?
2.必须要有事务管理?
3.有很大可能是使用了spring+hibernate或者ibates?
对于以上情况,请教一下,这个产品如何提供支持??