我有一台Golang服务器,它使用专用的goroutine来提供入站请求。那些goroutine将使用rpc / gob访问另一个后端go服务器。如果重用连接以使Gob更好地工作(请求共享连接可以重用元数据而不重新发送,也节省了TCP启动的时间),我正在考虑实现连接池相似机制(如mysql客户端池),但在此之前我错过了什么重要的事吗?
任何Go特定的方式来处理这样的共享RPC客户端? 或者为解决这种情况而建立的任何项目?
答案 0 :(得分:1)
请参阅https://github.com/valyala/gorpc - 此库进一步使用RPC优化 - 它使用独立的读写循环,消息批处理和压缩。与net / rpc相比,它还具有更简单的API。
在实际生产项目中从基于http的rpc切换到gorpc允许将RPC网络带宽从300Mbit / s降低到24Mbit / s。
答案 1 :(得分:0)
经过一些调查后,我发现已经在内置客户端库中根据http://golang.org/src/pkg/net/rpc/client.go的代码完成了一个池化机制,但是如果有人能与我分享更多见解,我仍然感兴趣。