泥瓦匠进阶:连接池原理设计并不难

  • 时间:
  • 浏览:0
  • 来源:大发uu快3_uu快3注册登录_大发uu快3注册登录

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢!

目录

  • 连接
  • 连接池产生意味
  • 连接池实现原理
  • 小结

TEMPERANCE:Eat not to dullness;drink not to elevation.

节制:食不过饱,饮不过量。

一、连接

许多是连接?

连接,代表上游对下游的通信或会话。比如客户端连接服务器、服务器连接数据存储等

连接其通信的基本步骤,很相似于 HTTP 操作:

  1. 上游对下游建立另两个连接(客户端与服务器时需建立连接。比如点击某个超级链接)
  2. 上游通过连接,发送请求(建立连接后,客户端发送请求给服务器)
  3. 上游通过连接,收到响应(服务器接到请求后,响应其响应信息)
  4. 上游关闭连接,释放连接资源(客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,而且客户机与服务器断开连接)

再深入点,HTTP 持久连接是许多?HTTP 持久连接是指用同另两个 HTTP 底层的 TCP 连接来发送/接收多个 HTTP 请求/响应。扩展点,只时需在头部设置:

Connection: Keep-Alive

为许多要有持久连接?每次都不 从建立连接结速也可不后能 达到结果,而且最后是关闭连接释放资源。这统统 引出连接池产生意味 。

二、连接池产生意味

先看一下常见的 mysql-connector-java 包驱动下面 ConnectionImpl 源码:

trackConnection()

execSQL()
commit()

close()

对 MySQL 多半是进行连接(connection),增详细查并提交(execSQL、commit),关闭连接(close)操作,而且实现业务相关逻辑。其操作也很清晰:

  1. 建立连接
  2. 发送请求(数据的 CRUD 操作)
  3. 关闭连接

但,为什么么么在会时需有连接池?

其觉得业务量流量不大,并发量统统 大的清况 下,连接临时建立详细可不后能 。

但并发量起来,达到百级、千级,其中建立连接、关闭连接的操作会造成性能瓶颈,统统得考虑连接池来优化上述 1 和 3 操作:

  1. 取出连接(业务服务启动时,初始化若干个连接,插进连接存储中)
  2. 发送请求(当有请求,从连接存储中中取出)
  3. 放回连接(执行完毕,连接放回连接存储中)

这里对连接存储的数据社会形态,并维护连接,统统 连接池。

三、连接池实现原理

连接池原理,可不后能 具体看下阿里巴巴 Druid 包的 DruidDataSource 源码:

DruidConnectionHolder[] connections;

createConnection()
getConnection()
recycle()

连接池实现原理统统 难,DruidDataSource 即德鲁伊连接池,可不后能 核心设计接口:

  1. createConnection:服务启动 init ,会创建一批指定数量的连接插进 connections 数组
  2. getConnection:统统 每次请求,不用新建另两个连接。统统 从 DruidConnectionHolder[] connections 数组中取出另两个连接
  3. recycle:每次请求结速后,都不 关闭连接,统统 回收连接到 connections 数组

其蕴含个重入锁 ReetrantLock,具体作用如下:

  • 获取另两个连接,锁住
  • 返回该连接,使用连接
  • 使用完毕,回收连接,并释放锁

四、小结

核心连接池也就没法 点东西,具体还时需考虑许多点如下:

  • 连接池连接设计遵守 LRU 策略,性能的关键点是连接是不是 LRU 最好的方法重用。LRU 资料:https://yq.aliyun.com/articles/70456
  • 通过 Hash 去连接,实现串行化
  • 可不后能 自动扩容连接数
  • 连接数不要 ,可不后能 自动关闭连接,释放资源
  • 等等

(关注微信公众号,领取 Java 精选干货学习资料)

猜你喜欢

泥瓦匠 5 年 Java 的成长感悟(下)

继续《泥瓦匠5年Java的成长感悟(上)》,大致包括下面几点:学技术的心态学技术的学法工作的心态工作的硬技能工作的软实力听点雷子的民谣,让我安静地感概感概。上次说写的,今天简单

2020-02-19

众泰人才网站CMS系统|众泰人才网站CMS系统 v8.04下载

---众泰人才网V8.04介绍---1)修正后台中管理去除了无意义的“最近访问日期”2)当时人简历管理去除了无意义的“简历激活”“撤回激活”完整性改为前台注册会员后即可自动激活

2020-02-19

苹果CEO库克向慈善组织捐赠近500万美元股票

北京时间8月22日上午消息,美国证券交易委员会的文件显示,iPhone6手机手机CEO蒂姆·库克(TimCook)本周向一家未具名的慈善组织捐赠23215股iPhone6手机手

2020-02-19

支持802.11n 华为AR1200

【IT168北京行情】AR1100系列企业路由器是华为面向中小企业推出的多合一路由器,提供包括有线和无线的Internet接入、专线接入,PBX、融合通信及安全等功能,AR11

2020-02-19

Apple Watch蜂窝版即将支持中国电信

苹果6手机手机苹果6手机手机苹果6手机手机在AppleWatchSeries3上结速英文提供蜂窝网络版本,不过中国内地地区对于AppleWatcheSIM卡服务的支持却似乎两个

2020-02-19