Golang 1.4 net/rpc server源码解析

2015-07-16 12:57:14 · 作者: · 浏览: 12

server.go


方法注册:


因为从client我们知道是复用的socket来实现并发调用rpc方法,我们先从方法注册来看源码部分:


请求调用:


方法已经被注册成功,接下来我们看看是如何客户端发送请求调用的:


资源重用:


上面把大致的rpc请求都说明了,server有一个技巧是重用对象,这里使用的是链表方式处理的:


最后,sending这把锁的目的是避免同一个套接字快速请求中避免返回包写入乱序,因此避免一个包完整写入完毕才允许下一个返回写入套接字。通过rpc包源码解析,可以看到标准库中的核心思想还是channel+mutex实现复用对象,以及各种方式的复用,避免GC压力,在我们以后写高性能服务端可以借鉴的地方。