云原生环境中还需要连接池吗?
连接池(例如打开的数据库连接)在过去非常流行。
我想(不知道)在云原生环境中不再需要它们了。
有一个容器/pod 池。这样就不再需要连接池了。
这是真的?
一如既往,衡量,不要猜测,但是,是的,如果您关心性能,您仍然希望以某种方式使用连接池。
除了上述原因(TCP 3 次握手)之外,您还需要连接池,原因如下:
- 数据库可能需要为每个连接分叉或启动一个新进程,这可能是一个非常昂贵的操作
- 关闭连接后,操作系统可能必须清理数据库进程以确保内存、文件描述符、套接字等的安全。
- 数据库可能需要验证用户的登录凭据,在某些情况下可能是 LDAP 用户帐户,因此涉及另一个网络往返
- 如果您的连接不是普通 TCP 连接,但在最坏的情况下使用 SSL/TLS(不可能恢复会话),您可能会产生完整 TLS 握手的开销,包括验证 RSA 签名和通过 CRL 检查证书的状态或通过互联网的 OCSP
我们专业地使用它,并且:
- 池化 httpclient(用于 REST/SOAP Web 服务)
- 汇集与 RabbitMQ 的连接(RabbitMQ 监视器提供对它们所谓的“流失统计”的深入了解,以轻松查看建立新连接的频率)
您可能还想查看其他“云架构解决方案”,例如:服务网格Istio https://istio.io/docs/concepts/traffic-management/是一种尝试将此类问题与微服务架构中的应用程序解耦的实现。这些可以使用本地代理服务器以及所谓的“侧车模式”中的连接池。更完整的解释请参见:红帽对服务网格的解释 https://www.redhat.com/en/topics/microservices/what-is-a-service-mesh
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)