我们假设数据库连接池有三个建立好的链接,分别是socket1,socket2,socket3。我们知道socket是由四元祖唯一确认(client-ip, client-port, server-ip, server-port)。而这里三个socket 的client-ip, server-ip, server-port 是相同的。 变化的是 client-port,也就是说会有三个不同的port。
当应用数据数据库读写操作的时候,会去向数据连接池申请一个可用的链接,我们假设数据库连接池给应用的是socket3。
之后应用就可以拿这个建立好的链接直接和数据库通信了,之后的通信过程,直到销毁链接,不会和数据库连接池发生关系。
因此,你的误解应该在于我讲的最后一点。 数据库连接池虽然和数据库建立了多个明确的链接,但是它可以把链接转给别人。 而 Node 中的 cluster 模块的原理就是如此。
https://nodejs.org/api/cluster.htmlnodejs.org
希望我的回答可以帮助到你。