• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

BeeCP: 一款轻量级JDBC连接池组件

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

BeeCP

开源软件地址:

https://gitee.com/Chris2018998/BeeCP

开源软件介绍:

English|中文图片

一:简介

小蜜蜂连接池(BeeCP)是一款轻量级JDBC连接池组件,它是中国开源社区的优质开源作品之一,具有性能高,代码轻,稳定好的特点。

  • Java语言开发,具有跨平台的优点

  • 基于参数驱动,支持多种参数设置, 支持配置文件导入

  • 适用多种数据库驱动(截止当前,主流数据库均可适配)

  • 支持本地事务与分布式事务

  • 产品采用JUC技术开发,具有单点缓存,信号量控制,队列复用,非移动等待,自旋控制, 连接和异常的传递,异步候补,安全关闭等亮点

  • 提供日志输出和监控工具

  • 健壮性好,敏捷应对意外情况(如断网,数据库服务崩溃)

  • 良好的接口扩展性

二:版本下载

Java7或更高

<dependency>   <groupId>com.github.chris2018998</groupId>   <artifactId>beecp</artifactId>   <version>3.3.2</version></dependency>

Java6

<dependency>   <groupId>com.github.chris2018998</groupId>   <artifactId>beecp</artifactId>   <version>1.6.10</version></dependency>

三:参考例子

:point_right: 例子1(独立应用)
BeeDataSourceConfig config = new BeeDataSourceConfig();config.setDriverClassName("com.mysql.jdbc.Driver");config.setJdbcUrl("jdbc:mysql://localhost/test");config.setUsername("root");config.setPassword("root");BeeDataSource ds=new BeeDataSource(config);Connection con=ds.getConnection();....
:point_right: 例子2(Springbooot)

application.properties

spring.datasource.username=rootspring.datasource.password=rootspring.datasource.url=jdbc:mysql://localhost/testspring.datasource.driverClassName=com.mysql.jdbc.Driver

DataSourceConfig.java

@Configurationpublic class DataSourceConfig {  @Value("${spring.datasource.username}")  private String user;  @Value("${spring.datasource.password}")  private String password;  @Value("${spring.datasource.url}")  private String url;  @Value("${spring.datasource.driverClassName}")  private String driver;  @Bean  @Primary  @ConfigurationProperties(prefix="spring.datasource")  public DataSource primaryDataSource() {    return DataSourceBuilder.create().type(cn.beecp.BeeDataSource.class).build();  }    @Bean  public DataSource secondDataSource() {   return new BeeDataSource(new BeeDataSourceConfig(driver,url,user,password));  }}

:sunny: 如果项目为Springboot类型,推荐使用数据源管理工具:BeeCP-Starter(无需代码开发配置即可,且自带监控界面)

四:功能导向

图片

五:运行时监控

为了更好的监控池内的运行情况(闲置连接数,使用中连接数,等待数等),产品内部提供了三种方式

  • 基于slf4j日志接口输出池内运行时信息

  • 提供Jmx方式监控

  • 提供方法级监控(可访问数据源的监控方法,得到一个可反映池内状态的Vo结果对象)

除以上方式,我们额外准备一套具有监控界面的解决方案:BeeCP-Starter

图片

图片

六:对比其他池

1: 性能对比

图片

机器:Win7_64 I3-7100 8G 池设置:初始0,最大32 测试基准光连接池提供光连接池被号称为史上最快的连接池

2: 技术对比(光连接池)
比较项BeeCPHikariCP
关键技术ThreadLocal,信号量,ConcurrentLinkedQueue,ThreadFastList,ConcurrentBag,ThreadPoolExecutor
相似点CAS使用,代理预生成,使用驱动自带Statement缓存
差异点支持公平模式,支持XA分布事务,强制回收持有不用的连接,单点缓存,队列复用,非移动等待,独创自旋控制/连接传递程序片段支持池暂停
文件37个源码文件,Jar包95KB44个源码文件,Jar包158KB
性能总体性能高40%以上(光连接池基准)
3: 启发池介绍

德鲁伊(druid:作者名为:温绍锦,一名任职中国阿里的技术专家,其作品最早发布于2012年,专为监控设计(尽管内部含有大量监控属性, 但在性能方面仍有不俗表现),在中国有超多用户,点赞数超过25k。

光连接池(HikariCP:作者名为:Brett Wooldridge, 一位现居日本的美国Java专家,其作品最早发布于2014年,是高性能连接池的典型代表,已经被Java领域广泛使用。

BeeCP中部分灵感受启发于它们,感谢两位大师的贡献。

七:扩展接口

1:连接工厂接口

产品内部提供两个工厂接口分别用来创建本地连接和Xa连接(一般不建议自扩展)

图片

数据源配置类(BeeDataSourceConfig)中有一个工厂类名配置项,支持4种类型

图片

参考例子

图片

2:连接密文解密

如果连接数据库使用的是密文,产品内部提供一个可供扩展的解密类,使用时将实现类名注入配置中即可。

图片

八:配置项

项名描述默认值
usernameJDBC用户名
passwordJDBC密码
jdbcUrlJDBC连接URL
driverClassNameJDBC驱动类名
poolName池名,如果未赋值则会自动产生一个
fairMode是否使用公平模式false(竞争模式)
initialSize连接池初始大小0
maxActive连接池最大个数10
borrowSemaphoreSize信号量许可大小min(最大连接数/2,CPU核心数)
defaultAutoCommitAutoComit默认值,未配置则从第一个连接上读取默认值
defaultTransactionIsolationCode事物隔离代码,未设置时则从第一个连接上读取默认值
defaultCatalogCatalog默认值 ,未配置则从第一个连接上读取默认值
defaultSchemaSchema默认值,未配置则从第一个连接上读取默认值
defaultReadOnlyReadOnly默认值 ,未配置则从第一个连接上读取默认值
maxWait连接借用等待最大时间(毫秒)8000
idleTimeout连接闲置最大时间(毫秒)18000
holdTimeout连接被持有不用最大允许时间(毫秒)18000
validTestSql连接有效性测试SQL语句SELECT 1
validTestTimeout连接有效性测试超时时间(秒)3
validAssumeTime连接测试的间隔时间(毫秒)500
forceCloseUsingOnClear是否直接关闭使用中连接false
delayTimeForNextClear延迟清理的时候时间(毫秒)3000
timerCheckInterval闲置扫描线程间隔时间(毫秒)18000
connectionFactoryClassName自定义的JDBC连接工作类名
enableJmxJMX监控支持开关false
printConfigInfo是否打印配置信息false
printRuntimeLog是否打印运行时日志false

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap