lbpool是根据MySQL的复制机制设计的支持负 载均衡的JDBC连接缓冲池。一般来说,MySQL复制机制涉及一台主服务器(master server)和多台复制服务器(slave server),数据库写操作只发生在主服务器上,而读操作则可以分布到主服务器及其他复制服务器。
虽然lbpool是为MySQL设计的,但也可以方便地扩展到其他支持复制功能的数据库系统,如PostgreSQL等。
负载均衡策略
负载均衡算法主要基于并发连接数,负载和slave的状态等参数来选择合适的服务器:
- 是否可访问;
- 复制是否依然在进行;
- 复制是否已经落后主服务器;
- 负载是否太高;
- 数据库连接数是否太多。
一些有用的特性
- 实时重负载均衡:即当客户端断开,或某服务器断线或重新在线后,系统会对现有数据库连接进行重分配以达到动态的负载平衡;
- 如果所有服务器都断线,则系统在一段时间内会阻塞数据库查询,避免马上抛出SQLException,当某台机器在线后,则数据库查询马上恢复正常;
- 如果某台服务器断线,或复制服务器与主服务器断开或滞后很长时间,则原有连接会被切换到其他服务器,而且并不影响正在进行过程的查询;
- 复制服务器信息配置在主服务器上,支持动态配置,因此可以方便地增加、删除或维护复制服务器。
可与Hibernate的集成?
目前很多系统都采用Hibernate做持久层,而Hibernate支持C3P0, DBCP等JDBC数据库连接缓冲池。
而我公司在做的网站监测项目
YouMonitor.Us也是采用Hibernate做数据持久层的,我们目前采用C3P0缓冲池,但C3P0不支持在主服务器、及多个复制服务器间分布查询操作。
因此,JDBC连接缓冲池与Hibernate的集成性显得特别重要。
目前不能确定lbpool是否可以与Hibernate集成;若不支持,是否可方便地修改源码来支持?
分享到:
相关推荐
预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池...
预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。连接池的基本工作原理见下图 2。 连接池的关键问题分析包括并发问题和多数据库服务器和多用户问题...
当应用需要与数据库交互时,不是每次都去建立新的连接,而是从连接池中获取一个已存在的连接。使用完毕后,连接会归还到池中,以便其他请求重复使用。这种方式避免了频繁创建和销毁连接的开销,提升了系统的响应速度...
它预先创建并维护一定数量的数据库连接,当应用程序需要连接数据库时,可以从连接池中获取一个已经建立好的连接,用完后归还而不是关闭,从而避免了频繁的创建和关闭连接带来的性能开销和资源浪费。 **JDBC连接池...
1. **c3p0**:这是一个开源的JDBC连接池,由Miquel Arqueros创建。c3p0提供了一套完善的连接池管理机制,包括连接的初始化、测试、回收和超时处理。它支持多线程环境,可以自动检测并修复失效的连接。此外,c3p0还...
1. **选择连接池实现**:首先,我们需要选择一个合适的数据库连接池实现,如Apache的DBCP、C3P0、HikariCP或Tomcat JDBC连接池等。这些连接池库提供了管理和维护数据库连接的功能。 2. **配置连接池**:在应用的...
"自定义高并发jdbc连接池"是一个专为处理大量并发请求而设计的解决方案,它允许应用程序高效地管理和复用数据库连接,从而减少数据库连接创建与释放的开销,提高系统的整体性能。 JDBC(Java Database Connectivity...
2. **获取连接**:当应用需要访问数据库时,从连接池中获取一个已存在的连接,如果池内没有空闲连接,则等待或者抛出异常。 3. **归还连接**:使用完毕后,将连接返回给连接池,而不是直接关闭,以便后续请求可以...
2. 请求连接:当应用程序需要访问数据库时,向连接池申请一个连接,连接池会检查当前是否有空闲连接,如果有则直接返回,否则等待或创建新的连接。 3. 使用连接:应用程序获取到连接后,进行数据库操作。 4. 归还...
2. C3P0:这是一个开源的JDBC连接池,提供了比DBCP更高级的功能,如连接测试、空闲连接检测、自动扩展等。C3P0通过组合多个数据源来实现连接池,可以更好地控制并发和资源管理。 这些jar包的收集意味着开发者可以...
连接池如同一个预创建的数据库连接集合,应用程序在需要时从池中获取连接,用完后归还,而不是直接关闭。这种方式减少了连接的创建和销毁次数,提高了系统性能,并且可以通过设置最大连接数来防止过度消耗资源。 ...
Java JDBC 连接池是Java开发中非常关键的一部分,它能有效地管理数据库连接,提高应用程序的性能和效率。本实例提供了完美的Java JDBC连接池配置,适用于Oracle、MySQL和SQL Server等主流数据库,允许开发者轻松地在...
DBPool.java 可能是自定义的连接池实现,而 ProxoolDemo.java 可能是使用Proxool连接池的一个示例。Proxool 是一个轻量级的数据库连接池实现,它提供了线程安全的连接管理和性能监控功能。 在ProxoolDemo.java中,...
为了解决这一问题,引入了JDBC连接池技术,它能够预先创建并维护一定数量的数据库连接,当应用程序请求连接时,可以从池中获取一个现有的连接,而无需每次都创建新的连接,从而极大地提高了数据库访问效率。...
Java JDBC(Java Database Connectivity)是Java平台中用于与数据库交互的一组接口和类,它使得开发者可以使用标准的Java API来访问各种类型的...在处理大量并发请求或高负载场景下,使用JDBC和连接池是必不可少的。
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。C3P0的主要特点包括: 1. **连接测试**:C3P0提供了多种测试策略,确保获取到的连接是可用的。 2. **连接池初始化和最大...
1. C3P0:一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。 2. DBCP(Apache Commons DBCP):Apache提供的数据库连接池,基于Jakarta-pool实现。 3. HikariCP:性能极高的连接池...
BoneCP_Demo 是一个示例项目,展示了如何在Java应用中集成并使用BoneCP连接池进行数据库操作。通过理解和实践这个Demo,开发者可以更好地理解JDBC连接池的工作原理,以及如何利用BoneCP提升数据库操作的性能和效率...
spring声明式事务管理+jdbc+连接池 包内为代码,下载可直接执行。 一直用s2sh,感觉hibernate不好用,所以写了一个spring声明式事务管理+jdbc+连接池。