2

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

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

4

2 回答 2

1

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

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

于 2015-03-01T13:00:53.723 回答
0

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

于 2014-07-31T03:18:39.003 回答