假设应用程序向不同的服务发出大量请求,那么在 Go 应用程序中管理 http 客户端的最佳实践是什么?网上有几个选择:为整个应用程序使用一个客户端每个外部服务使用一个客户端每个请求使用一个客户端我想第二种解决方案是最有效的,因为它允许重用 TCP 连接,因为每个服务都有一个单独的连接池。有什么想法吗?特别是关于第一个解决方案 - 它可能会导致什么问题?或者有没有更好的解决方案?
1 回答

蝴蝶刀刀
TA贡献1801条经验 获得超8个赞
对此没有一般性的答案。这取决于你在做什么。将您的 http 客户端范围限定在他们的用例中。如果整个应用程序需要一个实例,请使用一个。如果您的应用程序的不同部分甚至每个请求都需要不同的请求,请执行此操作。
如果您需要不同的超时、不同的 cookie 罐、不同的代理配置、不同的 TLS 证书或任何其他不同的配置,您将需要不止一个。
如果您的整个应用程序需要相同的配置,那么使用单个客户端实例是合理的。
如果您在应用程序的不同部分(例如 cookie jar)之间共享状态,那么您必须在整个应用程序中使用相同的客户端* 。
*或者找到其他方式来同步共享状态,但使用共享客户端可能是最简单的。
- 1 回答
- 0 关注
- 136 浏览
添加回答
举报
0/150
提交
取消