现在的位置: 首页 > 综合 > 正文

Proxool源码分析

2018年05月20日 ⁄ 综合 ⁄ 共 979字 ⁄ 字号 评论关闭

 

入口点:ProxoolFacade. 

 

启动顺序:

ProxoolDriver ->  ProxoolFacade.registerConnectionPool ->

 

调用顺序

ProxoolDriver.connect ->  ConnectionPoolManager.getConnectionPool -> connectionPool.getConnection

-> ProxyConnection  = prototyper.buildConnection -> proxyConnection.open();

->  ProxyFactory.getWrappedConnection(proxyConnection)

-> WrappedConnection

 

之后的调用都使用了proxy模式

 

关闭链接:

WrappedConnection -> close -> proxyConnection.close() 

->  openStatements.close -> connectionPool.removeProxy

 

真正关闭链接:

HouseKeeper ->  connectionPool.removeProxyConnection ->   CompositeConnectionListener.onDeath ->

ConnectionListenerIF.onDeath

 proxyConnection.reallyClose(); 

proxyConnections.remove(proxyConnection); 

 

----------------------------------

连接池设计原则:

1. 当没有请求的时候,连接池=0

2. 当有稳定的请求的时候,通过复用connection提高性能。

3. 当突然爆发链接的时候,增加连接池能力

4. 当高峰期过后,能够自动减少连接池能力。

 

5. 当connection开启了事务之后,这个链接被独占了,无法被分配。

http://www.zhujiangroad.com/html/soft/s2928.html 

基于JDBC的数据库连接池技术研究与设计 

。 连接添加一个引用计数器

。当用户closeconnection 的时候,判断引用次数》规定?是就删除;判断是否》最小连接数?小于就放回;否则删除。

。每个事务独占一个connection 

抱歉!评论已关闭.