在并发应用程序中使用HTTP客户端的最佳方法

在并发应用程序中使用HTTP客户端的最佳方法,http,go,concurrency,goroutine,Http,Go,Concurrency,Goroutine,首先,我将描述我的案例。 我必须从我的应用程序中对多个API执行HTTPS请求,它们应该同时运行。 我想知道我是应该为每个goroutine使用单独的HTTP客户端,还是可以在所有goroutine中共享一个客户端。当然,我很喜欢HTTP客户端提供的连接重用/池,但我担心它是线程(也称为goroutine)安全的,客户端是否会并发运行请求,或者它们实际上是按顺序排列的?根据文档(),HTTP客户端是线程安全的: 多个goroutine并发使用客户端是安全的 有点相关:如果goroutine太多,

首先,我将描述我的案例。 我必须从我的应用程序中对多个API执行HTTPS请求,它们应该同时运行。
我想知道我是应该为每个goroutine使用单独的HTTP客户端,还是可以在所有goroutine中共享一个客户端。当然,我很喜欢HTTP客户端提供的连接重用/池,但我担心它是线程(也称为goroutine)安全的,客户端是否会并发运行请求,或者它们实际上是按顺序排列的?

根据文档(),HTTP客户端是线程安全的:

多个goroutine并发使用客户端是安全的


有点相关:如果goroutine太多,单个客户端会成为瓶颈吗?是的,同样的问题,如果有1000个goroutine使用一个全局客户端变量呢?@user4867444请您向我们解释一下:为什么它不会成为瓶颈?因为它没有瓶颈locks@user4867444-首先,这个问题是完全合理的。第二,这里也是提问的地方,人们在这里帮助他人理解这些东西是如何工作的。第三,您可能不理解这是如何工作的,因为http.Client中有锁。
RoundTripper
是一个接口,默认情况下使用
http.Transport
。这有
至少3个互斥体
s而不进入更多子字段。接下来,CookieJAR-
http.jar
,再次。。。有一个互斥锁。实际上存在多个锁,这个问题不仅有效,而且完全可能在这里出现问题。