每个应用程序需要多少个http客户端



假设Go应用程序向不同的服务发出大量请求,那么在Go应用程序中管理http客户端的最佳实践是什么?互联网上有几个选项:

  • 对整个应用程序使用一个客户端
  • 每个外部服务使用一个客户端
  • 每个请求使用一个客户端

我想第二个解决方案是最有效的,因为它允许重用TCP连接,因为每个服务都有一个单独的连接池。有什么想法吗?特别是关于第一个解决方案——它可能会导致什么问题?或者有更好的解决方案吗?

对此没有一般的答案。这取决于你在做什么。根据http客户端的用例确定其范围。如果整个应用程序需要一个实例,请使用一个实例。如果您的应用程序的不同部分,甚至每个请求都需要不同的应用程序,请这样做。

如果您需要不同的超时、不同的cookie罐、不同的代理配置、不同的TLS证书,或者任何其他不同的配置,您将需要多个。

如果您的整个应用程序需要相同的配置,那么使用单个客户端实例是合理的。

如果应用程序的不同部分(如cookie罐(之间有共享状态,则必须在整个应用程序中使用相同的客户端*


*或者找到其他方法来同步共享状态,但使用共享客户端可能是最简单的

最新更新