美文网首页
利用commons pool2开发高性能的连接池

利用commons pool2开发高性能的连接池

作者: bigseaken | 来源:发表于2017-08-01 16:55 被阅读0次

    利用commons pool2开发之前先看他的一个最佳实践 -- JedisPool。
    JedisPool是redis client的连接池,内部池对象的管理就是采用commons pool2。采用它的有很多优点是,例如:避免过多的创建连对象、自动处理最大空闲数量,避免自己处理线程问题等等。

    JedisPool

    只是做初始行为 设置ip host ssl等信息。



    真正执行初始化 获取资源 归还资源的行为都是用pool来实现,pool内部含有GenericObjectPool ,GenericObjectPool就是管理池对象的最终类,它实现了ObjectPool接口,把borrowObject returnObject的方法都实现了.

    JedisFactory

    实现PooledObjectFactory ,GenericObjectPool 内部创建池对象就是通过这一个类,以及销毁池对象也是,具体的实现就端口client和关闭client连接。

    JedisPoolConfig

    定制专属的配置信息。

    利用commons pool2 创建连接池大概就是这样,下来我们也可以通过commons pool2 创建自己的对象连接池

    • 需要放进连接池的对象
    • 对象生产工厂


    • 连接池

    • 测试
    这是个最简单的案例 明白commons pool2的使用

    原理

    核心方法 borrowObject


    默认 borrowMaxWaitMillis < 0 由于创建池对象到达最多数量时,就会执行到idleObjects.takeFirst() ,这个方法就会无限阻塞,一直等待有空闲的池对象。所有使用玩池对象的时候一定要归还。

    create

    returnObject


    归还的时候简单 判断空闲数量是否大于最多空闲值,对齐进行销毁 或 放进空闲队列里;

    相关文章

      网友评论

          本文标题:利用commons pool2开发高性能的连接池

          本文链接:https://www.haomeiwen.com/subject/djljlxtx.html