开发者社区> 问答> 正文

Druid底层维护的连接池端口号问题

每一个连接都会对应一个tcp端口吗?比如连接1对应tcp 2222端口,连接2对应tcp 2223端口。2222和2223只是举例的端口号

原提问者GitHub用户Liubey

展开
收起
山海行 2023-07-05 21:55:41 136 0
4 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    在TCP/IP协议中,每个网络连接都必须有一个唯一的标识符,这个标识符通常由IP地址和端口号组成。因此,在一个计算机上,如果有多个TCP连接,每个连接都需要使用不同的端口号来标识。

    在数据库连接中,每个连接也需要使用一个端口号来标识。通常情况下,一个数据库服务器会监听一个默认的端口号(例如MySQL数据库的默认端口号是3306,Oracle数据库的默认端口号是1521),当客户端连接到数据库服务器时,会使用一个空闲的端口号来建立连接,这个端口号通常是动态分配的,不是固定的。

    因此,每个数据库连接都会对应一个TCP端口,但不是固定的端口号,而是动态分配的。在网络通信过程中,TCP协议会自动分配一个空闲端口号,用于建立连接。当连接关闭时,这个端口号就会被释放,可以被其他连接再次使用。

    2023-07-30 09:38:37
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    在Druid连接池中,每个连接并不会对应一个独立的TCP端口。Druid连接池使用一组预先创建的连接来处理数据库请求。这些连接被保存在连接池中,并且由应用程序动态地分配给需要连接的线程。

    当应用程序需要与数据库建立连接时,它会从连接池中获取一个可用的连接,并使用该连接执行数据库操作。当操作完成后,连接将被释放回连接池,以供其他线程使用。

    连接池的实现会维护一组TCP连接,并在需要时将这些连接分配给应用程序线程。每个TCP连接都有自己的本地端口和远程数据库的IP地址和端口。但是,连接池会复用这些TCP连接,以最大程度地减少连接的创建和销毁开销。

    因此,对于Druid连接池而言,连接的数量和线程数通常是相关的,而不是与独立的TCP端口数对应。

    希望这个解释能帮助您理解Druid连接池的工作方式。如果您还有其他问题,请随时向我提问。

    2023-07-11 16:31:58
    赞同 展开评论 打赏
  • 连接池本身不管理端口,这个都有driver调用socket自行实现

    原回答者GitHub用户wenshao

    2023-07-06 12:29:40
    赞同 展开评论 打赏
  • 每个连接不会直接对应一个TCP端口。连接池是一组预先创建的连接对象,这些连接对象可以被应用程序重复使用来执行数据库操作。连接池会维护这些连接对象,并在需要时将它们分配给应用程序。

    在连接池中,每个连接对象都会与数据库服务器建立一个TCP连接,并使用服务器上的一个固定端口进行通信。这个固定的端口一般是由数据库服务器配置确定的,而不是由连接池或应用程序决定的。

    连接池会维护这些TCP连接的复用和管理,使得应用程序可以通过获取一个可用的连接对象来与数据库进行通信,而无需每次都重新建立TCP连接。这样可以提高性能和效率。

    因此,从应用程序的角度来看,并不需要关心连接对象与TCP端口之间的具体映射关系。连接池会管理这些细节,而应用程序只需要通过连接对象来执行数据库操作即可。

    2023-07-06 11:00:40
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载