引言 做后端开发免不了要和一些 存储服务器 , 消息服务器 等等 打交道。 起因 (传统模式, 读取数据库) 大家都知道和这些使用 tcp连接 的服务传递数据的都必须要打开 一个 连接-connection 例如我们打开一个数据库并执行一段 sql, 通常都是 connection = open "mysql://127.0.0.1:3306/db" (打开数据库,并取得持有连接的句柄) data = connection.exec "select * form table1" (执行 sql 并获取数据) connection.close() 显式的关闭连接 这个方式看上去似乎没有什么不对的。 但是对于并发量稍大一些的站点来说。一个单元批次的操作就需要打开并关闭一次连接。。。 这 显然是不能接受的 。 为这样做不能接受呢? 建立一个tcp连接需要三次握手。而且还需要为对象分配系统资源和内存空间。所以创建一个tcp连接可以说是昂贵的。 回到刚才的话题。这样平凡的开启关闭连接不仅对增加客户端io的压力,最重要的是大大增加了 tcp 服务器的压力(mysql, redis)。 那我们再尝试另外一种方式,那就是不关闭连接,一直使用这个连接呢。答案是: 可以。这种方式 被叫做 长连接 。 那这样的话,也有一个问题。因为一段时间内一个连接只能做一件事情。那么在并发的情况下这显然会阻塞整个系统。 那我们能不能尝试 创建多个连接,并在需要的时候,然后当调用的时候,将没有被使用的连接拿出来使用,当使用完毕之后,将连接放回去,以供其他调用者使用 的方式的呢? 连接大管家(连接池) 答案是有的:那就是我们要说的 连接池 。当然一个健全的连接池并不仅仅完成以上我所说的功能。 连接预热 (启动时自动打开n个连接以供使用) 使用 例如 轮转法 均匀分发 连接请求 当池中的连接即将耗尽得时候动态产生新的连接 当池中的连接一段时间没有被调用的时候,自动释放连接 自动丢弃 已经坏掉的 连接 系统关闭的时自动释放所有连接 ........ 以上都属于连接池的功能。 连接池 可谓是我们 管理连接的管家 Node.js 中的 连接池 说到这里好像还是没有说到要点。在Node中我们应该怎么呢? 我们可以使用 node-pool 这个模块 GitHub
![]() 更多相关的配置 我就不一一展开讨论了。大家可以去 github 上查看项目的 README.md |
小黑屋|在路上
( 蜀ICP备15035742号-1 )
GMT+8, 2025-8-19 02:13
Copyright 2015-2025 djqfx