美文网首页
连接池原理

连接池原理

作者: 传葱 | 来源:发表于2019-06-12 09:16 被阅读0次

    什么是连接池

    • 上游对下游发起的请求,比如数据库连接池crud操作

    为什么使用连接池?

    • 如果不使用连接池,每次请求到达的时候建立连接也是可以的,但是随着请求并发变大,需要优化连接步骤:
    • 建立连接:(需要优化)
    • 发生请求:CRUD
    • 销毁连接(需要优化)
    • 每次请求到来需要建立连接,完成之后销毁连接,连接的创建和销毁带来很大的资源消耗,所有类似线程池,需要一个存储结构放置空闲的连接,以备下次连接来使用

    连接池的实现

    使用DruidDataSource,该类中变量分分为三种:记录状态的, 比如连接数量connectCount,关闭数量closeCount等;存储相关DruidConnectionHolder[] connection 这个数组中保存建立的连接对象,还记录活跃数量activeCount,废弃数量discardCount等,第三个记录线程DestroyTask destroyTask; CreateConnectionThread createConnectionThread; 这些大体上可以看出连接池中对象类型和大致功能

    连接池核心功能

    image.png
    DruidConnectionHolder[] connections;
    
    createConnection()
    getConnection()
    recycle()
    
    • 根据需要决定是否创建新的Connection,如果需要调用createConnection(),把创建好的connection对象保存到DruidConnectionHolder[] 中, 然后等待的线程使用创建好的连接getConnection(), 使用完之后connection对象不会被销毁,而是回收到数组中:recycle()方法


      image.png
    • 这个锁控制同一时间只有一个线程访问线程池,对线程池相关的数据进行修改

    相关文章

      网友评论

          本文标题:连接池原理

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