在Go应用程序中管理http客户端的最佳实践是什么(假设该应用程序对不同服务提出了很多请求)?互联网上的选项很少:
我猜第二种解决方案是最有效的,因为它允许重用TCP连接,因为每个服务都有一个单独的连接池。有什么想法吗?特别是关于第一个解决方案-它可能会导致什么问题?还是有更好的解决方案?
答案 0 :(得分:1)
对此没有普遍的答案。这取决于您在做什么。使您的http客户端适用于他们的用例。如果整个应用程序需要一个实例,请使用一个。如果您需要在应用程序的不同部分甚至每个请求中使用不同的应用程序,则可以这样做。
如果您需要不同的超时时间,不同的Cookie罐,不同的代理配置,不同的TLS证书或任何其他不同的配置,则将需要多个。
如果整个应用程序需要相同的配置,则使用单个客户端实例是合理的。
如果您在应用程序的不同部分(例如Cookie罐)之间具有 shared 状态,那么您必须使用相同的客户端 * 整个应用程序中。