首页 > 解决方案 > 云原生环境中的连接池

问题描述

云原生环境中是否仍需要连接池?

连接池(例如开放式数据库连接)在过去非常流行。

我猜(不知道)在云原生环境中不再需要它们。

有一个容器/吊舱池。这种方式几乎不再需要连接池。

这是真的?

标签: cloudconnection-pooling

解决方案


与往常一样,衡量,不要猜测,但是,如果您关心性能,您仍然希望以某种方式进行连接池。

除了上述原因(TCP 3-way handhsake)之外,您还需要连接池,原因如下:

  1. 数据库可能需要为每个连接分叉或启动一个新进程,这可能是一项非常昂贵的操作
  2. 关闭连接后,数据库进程可能必须由操作系统清理到安全内存、文件描述符、套接字等。
  3. 数据库可能需要验证用户的登录凭据,在某些情况下可能是 LDAP 用户帐户,因此涉及另一个网络往返
  4. 如果您的连接不是纯 TCP 连接,但在最坏的情况下使用 SSL/TLS(无法恢复会话),您可能会产生完整 TLS 握手的开销,包括验证 RSA 签名和通过 CRL 检查证书的状态或互联网上的 OCSP

我们专业地使用它,并且:

  • 池化 httpclients(用于 REST/SOAP Web 服务)
  • 汇集到 RabbitMQ 的连接(RabbitMQ 监视器提供对它们所称的内容的洞察:流失统计信息,以便轻松查看建立新连接的频率)

您可能还想查看其他“云架构解决方案”,例如:Istio是服务网格的一种实现,它试图在微服务架构中将这种关注点与您的应用程序解耦。这些可以使用具有连接池的本地代理服务器,即所谓的“边车模式”。有关更完整的解释,请参阅:Red Hats 对 Service Mesh 的解释


推荐阅读