美文网首页Java
连接池技术

连接池技术

作者: shuixingge | 来源:发表于2016-05-11 15:28 被阅读112次

连接池技术作为创建和管理连接的缓冲池技术,目前已广泛用于诸如数据库连接等长连接的维护和管理中,能够有效减少系统的响应时间,节省服务器资源开销。其优势主要有两个:其一是减少创建连接的资源开销,其二是资源的访问控制。连接池管理的对象是长连接,对于HTTP连接是否适用,我们需要首先回顾一下长连接和短连接。

长连接是指客户端与服务器端一旦建立连接以后,可以进行多次数据传输而不需重新建立连接,而短连接则每次数据传输都需要客户端和服务器端建立一次连接。长连接的优势在于省去了每次数据传输连接建立的时间开销,能够大幅度提高数据传输的速度,对于P2P应用十分适合,但是对于诸如Web网站之类的B2C应用,并发请求量大,每一个用户又不需频繁的操作的场景下,维护大量的长连接对服务器无疑是一个巨大的考验。而此时,短连接可能更加适用。但是短连接每次数据传输都需要建立连接,我们知道HTTP协议的传输层协议是TCP协议,TCP连接的建立和释放分别需要进行3次握手和4次握手,所以对于需要频繁发送HTTP请求的应用,需要在客户端使用HTTP长连接。

HTTP连接是无状态的,这样很容易给我们造成HTTP连接是短连接的错觉,实际上HTTP1.1默认即是持久连接,HTTP1.0也可以通过在请求头中设置Connection:keep-alive使得连接为长连接。既然HTTP协议支持长连接,我们就有理由相信HTTP连接同样需要连接池技术来管理和维护连接建立和销毁。

连接的有效性检测:是所有连接池都面临的一个通用问题,大部分HTTP服务器为了控制资源开销,并不会
永久的维护一个长连接,而是一段时间就会关闭该连接。放回连接池的连接,如果在服务器端已经关闭,客
户端是无法检测到这个状态变化而及时的关闭Socket的。这就造成了线程从连接池中获取的连接不一定是有效的。这个问题的一个解决方法就是在每次请求之前检查该连接是否已经存在了过长时间,可能已过期。但是这个方法会使得每次请求都增加额外的开销。closeExpiredConnections()方法和closeIdleConnections()方法来解决该问题。前一个方法是清除连接池中所有过期的连接,至于连接什么时候过期可以设置,设置方法将在下面提到,而后一个方法则是关闭一定时间空闲的连接。

相关文章

  • DBUtiles的使用

    自定义连接池: 学会用resourcebundle来加载properties文件 运用连接池的技术 连接池技术原理...

  • Mybatis知识day03 连接池&动态SQL&多表查询

    一、Mybatis 连接池 1.1Mybatis 的连接池技术采用的是自己的连接池技术。在 Mybatis的 Sq...

  • 04 Mybatis连接池与事务

    一、连接池 我们在前面的 WEB 课程中也学习过类似的连接池技术,而在 Mybatis 中也有连接池技术,但是它采...

  • JDBC Druid数据库连接池

    Druid数据库连接池 使用Druid数据库连接池技术

  • C3P0连接池

    做常用的连接池技术!Spring框架,默认支持C3P0连接池技术。 核心类 CombopooledDataScor...

  • 数据库连接池

    数据库连接池 C3P0:数据库连接技术 Druid:数据库连接池实现技术,由阿里巴巴技术团队提供 Spring JDBC

  • 2.自定义连接池的实现

    常用的连接池技术包括:DBCP | C3P0,都是十分成熟稳定的连接池技术。本文目的是通过一个自定义的连接池来模仿...

  • 池技术使用-commons-pool2

    池技术 日常搬砖过程中对池技术的接触很多,最具代表的是连接池。连接池也是一种池技术,本质上都是对象池。common...

  • 数据库连接池

    二开源的连接池 Java规定,如果实现连接池技术,必须实现java.sql.DataSource接口 1 、DBC...

  • 据库连接池的原理

    这次我们采取技术演进的方式来谈谈数据库连接池的技术出现过程及其原理,以及当下最流行的开源数据库连接池jar包。 一...

网友评论

    本文标题:连接池技术

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