首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重用vs在httputil.ReverseProxy中创建新的httputil.ReverseProxy实例

重用vs在httputil.ReverseProxy中创建新的httputil.ReverseProxy实例
EN

Stack Overflow用户
提问于 2022-11-12 23:26:10
回答 1查看 39关注 0票数 0

我已经实现了http反向代理中间件,它与Gin框架应用程序一起使用:

代码语言:javascript
复制
app := gin.New()
app.Use(proxy.ReverseProxy("127.0.0.1:8008"))  // HERE I'm attaching ReverseProxy middleware

ReverseProxy方法中,我正在创建httputil.ReverseProxy实例,它从已经初始化的init()变量中获取transport

代码语言:javascript
复制
var transport *http.Transport

func init() {  // HERE creating instance of Transport
   transport = &http.Transport{
     // some params
   }
}

func ReverseProxy(targetServer string) gin.HandlerFunc {
   return func(c *gin.Context) {

      proxy := &httputil.ReverseProxy{
         Transport: transport,             // HERE reusing instance of Transport
         // some params
      }
      proxy.ServeHTTP(c.Writer, c.Request)
   }
}

所以问题是:

有一个http.Transport 实例并在 httputil.ReverseProxy 中重用它是正确的吗?还是我必须在每个请求上创建新的传输?

代码语言:javascript
复制
func ReverseProxy(targetServer string) gin.HandlerFunc {
   return func(c *gin.Context) {

      // HERE creating instance of Transport
      transport = &http.Transport{
        // some params
      }

      proxy := &httputil.ReverseProxy{
         Transport: transport,            // HERE using NEW instance of Transport
         // some params
      }
      proxy.ServeHTTP(c.Writer, c.Request)
   }
}

哪条路最好?

我现在重用传输,因为我的性能得到了提升,似乎它使用了已经创建的tcp连接。但是在负载高的情况下,我不知道它将如何工作,它是否会将无关的响应返回给无关的客户端?

与来源的链接

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-12 23:59:19

请回答你的问题

拥有一个http.Transport实例并在httputil.ReverseProxy中重用它是正确的,还是我必须在每个请求上创建新的传输?

创建一个代理并重用它可能是正确的方法。

您可以根据运输文档找到更多详细信息。

传输是RoundTripper的一种实现,它支持HTTP、HTTPS和HTTPS (用于HTTP或带有CONNECT的HTTPS)。默认情况下,传输缓存连接以供将来重用.这可能在访问许多主机时留下许多打开的连接。可以使用传输的CloseIdleConnections方法以及MaxIdleConnsPerHost和DisableKeepAlives字段来管理此行为。传输应该被重用,而不是根据需要创建。运输是安全的,以同时使用多个峡谷。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74417340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档