首页 > 解决方案 > 如何管理 HTTPS 连接池?

问题描述

考虑一个访问远程 HTTPS 服务器、在服务器上的 URL 发送 JSON 格式请求的 POST 并接收 JSON 格式答案的应用程序。服务器不支持HTTP/2多路复用。

有许多请求,工作负载变化很大(从空闲到数百 TPS)。JSON 消息的大小为 1 kbyte。客户端和服务器通过证书+私钥进行身份验证。这些请求可以被认为是独立的(特别是,对于使用相同客户端证书打开的所有 HTTPS 通道,服务器将请求视为相同)。

HTTP/1.1 不允许*多个并发 POST 请求通过同一个连接。因此吞吐量不能超过N/(Tr+Ts) TPS,其中N是打开的 HTTPS/TLS 通道使用的数量,Tr是网络往返延迟,Ts是服务器端的处理时间(在由于数据库访问和其他因素,在低负载下大约 30 毫秒)。打开一个 HTTPS 连接至少要花费4 Tr,并且双方都有相当大的 CPU 时间。看起来需要一些东西来管理客户端的 HTTPS 连接池。

这个问题一般是怎么处理的?

什么是常见的库或后台守护程序/服务,根据需要自动打开新的 HTTPS 连接,尽可能重用它们?

如果在服务器变得无响应时检测到它会很好,并处理回退到不同 URL 的备份服务器,当它再次启动时返回到主服务器。

注意:下一步将是负载平衡,但是我的负载平衡层必须在一定程度上处理请求之间的关联,因为它们不是完全独立的(尽管服务器可靠地检测到将依赖请求发送到错误的服务器)。


[*] 由于RFC 2616的解释方式,有人告诉我.

标签: networkinghttpsconcurrency

解决方案


推荐阅读