【问题标题】:Golang goroutines sharing RPC connectionGolang goroutines 共享 RPC 连接
【发布时间】:2014-07-31 02:51:13
【问题描述】:

我有一个 Golang 服务器,它使用专用的 goroutine 服务入站请求。这些 goroutine 将使用 rpc/gob 访问另一个后端 go 服务器。如果重用连接以使 Gob 更好地工作(请求共享连接可以重用元数据而不重新发送,也可以节省 TCP 启动的时间),我正在考虑实现连接池类似的机制(如 mysql 客户端池),但在此之前我错过了什么重要的事情吗?

任何 Go 特定的方式来处理这种共享 RPC 客户端? 或者有什么项目可以处理这种情况?

【问题讨论】:

    标签: go rpc gob


    【解决方案1】:

    参见https://github.com/valyala/gorpc - 这个库在 RPC 优化方面更进一步 - 它使用独立的读写循环、消息批处理和压缩。与 net/rpc 相比,它的 API 也简单得多。

    在实际生产项目中从基于 http 的 rpc 切换到 gorpc 可以将 RPC 网络带宽从 300Mbit/s 减少到 24Mbit/s。

    【讨论】:

    【解决方案2】:

    经过一番调查,我发现内置客户端库中已经完成了池机制,基于 http://golang.org/src/pkg/net/rpc/client.go 的代码,但如果有人可以与我分享更多见解,我仍然很感兴趣。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2020-12-19
      • 1970-01-01
      • 2013-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多